diff --git a/.gitattributes b/.gitattributes index c7d9f3332a950355d5a77d85000f05e6f45435ea..d38d7be0506e2d1a757af17a17ba239256c2233a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -32,3 +32,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +gradio/templates/cdn/assets/index.3c2bfbb6.js.map filter=lfs diff=lfs merge=lfs -text +gradio/templates/frontend/assets/index.756cf7e0.js.map filter=lfs diff=lfs merge=lfs -text diff --git a/gradio/.dockerignore b/gradio/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..450a3af270f5d285eb3a59a03593d06078b145eb --- /dev/null +++ b/gradio/.dockerignore @@ -0,0 +1,2 @@ +templates/frontend +templates/frontend/**/* diff --git a/gradio/__init__.py b/gradio/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..da895876cb9e224f08d6a788f4c348af514f4527 --- /dev/null +++ b/gradio/__init__.py @@ -0,0 +1,93 @@ +import pkgutil + +import gradio.components as components +import gradio.inputs as inputs +import gradio.outputs as outputs +import gradio.processing_utils +import gradio.templates +import gradio.themes as themes +from gradio.blocks import Blocks +from gradio.components import ( + HTML, + JSON, + Audio, + BarPlot, + Button, + Carousel, + Chatbot, + Checkbox, + Checkboxgroup, + CheckboxGroup, + Code, + ColorPicker, + DataFrame, + Dataframe, + Dataset, + Dropdown, + File, + Gallery, + Highlight, + Highlightedtext, + HighlightedText, + Image, + Interpretation, + Json, + Label, + LinePlot, + Markdown, + Model3D, + Number, + Plot, + Radio, + ScatterPlot, + Slider, + State, + StatusTracker, + Text, + Textbox, + TimeSeries, + Timeseries, + UploadButton, + Variable, + Video, + component, +) +from gradio.events import SelectData +from gradio.exceptions import Error +from gradio.flagging import ( + CSVLogger, + FlaggingCallback, + HuggingFaceDatasetJSONSaver, + HuggingFaceDatasetSaver, + SimpleCSVLogger, +) +from gradio.helpers import EventData, Progress +from gradio.helpers import create_examples as Examples +from gradio.helpers import make_waveform, skip, update +from gradio.interface import Interface, TabbedInterface, close_all +from gradio.ipython_ext import load_ipython_extension +from gradio.layouts import Accordion, Box, Column, Group, Row, Tab, TabItem, Tabs +from gradio.mix import Parallel, Series +from gradio.routes import Request, mount_gradio_app +from gradio.templates import ( + Files, + ImageMask, + ImagePaint, + List, + Matrix, + Mic, + Microphone, + Numpy, + Paint, + Pil, + PlayableVideo, + Sketchpad, + TextArea, + Webcam, +) +from gradio.themes import Base as Theme + +current_pkg_version = ( + (pkgutil.get_data(__name__, "version.txt") or b"").decode("ascii").strip() +) +__version__ = current_pkg_version diff --git a/gradio/__pycache__/__init__.cpython-38.pyc b/gradio/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36c63ed06c63350d868142f28bca800b0629c72a Binary files /dev/null and b/gradio/__pycache__/__init__.cpython-38.pyc differ diff --git a/gradio/__pycache__/blocks.cpython-38.pyc b/gradio/__pycache__/blocks.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..163732506b02a6d1dd977f518060cecbe3084020 Binary files /dev/null and b/gradio/__pycache__/blocks.cpython-38.pyc differ diff --git a/gradio/__pycache__/components.cpython-38.pyc b/gradio/__pycache__/components.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c25314efacc9dfe176515f66769b7465a9ae4dd Binary files /dev/null and b/gradio/__pycache__/components.cpython-38.pyc differ diff --git a/gradio/__pycache__/context.cpython-38.pyc b/gradio/__pycache__/context.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..837eb3c40c0e37f167bc114a75e613eaabc31f15 Binary files /dev/null and b/gradio/__pycache__/context.cpython-38.pyc differ diff --git a/gradio/__pycache__/data_classes.cpython-38.pyc b/gradio/__pycache__/data_classes.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..97e07d13638589831241cdc6bab7fa7c0f00b9af Binary files /dev/null and b/gradio/__pycache__/data_classes.cpython-38.pyc differ diff --git a/gradio/__pycache__/deprecation.cpython-38.pyc b/gradio/__pycache__/deprecation.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c66f312e9ebf8988c0232cc9815af2fa4377c7ea Binary files /dev/null and b/gradio/__pycache__/deprecation.cpython-38.pyc differ diff --git a/gradio/__pycache__/documentation.cpython-38.pyc b/gradio/__pycache__/documentation.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4722cc5ef8881eb8fba01ea1aa293a061c7c1a4 Binary files /dev/null and b/gradio/__pycache__/documentation.cpython-38.pyc differ diff --git a/gradio/__pycache__/events.cpython-38.pyc b/gradio/__pycache__/events.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f173a327e48c19aadbeaaf0516c3fe257517f96 Binary files /dev/null and b/gradio/__pycache__/events.cpython-38.pyc differ diff --git a/gradio/__pycache__/exceptions.cpython-38.pyc b/gradio/__pycache__/exceptions.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ca80bba8c6faa998572109e69f90c2ef38d18e4 Binary files /dev/null and b/gradio/__pycache__/exceptions.cpython-38.pyc differ diff --git a/gradio/__pycache__/external.cpython-38.pyc b/gradio/__pycache__/external.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae20730c1ca1a9169285cfbb015f19c212e4e506 Binary files /dev/null and b/gradio/__pycache__/external.cpython-38.pyc differ diff --git a/gradio/__pycache__/external_utils.cpython-38.pyc b/gradio/__pycache__/external_utils.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5989c56953ece25d45bde50fdfceb242e85424f9 Binary files /dev/null and b/gradio/__pycache__/external_utils.cpython-38.pyc differ diff --git a/gradio/__pycache__/flagging.cpython-38.pyc b/gradio/__pycache__/flagging.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ed4bff0d958687f0e8303e74ac6a46aac1732d1 Binary files /dev/null and b/gradio/__pycache__/flagging.cpython-38.pyc differ diff --git a/gradio/__pycache__/helpers.cpython-38.pyc b/gradio/__pycache__/helpers.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4346d821d46cf15e2db2f87d9fedce7ccc854d7e Binary files /dev/null and b/gradio/__pycache__/helpers.cpython-38.pyc differ diff --git a/gradio/__pycache__/inputs.cpython-38.pyc b/gradio/__pycache__/inputs.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee1b10d7648eda9400cf604285e5ac31ec7499e1 Binary files /dev/null and b/gradio/__pycache__/inputs.cpython-38.pyc differ diff --git a/gradio/__pycache__/interface.cpython-38.pyc b/gradio/__pycache__/interface.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6fbd275b4366f82348045f6e2143c3716c0aaaa7 Binary files /dev/null and b/gradio/__pycache__/interface.cpython-38.pyc differ diff --git a/gradio/__pycache__/interpretation.cpython-38.pyc b/gradio/__pycache__/interpretation.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09939a435874bef40baa6143830430dd5cf35a00 Binary files /dev/null and b/gradio/__pycache__/interpretation.cpython-38.pyc differ diff --git a/gradio/__pycache__/ipython_ext.cpython-38.pyc b/gradio/__pycache__/ipython_ext.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d02d3742a4dda56a64c3aa2717dded8850fbe7d Binary files /dev/null and b/gradio/__pycache__/ipython_ext.cpython-38.pyc differ diff --git a/gradio/__pycache__/layouts.cpython-38.pyc b/gradio/__pycache__/layouts.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc77131d977a3f79b3e4b37c7ecb63de311cea50 Binary files /dev/null and b/gradio/__pycache__/layouts.cpython-38.pyc differ diff --git a/gradio/__pycache__/media_data.cpython-38.pyc b/gradio/__pycache__/media_data.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..006b0b3c7f0a5a192c65884bff26d6f3ff18b408 Binary files /dev/null and b/gradio/__pycache__/media_data.cpython-38.pyc differ diff --git a/gradio/__pycache__/mix.cpython-38.pyc b/gradio/__pycache__/mix.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9b09933c3b61c7ee578aa8a267e7cc976dab78cb Binary files /dev/null and b/gradio/__pycache__/mix.cpython-38.pyc differ diff --git a/gradio/__pycache__/networking.cpython-38.pyc b/gradio/__pycache__/networking.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44493433820d0816addbe0305686523afc0c0195 Binary files /dev/null and b/gradio/__pycache__/networking.cpython-38.pyc differ diff --git a/gradio/__pycache__/outputs.cpython-38.pyc b/gradio/__pycache__/outputs.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed68ebd88e6d9f390a8a4bea326ba012bfc04d9c Binary files /dev/null and b/gradio/__pycache__/outputs.cpython-38.pyc differ diff --git a/gradio/__pycache__/pipelines.cpython-38.pyc b/gradio/__pycache__/pipelines.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec3a297b8117680fd936b2a980bacb0f74d1d456 Binary files /dev/null and b/gradio/__pycache__/pipelines.cpython-38.pyc differ diff --git a/gradio/__pycache__/processing_utils.cpython-38.pyc b/gradio/__pycache__/processing_utils.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72e232b1d3301588a887f7aae54a35f3373820dc Binary files /dev/null and b/gradio/__pycache__/processing_utils.cpython-38.pyc differ diff --git a/gradio/__pycache__/queueing.cpython-38.pyc b/gradio/__pycache__/queueing.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b734636765c4616c0132f1bc49922908728e42e1 Binary files /dev/null and b/gradio/__pycache__/queueing.cpython-38.pyc differ diff --git a/gradio/__pycache__/ranged_response.cpython-38.pyc b/gradio/__pycache__/ranged_response.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84f22cc16d33d6c2a861d560ca29152e848083c0 Binary files /dev/null and b/gradio/__pycache__/ranged_response.cpython-38.pyc differ diff --git a/gradio/__pycache__/reload.cpython-38.pyc b/gradio/__pycache__/reload.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf341ce901ef21962d10e674d5d55e855d1ef218 Binary files /dev/null and b/gradio/__pycache__/reload.cpython-38.pyc differ diff --git a/gradio/__pycache__/routes.cpython-38.pyc b/gradio/__pycache__/routes.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23196514cd7b1a80f683d8fefe4add7c52c2f14c Binary files /dev/null and b/gradio/__pycache__/routes.cpython-38.pyc differ diff --git a/gradio/__pycache__/serializing.cpython-38.pyc b/gradio/__pycache__/serializing.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38b15d897772eafe759488cb029059986ee33994 Binary files /dev/null and b/gradio/__pycache__/serializing.cpython-38.pyc differ diff --git a/gradio/__pycache__/strings.cpython-38.pyc b/gradio/__pycache__/strings.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a22c94a4b4d0ffba1000ddd9b2482df989eef2f Binary files /dev/null and b/gradio/__pycache__/strings.cpython-38.pyc differ diff --git a/gradio/__pycache__/templates.cpython-38.pyc b/gradio/__pycache__/templates.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3af51a70946f6f2cf9d3b2eb64a859f74651bdc Binary files /dev/null and b/gradio/__pycache__/templates.cpython-38.pyc differ diff --git a/gradio/__pycache__/tunneling.cpython-38.pyc b/gradio/__pycache__/tunneling.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5fb5d3edf6b6e1bd41399d4b2f21765d0328cb41 Binary files /dev/null and b/gradio/__pycache__/tunneling.cpython-38.pyc differ diff --git a/gradio/__pycache__/utils.cpython-38.pyc b/gradio/__pycache__/utils.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe3af4581b19b74ef1c3f2d30a4341545f12483b Binary files /dev/null and b/gradio/__pycache__/utils.cpython-38.pyc differ diff --git a/gradio/blocks.py b/gradio/blocks.py new file mode 100644 index 0000000000000000000000000000000000000000..ad009cf57f01d54c84f401b7469bccad0bf2daba --- /dev/null +++ b/gradio/blocks.py @@ -0,0 +1,1779 @@ +from __future__ import annotations + +import copy +import inspect +import json +import os +import random +import secrets +import sys +import time +import warnings +import webbrowser +from abc import abstractmethod +from types import ModuleType +from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List, Set, Tuple, Type + +import anyio +import requests +from anyio import CapacityLimiter +from typing_extensions import Literal + +from gradio import components, external, networking, queueing, routes, strings, utils +from gradio.context import Context +from gradio.deprecation import check_deprecated_parameters +from gradio.documentation import document, set_documentation_group +from gradio.exceptions import DuplicateBlockError, InvalidApiName +from gradio.helpers import EventData, create_tracker, skip, special_args +from gradio.themes import Default as DefaultTheme +from gradio.themes import ThemeClass as Theme +from gradio.tunneling import CURRENT_TUNNELS +from gradio.utils import ( + GRADIO_VERSION, + TupleNoPrint, + check_function_inputs_match, + component_or_layout_class, + delete_none, + get_cancel_function, + get_continuous_fn, +) + +set_documentation_group("blocks") + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + import comet_ml + from fastapi.applications import FastAPI + + from gradio.components import Component + + +class Block: + def __init__( + self, + *, + render: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + visible: bool = True, + root_url: str | None = None, # URL that is prepended to all file paths + _skip_init_processing: bool = False, # Used for loading from Spaces + **kwargs, + ): + self._id = Context.id + Context.id += 1 + self.visible = visible + self.elem_id = elem_id + self.elem_classes = ( + [elem_classes] if isinstance(elem_classes, str) else elem_classes + ) + self.root_url = root_url + self.share_token = secrets.token_urlsafe(32) + self._skip_init_processing = _skip_init_processing + self._style = {} + self.parent: BlockContext | None = None + self.root = "" + + if render: + self.render() + check_deprecated_parameters(self.__class__.__name__, **kwargs) + + def render(self): + """ + Adds self into appropriate BlockContext + """ + if Context.root_block is not None and self._id in Context.root_block.blocks: + raise DuplicateBlockError( + f"A block with id: {self._id} has already been rendered in the current Blocks." + ) + if Context.block is not None: + Context.block.add(self) + if Context.root_block is not None: + Context.root_block.blocks[self._id] = self + if isinstance(self, components.TempFileManager): + Context.root_block.temp_file_sets.append(self.temp_files) + return self + + def unrender(self): + """ + Removes self from BlockContext if it has been rendered (otherwise does nothing). + Removes self from the layout and collection of blocks, but does not delete any event triggers. + """ + if Context.block is not None: + try: + Context.block.children.remove(self) + except ValueError: + pass + if Context.root_block is not None: + try: + del Context.root_block.blocks[self._id] + except KeyError: + pass + return self + + def get_block_name(self) -> str: + """ + Gets block's class name. + + If it is template component it gets the parent's class name. + + @return: class name + """ + return ( + self.__class__.__base__.__name__.lower() + if hasattr(self, "is_template") + else self.__class__.__name__.lower() + ) + + def get_expected_parent(self) -> Type[BlockContext] | None: + return None + + def set_event_trigger( + self, + event_name: str, + fn: Callable | None, + inputs: Component | List[Component] | Set[Component] | None, + outputs: Component | List[Component] | None, + preprocess: bool = True, + postprocess: bool = True, + scroll_to_output: bool = False, + show_progress: bool = True, + api_name: str | None = None, + js: str | None = None, + no_target: bool = False, + queue: bool | None = None, + batch: bool = False, + max_batch_size: int = 4, + cancels: List[int] | None = None, + every: float | None = None, + collects_event_data: bool | None = None, + trigger_after: int | None = None, + trigger_only_on_success: bool = False, + ) -> Tuple[Dict[str, Any], int]: + """ + Adds an event to the component's dependencies. + Parameters: + event_name: event name + fn: Callable function + inputs: input list + outputs: output list + preprocess: whether to run the preprocess methods of components + postprocess: whether to run the postprocess methods of components + scroll_to_output: whether to scroll to output of dependency on trigger + show_progress: whether to show progress animation while running. + api_name: Defining this parameter exposes the endpoint in the api docs + js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components + no_target: if True, sets "targets" to [], used for Blocks "load" event + batch: whether this function takes in a batch of inputs + max_batch_size: the maximum batch size to send to the function + cancels: a list of other events to cancel when this event is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. + every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds. Queue must be enabled. + collects_event_data: whether to collect event data for this event + trigger_after: if set, this event will be triggered after 'trigger_after' function index + trigger_only_on_success: if True, this event will only be triggered if the previous event was successful (only applies if `trigger_after` is set) + Returns: dependency information, dependency index + """ + # Support for singular parameter + if isinstance(inputs, set): + inputs_as_dict = True + inputs = sorted(inputs, key=lambda x: x._id) + else: + inputs_as_dict = False + if inputs is None: + inputs = [] + elif not isinstance(inputs, list): + inputs = [inputs] + + if isinstance(outputs, set): + outputs = sorted(outputs, key=lambda x: x._id) + else: + if outputs is None: + outputs = [] + elif not isinstance(outputs, list): + outputs = [outputs] + + if fn is not None and not cancels: + check_function_inputs_match(fn, inputs, inputs_as_dict) + + if Context.root_block is None: + raise AttributeError( + f"{event_name}() and other events can only be called within a Blocks context." + ) + if every is not None and every <= 0: + raise ValueError("Parameter every must be positive or None") + if every and batch: + raise ValueError( + f"Cannot run {event_name} event in a batch and every {every} seconds. " + "Either batch is True or every is non-zero but not both." + ) + + if every and fn: + fn = get_continuous_fn(fn, every) + elif every: + raise ValueError("Cannot set a value for `every` without a `fn`.") + + _, progress_index, event_data_index = ( + special_args(fn) if fn else (None, None, None) + ) + Context.root_block.fns.append( + BlockFunction( + fn, + inputs, + outputs, + preprocess, + postprocess, + inputs_as_dict, + progress_index is not None, + ) + ) + if api_name is not None: + api_name_ = utils.append_unique_suffix( + api_name, [dep["api_name"] for dep in Context.root_block.dependencies] + ) + if not (api_name == api_name_): + warnings.warn( + "api_name {} already exists, using {}".format(api_name, api_name_) + ) + api_name = api_name_ + + if collects_event_data is None: + collects_event_data = event_data_index is not None + + dependency = { + "targets": [self._id] if not no_target else [], + "trigger": event_name, + "inputs": [block._id for block in inputs], + "outputs": [block._id for block in outputs], + "backend_fn": fn is not None, + "js": js, + "queue": False if fn is None else queue, + "api_name": api_name, + "scroll_to_output": scroll_to_output, + "show_progress": show_progress, + "every": every, + "batch": batch, + "max_batch_size": max_batch_size, + "cancels": cancels or [], + "types": { + "continuous": bool(every), + "generator": inspect.isgeneratorfunction(fn) or bool(every), + }, + "collects_event_data": collects_event_data, + "trigger_after": trigger_after, + "trigger_only_on_success": trigger_only_on_success, + } + Context.root_block.dependencies.append(dependency) + return dependency, len(Context.root_block.dependencies) - 1 + + def get_config(self): + return { + "visible": self.visible, + "elem_id": self.elem_id, + "elem_classes": self.elem_classes, + "style": self._style, + "root_url": self.root_url, + } + + @staticmethod + @abstractmethod + def update(**kwargs) -> Dict: + return {} + + @classmethod + def get_specific_update(cls, generic_update: Dict[str, Any]) -> Dict: + generic_update = generic_update.copy() + del generic_update["__type__"] + specific_update = cls.update(**generic_update) + return specific_update + + +class BlockContext(Block): + def __init__( + self, + visible: bool = True, + render: bool = True, + **kwargs, + ): + """ + Parameters: + visible: If False, this will be hidden but included in the Blocks config file (its visibility can later be updated). + render: If False, this will not be included in the Blocks config file at all. + """ + self.children: List[Block] = [] + Block.__init__(self, visible=visible, render=render, **kwargs) + + def __enter__(self): + self.parent = Context.block + Context.block = self + return self + + def add(self, child: Block): + child.parent = self + self.children.append(child) + + def fill_expected_parents(self): + children = [] + pseudo_parent = None + for child in self.children: + expected_parent = child.get_expected_parent() + if not expected_parent or isinstance(self, expected_parent): + pseudo_parent = None + children.append(child) + else: + if pseudo_parent is not None and isinstance( + pseudo_parent, expected_parent + ): + pseudo_parent.children.append(child) + else: + pseudo_parent = expected_parent(render=False) + children.append(pseudo_parent) + pseudo_parent.children = [child] + if Context.root_block: + Context.root_block.blocks[pseudo_parent._id] = pseudo_parent + child.parent = pseudo_parent + self.children = children + + def __exit__(self, *args): + if getattr(self, "allow_expected_parents", True): + self.fill_expected_parents() + Context.block = self.parent + + def postprocess(self, y): + """ + Any postprocessing needed to be performed on a block context. + """ + return y + + +class BlockFunction: + def __init__( + self, + fn: Callable | None, + inputs: List[Component], + outputs: List[Component], + preprocess: bool, + postprocess: bool, + inputs_as_dict: bool, + tracks_progress: bool = False, + ): + self.fn = fn + self.inputs = inputs + self.outputs = outputs + self.preprocess = preprocess + self.postprocess = postprocess + self.tracks_progress = tracks_progress + self.total_runtime = 0 + self.total_runs = 0 + self.inputs_as_dict = inputs_as_dict + self.name = getattr(fn, "__name__", "fn") if fn is not None else None + + def __str__(self): + return str( + { + "fn": self.name, + "preprocess": self.preprocess, + "postprocess": self.postprocess, + } + ) + + def __repr__(self): + return str(self) + + +class class_or_instancemethod(classmethod): + def __get__(self, instance, type_): + descr_get = super().__get__ if instance is None else self.__func__.__get__ + return descr_get(instance, type_) + + +def postprocess_update_dict(block: Block, update_dict: Dict, postprocess: bool = True): + """ + Converts a dictionary of updates into a format that can be sent to the frontend. + E.g. {"__type__": "generic_update", "value": "2", "interactive": False} + Into -> {"__type__": "update", "value": 2.0, "mode": "static"} + + Parameters: + block: The Block that is being updated with this update dictionary. + update_dict: The original update dictionary + postprocess: Whether to postprocess the "value" key of the update dictionary. + """ + if update_dict.get("__type__", "") == "generic_update": + update_dict = block.get_specific_update(update_dict) + if update_dict.get("value") is components._Keywords.NO_VALUE: + update_dict.pop("value") + interactive = update_dict.pop("interactive", None) + if interactive is not None: + update_dict["mode"] = "dynamic" if interactive else "static" + prediction_value = delete_none(update_dict, skip_value=True) + if "value" in prediction_value and postprocess: + assert isinstance( + block, components.IOComponent + ), f"Component {block.__class__} does not support value" + prediction_value["value"] = block.postprocess(prediction_value["value"]) + return prediction_value + + +def convert_component_dict_to_list( + outputs_ids: List[int], predictions: Dict +) -> List | Dict: + """ + Converts a dictionary of component updates into a list of updates in the order of + the outputs_ids and including every output component. Leaves other types of dictionaries unchanged. + E.g. {"textbox": "hello", "number": {"__type__": "generic_update", "value": "2"}} + Into -> ["hello", {"__type__": "generic_update"}, {"__type__": "generic_update", "value": "2"}] + """ + keys_are_blocks = [isinstance(key, Block) for key in predictions.keys()] + if all(keys_are_blocks): + reordered_predictions = [skip() for _ in outputs_ids] + for component, value in predictions.items(): + if component._id not in outputs_ids: + raise ValueError( + f"Returned component {component} not specified as output of function." + ) + output_index = outputs_ids.index(component._id) + reordered_predictions[output_index] = value + predictions = utils.resolve_singleton(reordered_predictions) + elif any(keys_are_blocks): + raise ValueError( + "Returned dictionary included some keys as Components. Either all keys must be Components to assign Component values, or return a List of values to assign output values in order." + ) + return predictions + + +@document("launch", "queue", "integrate", "load") +class Blocks(BlockContext): + """ + Blocks is Gradio's low-level API that allows you to create more custom web + applications and demos than Interfaces (yet still entirely in Python). + + + Compared to the Interface class, Blocks offers more flexibility and control over: + (1) the layout of components (2) the events that + trigger the execution of functions (3) data flows (e.g. inputs can trigger outputs, + which can trigger the next level of outputs). Blocks also offers ways to group + together related demos such as with tabs. + + + The basic usage of Blocks is as follows: create a Blocks object, then use it as a + context (with the "with" statement), and then define layouts, components, or events + within the Blocks context. Finally, call the launch() method to launch the demo. + + Example: + import gradio as gr + def update(name): + return f"Welcome to Gradio, {name}!" + + with gr.Blocks() as demo: + gr.Markdown("Start typing below and then click **Run** to see the output.") + with gr.Row(): + inp = gr.Textbox(placeholder="What is your name?") + out = gr.Textbox() + btn = gr.Button("Run") + btn.click(fn=update, inputs=inp, outputs=out) + + demo.launch() + Demos: blocks_hello, blocks_flipper, blocks_speech_text_sentiment, generate_english_german, sound_alert + Guides: blocks_and_event_listeners, controlling_layout, state_in_blocks, custom_CSS_and_JS, custom_interpretations_with_blocks, using_blocks_like_functions + """ + + def __init__( + self, + theme: Theme | str | None = None, + analytics_enabled: bool | None = None, + mode: str = "blocks", + title: str = "Gradio", + css: str | None = None, + **kwargs, + ): + """ + Parameters: + analytics_enabled: whether to allow basic telemetry. If None, will use GRADIO_ANALYTICS_ENABLED environment variable or default to True. + mode: a human-friendly name for the kind of Blocks or Interface being created. + title: The tab title to display when this is opened in a browser window. + css: custom css or path to custom css file to apply to entire Blocks + """ + # Cleanup shared parameters with Interface #TODO: is this part still necessary after Interface with Blocks? + self.limiter = None + self.save_to = None + if theme is None: + theme = DefaultTheme() + elif isinstance(theme, str): + try: + theme = Theme.from_hub(theme) + except Exception as e: + warnings.warn(f"Cannot load {theme}. Caught Exception: {str(e)}") + theme = DefaultTheme() + if not isinstance(theme, Theme): + warnings.warn("Theme should be a class loaded from gradio.themes") + theme = DefaultTheme() + self.theme = theme + self.theme_css = theme._get_theme_css() + self.stylesheets = theme._stylesheets + self.encrypt = False + self.share = False + self.enable_queue = None + self.max_threads = 40 + self.show_error = True + if css is not None and os.path.exists(css): + with open(css) as css_file: + self.css = css_file.read() + else: + self.css = css + + # For analytics_enabled and allow_flagging: (1) first check for + # parameter, (2) check for env variable, (3) default to True/"manual" + self.analytics_enabled = ( + analytics_enabled + if analytics_enabled is not None + else os.getenv("GRADIO_ANALYTICS_ENABLED", "True") == "True" + ) + if not self.analytics_enabled: + os.environ["HF_HUB_DISABLE_TELEMETRY"] = "True" + super().__init__(render=False, **kwargs) + self.blocks: Dict[int, Block] = {} + self.fns: List[BlockFunction] = [] + self.dependencies = [] + self.mode = mode + + self.is_running = False + self.local_url = None + self.share_url = None + self.width = None + self.height = None + self.api_open = True + + self.is_space = True if os.getenv("SYSTEM") == "spaces" else False + self.favicon_path = None + self.auth = None + self.dev_mode = True + self.app_id = random.getrandbits(64) + self.temp_file_sets = [] + self.title = title + self.show_api = True + + # Only used when an Interface is loaded from a config + self.predict = None + self.input_components = None + self.output_components = None + self.__name__ = None + self.api_mode = None + self.progress_tracking = None + + self.file_directories = [] + + if self.analytics_enabled: + data = { + "mode": self.mode, + "custom_css": self.css is not None, + "theme": self.theme, + "version": GRADIO_VERSION, + } + utils.initiated_analytics(data) + + @classmethod + def from_config( + cls, + config: dict, + fns: List[Callable], + root_url: str | None = None, + ) -> Blocks: + """ + Factory method that creates a Blocks from a config and list of functions. + + Parameters: + config: a dictionary containing the configuration of the Blocks. + fns: a list of functions that are used in the Blocks. Must be in the same order as the dependencies in the config. + root_url: an optional root url to use for the components in the Blocks. Allows serving files from an external URL. + """ + config = copy.deepcopy(config) + components_config = config["components"] + original_mapping: Dict[int, Block] = {} + + def get_block_instance(id: int) -> Block: + for block_config in components_config: + if block_config["id"] == id: + break + else: + raise ValueError("Cannot find block with id {}".format(id)) + cls = component_or_layout_class(block_config["type"]) + block_config["props"].pop("type", None) + block_config["props"].pop("name", None) + style = block_config["props"].pop("style", None) + if block_config["props"].get("root_url") is None and root_url: + block_config["props"]["root_url"] = root_url + "/" + # Any component has already processed its initial value, so we skip that step here + block = cls(**block_config["props"], _skip_init_processing=True) + if style and isinstance(block, components.IOComponent): + block.style(**style) + return block + + def iterate_over_children(children_list): + for child_config in children_list: + id = child_config["id"] + block = get_block_instance(id) + + original_mapping[id] = block + + children = child_config.get("children") + if children is not None: + assert isinstance( + block, BlockContext + ), f"Invalid config, Block with id {id} has children but is not a BlockContext." + with block: + iterate_over_children(children) + + derived_fields = ["types"] + + with Blocks() as blocks: + # ID 0 should be the root Blocks component + original_mapping[0] = Context.root_block or blocks + + iterate_over_children(config["layout"]["children"]) + + first_dependency = None + + # add the event triggers + for dependency, fn in zip(config["dependencies"], fns): + # We used to add a "fake_event" to the config to cache examples + # without removing it. This was causing bugs in calling gr.Interface.load + # We fixed the issue by removing "fake_event" from the config in examples.py + # but we still need to skip these events when loading the config to support + # older demos + if dependency["trigger"] == "fake_event": + continue + for field in derived_fields: + dependency.pop(field, None) + targets = dependency.pop("targets") + trigger = dependency.pop("trigger") + dependency.pop("backend_fn") + dependency.pop("documentation", None) + dependency["inputs"] = [ + original_mapping[i] for i in dependency["inputs"] + ] + dependency["outputs"] = [ + original_mapping[o] for o in dependency["outputs"] + ] + dependency.pop("status_tracker", None) + dependency["preprocess"] = False + dependency["postprocess"] = False + + for target in targets: + dependency = original_mapping[target].set_event_trigger( + event_name=trigger, fn=fn, **dependency + )[0] + if first_dependency is None: + first_dependency = dependency + + # Allows some use of Interface-specific methods with loaded Spaces + if first_dependency and Context.root_block: + blocks.predict = [fns[0]] + blocks.input_components = [ + Context.root_block.blocks[i] for i in first_dependency["inputs"] + ] + blocks.output_components = [ + Context.root_block.blocks[o] for o in first_dependency["outputs"] + ] + blocks.__name__ = "Interface" + blocks.api_mode = True + + return blocks + + def __str__(self): + return self.__repr__() + + def __repr__(self): + num_backend_fns = len([d for d in self.dependencies if d["backend_fn"]]) + repr = f"Gradio Blocks instance: {num_backend_fns} backend functions" + repr += "\n" + "-" * len(repr) + for d, dependency in enumerate(self.dependencies): + if dependency["backend_fn"]: + repr += f"\nfn_index={d}" + repr += "\n inputs:" + for input_id in dependency["inputs"]: + block = self.blocks[input_id] + repr += "\n |-{}".format(str(block)) + repr += "\n outputs:" + for output_id in dependency["outputs"]: + block = self.blocks[output_id] + repr += "\n |-{}".format(str(block)) + return repr + + def render(self): + if Context.root_block is not None: + if self._id in Context.root_block.blocks: + raise DuplicateBlockError( + f"A block with id: {self._id} has already been rendered in the current Blocks." + ) + if not set(Context.root_block.blocks).isdisjoint(self.blocks): + raise DuplicateBlockError( + "At least one block in this Blocks has already been rendered." + ) + + Context.root_block.blocks.update(self.blocks) + Context.root_block.fns.extend(self.fns) + dependency_offset = len(Context.root_block.dependencies) + for i, dependency in enumerate(self.dependencies): + api_name = dependency["api_name"] + if api_name is not None: + api_name_ = utils.append_unique_suffix( + api_name, + [dep["api_name"] for dep in Context.root_block.dependencies], + ) + if not (api_name == api_name_): + warnings.warn( + "api_name {} already exists, using {}".format( + api_name, api_name_ + ) + ) + dependency["api_name"] = api_name_ + dependency["cancels"] = [ + c + dependency_offset for c in dependency["cancels"] + ] + if dependency.get("trigger_after") is not None: + dependency["trigger_after"] += dependency_offset + # Recreate the cancel function so that it has the latest + # dependency fn indices. This is necessary to properly cancel + # events in the backend + if dependency["cancels"]: + updated_cancels = [ + Context.root_block.dependencies[i] + for i in dependency["cancels"] + ] + new_fn = BlockFunction( + get_cancel_function(updated_cancels)[0], + [], + [], + False, + True, + False, + ) + Context.root_block.fns[dependency_offset + i] = new_fn + Context.root_block.dependencies.append(dependency) + Context.root_block.temp_file_sets.extend(self.temp_file_sets) + + if Context.block is not None: + Context.block.children.extend(self.children) + return self + + def is_callable(self, fn_index: int = 0) -> bool: + """Checks if a particular Blocks function is callable (i.e. not stateful or a generator).""" + block_fn = self.fns[fn_index] + dependency = self.dependencies[fn_index] + + if inspect.isasyncgenfunction(block_fn.fn): + return False + if inspect.isgeneratorfunction(block_fn.fn): + return False + for input_id in dependency["inputs"]: + block = self.blocks[input_id] + if getattr(block, "stateful", False): + return False + for output_id in dependency["outputs"]: + block = self.blocks[output_id] + if getattr(block, "stateful", False): + return False + + return True + + def __call__(self, *inputs, fn_index: int = 0, api_name: str | None = None): + """ + Allows Blocks objects to be called as functions. Supply the parameters to the + function as positional arguments. To choose which function to call, use the + fn_index parameter, which must be a keyword argument. + + Parameters: + *inputs: the parameters to pass to the function + fn_index: the index of the function to call (defaults to 0, which for Interfaces, is the default prediction function) + api_name: The api_name of the dependency to call. Will take precedence over fn_index. + """ + if api_name is not None: + inferred_fn_index = next( + ( + i + for i, d in enumerate(self.dependencies) + if d.get("api_name") == api_name + ), + None, + ) + if inferred_fn_index is None: + raise InvalidApiName(f"Cannot find a function with api_name {api_name}") + fn_index = inferred_fn_index + if not (self.is_callable(fn_index)): + raise ValueError( + "This function is not callable because it is either stateful or is a generator. Please use the .launch() method instead to create an interactive user interface." + ) + + inputs = list(inputs) + processed_inputs = self.serialize_data(fn_index, inputs) + batch = self.dependencies[fn_index]["batch"] + if batch: + processed_inputs = [[inp] for inp in processed_inputs] + + outputs = utils.synchronize_async( + self.process_api, + fn_index=fn_index, + inputs=processed_inputs, + request=None, + state={}, + ) + outputs = outputs["data"] + + if batch: + outputs = [out[0] for out in outputs] + + processed_outputs = self.deserialize_data(fn_index, outputs) + processed_outputs = utils.resolve_singleton(processed_outputs) + + return processed_outputs + + async def call_function( + self, + fn_index: int, + processed_input: List[Any], + iterator: Iterator[Any] | None = None, + requests: routes.Request | List[routes.Request] | None = None, + event_id: str | None = None, + event_data: EventData | None = None, + ): + """ + Calls function with given index and preprocessed input, and measures process time. + Parameters: + fn_index: index of function to call + processed_input: preprocessed input to pass to function + iterator: iterator to use if function is a generator + requests: requests to pass to function + event_id: id of event in queue + event_data: data associated with event trigger + """ + block_fn = self.fns[fn_index] + assert block_fn.fn, f"function with index {fn_index} not defined." + is_generating = False + + if block_fn.inputs_as_dict: + processed_input = [ + { + input_component: data + for input_component, data in zip(block_fn.inputs, processed_input) + } + ] + + if isinstance(requests, list): + request = requests[0] + else: + request = requests + processed_input, progress_index, _ = special_args( + block_fn.fn, processed_input, request, event_data + ) + progress_tracker = ( + processed_input[progress_index] if progress_index is not None else None + ) + + start = time.time() + + if iterator is None: # If not a generator function that has already run + if progress_tracker is not None and progress_index is not None: + progress_tracker, fn = create_tracker( + self, event_id, block_fn.fn, progress_tracker.track_tqdm + ) + processed_input[progress_index] = progress_tracker + else: + fn = block_fn.fn + + if inspect.iscoroutinefunction(fn): + prediction = await fn(*processed_input) + else: + prediction = await anyio.to_thread.run_sync( + fn, *processed_input, limiter=self.limiter + ) + else: + prediction = None + + if inspect.isasyncgenfunction(block_fn.fn): + raise ValueError("Gradio does not support async generators.") + if inspect.isgeneratorfunction(block_fn.fn): + if not self.enable_queue: + raise ValueError("Need to enable queue to use generators.") + try: + if iterator is None: + iterator = prediction + prediction = await anyio.to_thread.run_sync( + utils.async_iteration, iterator, limiter=self.limiter + ) + is_generating = True + except StopAsyncIteration: + n_outputs = len(self.dependencies[fn_index].get("outputs")) + prediction = ( + components._Keywords.FINISHED_ITERATING + if n_outputs == 1 + else (components._Keywords.FINISHED_ITERATING,) * n_outputs + ) + iterator = None + + duration = time.time() - start + + return { + "prediction": prediction, + "duration": duration, + "is_generating": is_generating, + "iterator": iterator, + } + + def serialize_data(self, fn_index: int, inputs: List[Any]) -> List[Any]: + dependency = self.dependencies[fn_index] + processed_input = [] + + for i, input_id in enumerate(dependency["inputs"]): + block = self.blocks[input_id] + assert isinstance( + block, components.IOComponent + ), f"{block.__class__} Component with id {input_id} not a valid input component." + serialized_input = block.serialize(inputs[i]) + processed_input.append(serialized_input) + + return processed_input + + def deserialize_data(self, fn_index: int, outputs: List[Any]) -> List[Any]: + dependency = self.dependencies[fn_index] + predictions = [] + + for o, output_id in enumerate(dependency["outputs"]): + block = self.blocks[output_id] + assert isinstance( + block, components.IOComponent + ), f"{block.__class__} Component with id {output_id} not a valid output component." + deserialized = block.deserialize(outputs[o], root_url=block.root_url) + predictions.append(deserialized) + + return predictions + + def preprocess_data(self, fn_index: int, inputs: List[Any], state: Dict[int, Any]): + block_fn = self.fns[fn_index] + dependency = self.dependencies[fn_index] + + if block_fn.preprocess: + processed_input = [] + for i, input_id in enumerate(dependency["inputs"]): + block = self.blocks[input_id] + assert isinstance( + block, components.Component + ), f"{block.__class__} Component with id {input_id} not a valid input component." + if getattr(block, "stateful", False): + processed_input.append(state.get(input_id)) + else: + processed_input.append(block.preprocess(inputs[i])) + else: + processed_input = inputs + return processed_input + + def postprocess_data( + self, fn_index: int, predictions: List | Dict, state: Dict[int, Any] + ): + block_fn = self.fns[fn_index] + dependency = self.dependencies[fn_index] + batch = dependency["batch"] + + if type(predictions) is dict and len(predictions) > 0: + predictions = convert_component_dict_to_list( + dependency["outputs"], predictions + ) + + if len(dependency["outputs"]) == 1 and not (batch): + predictions = [ + predictions, + ] + + output = [] + for i, output_id in enumerate(dependency["outputs"]): + try: + if predictions[i] is components._Keywords.FINISHED_ITERATING: + output.append(None) + continue + except (IndexError, KeyError): + raise ValueError( + f"Number of output components does not match number of values returned from from function {block_fn.name}" + ) + block = self.blocks[output_id] + if getattr(block, "stateful", False): + if not utils.is_update(predictions[i]): + state[output_id] = predictions[i] + output.append(None) + else: + prediction_value = predictions[i] + if utils.is_update(prediction_value): + assert isinstance(prediction_value, dict) + prediction_value = postprocess_update_dict( + block=block, + update_dict=prediction_value, + postprocess=block_fn.postprocess, + ) + elif block_fn.postprocess: + assert isinstance( + block, components.Component + ), f"{block.__class__} Component with id {output_id} not a valid output component." + prediction_value = block.postprocess(prediction_value) + output.append(prediction_value) + + return output + + async def process_api( + self, + fn_index: int, + inputs: List[Any], + state: Dict[int, Any], + request: routes.Request | List[routes.Request] | None = None, + iterators: Dict[int, Any] | None = None, + event_id: str | None = None, + event_data: EventData | None = None, + ) -> Dict[str, Any]: + """ + Processes API calls from the frontend. First preprocesses the data, + then runs the relevant function, then postprocesses the output. + Parameters: + fn_index: Index of function to run. + inputs: input data received from the frontend + username: name of user if authentication is set up (not used) + state: data stored from stateful components for session (key is input block id) + iterators: the in-progress iterators for each generator function (key is function index) + event_id: id of event that triggered this API call + event_data: data associated with the event trigger itself + Returns: None + """ + block_fn = self.fns[fn_index] + batch = self.dependencies[fn_index]["batch"] + + if batch: + max_batch_size = self.dependencies[fn_index]["max_batch_size"] + batch_sizes = [len(inp) for inp in inputs] + batch_size = batch_sizes[0] + if inspect.isasyncgenfunction(block_fn.fn) or inspect.isgeneratorfunction( + block_fn.fn + ): + raise ValueError("Gradio does not support generators in batch mode.") + if not all(x == batch_size for x in batch_sizes): + raise ValueError( + f"All inputs to a batch function must have the same length but instead have sizes: {batch_sizes}." + ) + if batch_size > max_batch_size: + raise ValueError( + f"Batch size ({batch_size}) exceeds the max_batch_size for this function ({max_batch_size})" + ) + + inputs = [ + self.preprocess_data(fn_index, list(i), state) for i in zip(*inputs) + ] + result = await self.call_function( + fn_index, list(zip(*inputs)), None, request, event_id, event_data + ) + preds = result["prediction"] + data = [ + self.postprocess_data(fn_index, list(o), state) for o in zip(*preds) + ] + data = list(zip(*data)) + is_generating, iterator = None, None + else: + inputs = self.preprocess_data(fn_index, inputs, state) + iterator = iterators.get(fn_index, None) if iterators else None + result = await self.call_function( + fn_index, inputs, iterator, request, event_id, event_data + ) + data = self.postprocess_data(fn_index, result["prediction"], state) + is_generating, iterator = result["is_generating"], result["iterator"] + + block_fn.total_runtime += result["duration"] + block_fn.total_runs += 1 + + return { + "data": data, + "is_generating": is_generating, + "iterator": iterator, + "duration": result["duration"], + "average_duration": block_fn.total_runtime / block_fn.total_runs, + } + + async def create_limiter(self): + self.limiter = ( + None + if self.max_threads == 40 + else CapacityLimiter(total_tokens=self.max_threads) + ) + + def get_config(self): + return {"type": "column"} + + def get_config_file(self): + config = { + "version": routes.VERSION, + "mode": self.mode, + "dev_mode": self.dev_mode, + "analytics_enabled": self.analytics_enabled, + "components": [], + "css": self.css, + "title": self.title or "Gradio", + "is_space": self.is_space, + "enable_queue": getattr(self, "enable_queue", False), # launch attributes + "show_error": getattr(self, "show_error", False), + "show_api": self.show_api, + "is_colab": utils.colab_check(), + "stylesheets": self.stylesheets, + "root": self.root, + } + + def getLayout(block): + if not isinstance(block, BlockContext): + return {"id": block._id} + children_layout = [] + for child in block.children: + children_layout.append(getLayout(child)) + return {"id": block._id, "children": children_layout} + + config["layout"] = getLayout(self) + + for _id, block in self.blocks.items(): + config["components"].append( + { + "id": _id, + "type": (block.get_block_name()), + "props": utils.delete_none(block.get_config()) + if hasattr(block, "get_config") + else {}, + } + ) + config["dependencies"] = self.dependencies + return config + + def __enter__(self): + if Context.block is None: + Context.root_block = self + self.parent = Context.block + Context.block = self + return self + + def __exit__(self, *args): + super().fill_expected_parents() + Context.block = self.parent + # Configure the load events before root_block is reset + self.attach_load_events() + if self.parent is None: + Context.root_block = None + else: + self.parent.children.extend(self.children) + self.config = self.get_config_file() + self.app = routes.App.create_app(self) + self.progress_tracking = any(block_fn.tracks_progress for block_fn in self.fns) + + @class_or_instancemethod + def load( + self_or_cls, + fn: Callable | None = None, + inputs: List[Component] | None = None, + outputs: List[Component] | None = None, + api_name: str | None = None, + scroll_to_output: bool = False, + show_progress: bool = True, + queue=None, + batch: bool = False, + max_batch_size: int = 4, + preprocess: bool = True, + postprocess: bool = True, + every: float | None = None, + _js: str | None = None, + *, + name: str | None = None, + src: str | None = None, + api_key: str | None = None, + alias: str | None = None, + **kwargs, + ) -> Blocks | Dict[str, Any] | None: + """ + For reverse compatibility reasons, this is both a class method and an instance + method, the two of which, confusingly, do two completely different things. + + + Class method: loads a demo from a Hugging Face Spaces repo and creates it locally and returns a block instance. Equivalent to gradio.Interface.load() + + + Instance method: adds event that runs as soon as the demo loads in the browser. Example usage below. + Parameters: + name: Class Method - the name of the model (e.g. "gpt2" or "facebook/bart-base") or space (e.g. "flax-community/spanish-gpt2"), can include the `src` as prefix (e.g. "models/facebook/bart-base") + src: Class Method - the source of the model: `models` or `spaces` (or leave empty if source is provided as a prefix in `name`) + api_key: Class Method - optional access token for loading private Hugging Face Hub models or spaces. Find your token here: https://huggingface.co/settings/tokens + alias: Class Method - optional string used as the name of the loaded model instead of the default name (only applies if loading a Space running Gradio 2.x) + fn: Instance Method - the function to wrap an interface around. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component. + inputs: Instance Method - List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list. + outputs: Instance Method - List of gradio.components to use as inputs. If the function returns no outputs, this should be an empty list. + api_name: Instance Method - Defining this parameter exposes the endpoint in the api docs + scroll_to_output: Instance Method - If True, will scroll to output component on completion + show_progress: Instance Method - If True, will show progress animation while pending + queue: Instance Method - If True, will place the request on the queue, if the queue exists + batch: Instance Method - If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component. + max_batch_size: Instance Method - Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True) + preprocess: Instance Method - If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component). + postprocess: Instance Method - If False, will not run postprocessing of component data before returning 'fn' output to the browser. + every: Instance Method - Run this event 'every' number of seconds. Interpreted in seconds. Queue must be enabled. + Example: + import gradio as gr + import datetime + with gr.Blocks() as demo: + def get_time(): + return datetime.datetime.now().time() + dt = gr.Textbox(label="Current time") + demo.load(get_time, inputs=None, outputs=dt) + demo.launch() + """ + # _js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components. + if isinstance(self_or_cls, type): + if name is None: + raise ValueError( + "Blocks.load() requires passing parameters as keyword arguments" + ) + return external.load_blocks_from_repo(name, src, api_key, alias, **kwargs) + else: + return self_or_cls.set_event_trigger( + event_name="load", + fn=fn, + inputs=inputs, + outputs=outputs, + api_name=api_name, + preprocess=preprocess, + postprocess=postprocess, + scroll_to_output=scroll_to_output, + show_progress=show_progress, + js=_js, + queue=queue, + batch=batch, + max_batch_size=max_batch_size, + every=every, + no_target=True, + )[0] + + def clear(self): + """Resets the layout of the Blocks object.""" + self.blocks = {} + self.fns = [] + self.dependencies = [] + self.children = [] + return self + + @document() + def queue( + self, + concurrency_count: int = 1, + status_update_rate: float | Literal["auto"] = "auto", + client_position_to_load_data: int | None = None, + default_enabled: bool | None = None, + api_open: bool = True, + max_size: int | None = None, + ): + """ + You can control the rate of processed requests by creating a queue. This will allow you to set the number of requests to be processed at one time, and will let users know their position in the queue. + Parameters: + concurrency_count: Number of worker threads that will be processing requests from the queue concurrently. Increasing this number will increase the rate at which requests are processed, but will also increase the memory usage of the queue. + status_update_rate: If "auto", Queue will send status estimations to all clients whenever a job is finished. Otherwise Queue will send status at regular intervals set by this parameter as the number of seconds. + client_position_to_load_data: DEPRECATED. This parameter is deprecated and has no effect. + default_enabled: Deprecated and has no effect. + api_open: If True, the REST routes of the backend will be open, allowing requests made directly to those endpoints to skip the queue. + max_size: The maximum number of events the queue will store at any given moment. If the queue is full, new events will not be added and a user will receive a message saying that the queue is full. If None, the queue size will be unlimited. + Example: (Blocks) + with gr.Blocks() as demo: + button = gr.Button(label="Generate Image") + button.click(fn=image_generator, inputs=gr.Textbox(), outputs=gr.Image()) + demo.queue(concurrency_count=3) + demo.launch() + Example: (Interface) + demo = gr.Interface(image_generator, gr.Textbox(), gr.Image()) + demo.queue(concurrency_count=3) + demo.launch() + """ + if default_enabled is not None: + warnings.warn( + "The default_enabled parameter of queue has no effect and will be removed " + "in a future version of gradio." + ) + self.enable_queue = True + self.api_open = api_open + if client_position_to_load_data is not None: + warnings.warn("The client_position_to_load_data parameter is deprecated.") + self._queue = queueing.Queue( + live_updates=status_update_rate == "auto", + concurrency_count=concurrency_count, + update_intervals=status_update_rate if status_update_rate != "auto" else 1, + max_size=max_size, + blocks_dependencies=self.dependencies, + ) + self.config = self.get_config_file() + self.app = routes.App.create_app(self) + return self + + def launch( + self, + inline: bool | None = None, + inbrowser: bool = False, + share: bool | None = None, + debug: bool = False, + enable_queue: bool | None = None, + max_threads: int = 40, + auth: Callable | Tuple[str, str] | List[Tuple[str, str]] | None = None, + auth_message: str | None = None, + prevent_thread_lock: bool = False, + show_error: bool = False, + server_name: str | None = None, + server_port: int | None = None, + show_tips: bool = False, + height: int = 500, + width: int | str = "100%", + encrypt: bool | None = None, + favicon_path: str | None = None, + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_keyfile_password: str | None = None, + quiet: bool = False, + show_api: bool = True, + file_directories: List[str] | None = None, + _frontend: bool = True, + ) -> Tuple[FastAPI, str, str]: + """ + Launches a simple web server that serves the demo. Can also be used to create a + public link used by anyone to access the demo from their browser by setting share=True. + + Parameters: + inline: whether to display in the interface inline in an iframe. Defaults to True in python notebooks; False otherwise. + inbrowser: whether to automatically launch the interface in a new tab on the default browser. + share: whether to create a publicly shareable link for the interface. Creates an SSH tunnel to make your UI accessible from anywhere. If not provided, it is set to False by default every time, except when running in Google Colab. When localhost is not accessible (e.g. Google Colab), setting share=False is not supported. + debug: if True, blocks the main thread from running. If running in Google Colab, this is needed to print the errors in the cell output. + auth: If provided, username and password (or list of username-password tuples) required to access interface. Can also provide function that takes username and password and returns True if valid login. + auth_message: If provided, HTML message provided on login page. + prevent_thread_lock: If True, the interface will block the main thread while the server is running. + show_error: If True, any errors in the interface will be displayed in an alert modal and printed in the browser console log + server_port: will start gradio app on this port (if available). Can be set by environment variable GRADIO_SERVER_PORT. If None, will search for an available port starting at 7860. + server_name: to make app accessible on local network, set this to "0.0.0.0". Can be set by environment variable GRADIO_SERVER_NAME. If None, will use "127.0.0.1". + show_tips: if True, will occasionally show tips about new Gradio features + enable_queue: DEPRECATED (use .queue() method instead.) if True, inference requests will be served through a queue instead of with parallel threads. Required for longer inference times (> 1min) to prevent timeout. The default option in HuggingFace Spaces is True. The default option elsewhere is False. + max_threads: the maximum number of total threads that the Gradio app can generate in parallel. The default is inherited from the starlette library (currently 40). Applies whether the queue is enabled or not. But if queuing is enabled, this parameter is increaseed to be at least the concurrency_count of the queue. + width: The width in pixels of the iframe element containing the interface (used if inline=True) + height: The height in pixels of the iframe element containing the interface (used if inline=True) + encrypt: DEPRECATED. Has no effect. + favicon_path: If a path to a file (.png, .gif, or .ico) is provided, it will be used as the favicon for the web page. + ssl_keyfile: If a path to a file is provided, will use this as the private key file to create a local server running on https. + ssl_certfile: If a path to a file is provided, will use this as the signed certificate for https. Needs to be provided if ssl_keyfile is provided. + ssl_keyfile_password: If a password is provided, will use this with the ssl certificate for https. + quiet: If True, suppresses most print statements. + show_api: If True, shows the api docs in the footer of the app. Default True. If the queue is enabled, then api_open parameter of .queue() will determine if the api docs are shown, independent of the value of show_api. + file_directories: List of directories that gradio is allowed to serve files from (in addition to the directory containing the gradio python file). Must be absolute paths. Warning: any files in these directories or its children are potentially accessible to all users of your app. + Returns: + app: FastAPI app object that is running the demo + local_url: Locally accessible link to the demo + share_url: Publicly accessible link to the demo (if share=True, otherwise None) + Example: (Blocks) + import gradio as gr + def reverse(text): + return text[::-1] + with gr.Blocks() as demo: + button = gr.Button(value="Reverse") + button.click(reverse, gr.Textbox(), gr.Textbox()) + demo.launch(share=True, auth=("username", "password")) + Example: (Interface) + import gradio as gr + def reverse(text): + return text[::-1] + demo = gr.Interface(reverse, "text", "text") + demo.launch(share=True, auth=("username", "password")) + """ + self.dev_mode = False + if ( + auth + and not callable(auth) + and not isinstance(auth[0], tuple) + and not isinstance(auth[0], list) + ): + self.auth = [auth] + else: + self.auth = auth + self.auth_message = auth_message + self.show_tips = show_tips + self.show_error = show_error + self.height = height + self.width = width + self.favicon_path = favicon_path + + if enable_queue is not None: + self.enable_queue = enable_queue + warnings.warn( + "The `enable_queue` parameter has been deprecated. Please use the `.queue()` method instead.", + DeprecationWarning, + ) + if encrypt is not None: + warnings.warn( + "The `encrypt` parameter has been deprecated and has no effect.", + DeprecationWarning, + ) + + if self.is_space: + self.enable_queue = self.enable_queue is not False + else: + self.enable_queue = self.enable_queue is True + if self.enable_queue and not hasattr(self, "_queue"): + self.queue() + self.show_api = self.api_open if self.enable_queue else show_api + + self.file_directories = file_directories if file_directories is not None else [] + if not isinstance(self.file_directories, list): + raise ValueError("file_directories must be a list of directories.") + + if not self.enable_queue and self.progress_tracking: + raise ValueError("Progress tracking requires queuing to be enabled.") + + for dep in self.dependencies: + for i in dep["cancels"]: + if not self.queue_enabled_for_fn(i): + raise ValueError( + "In order to cancel an event, the queue for that event must be enabled! " + "You may get this error by either 1) passing a function that uses the yield keyword " + "into an interface without enabling the queue or 2) defining an event that cancels " + "another event without enabling the queue. Both can be solved by calling .queue() " + "before .launch()" + ) + if dep["batch"] and ( + dep["queue"] is False + or (dep["queue"] is None and not self.enable_queue) + ): + raise ValueError("In order to use batching, the queue must be enabled.") + + self.config = self.get_config_file() + self.max_threads = max( + self._queue.max_thread_count if self.enable_queue else 0, max_threads + ) + + if self.is_running: + assert isinstance( + self.local_url, str + ), f"Invalid local_url: {self.local_url}" + if not (quiet): + print( + "Rerunning server... use `close()` to stop if you need to change `launch()` parameters.\n----" + ) + else: + server_name, server_port, local_url, app, server = networking.start_server( + self, + server_name, + server_port, + ssl_keyfile, + ssl_certfile, + ssl_keyfile_password, + ) + self.server_name = server_name + self.local_url = local_url + self.server_port = server_port + self.server_app = app + self.server = server + self.is_running = True + self.is_colab = utils.colab_check() + self.is_kaggle = utils.kaggle_check() + self.is_sagemaker = utils.sagemaker_check() + + self.protocol = ( + "https" + if self.local_url.startswith("https") or self.is_colab + else "http" + ) + + if self.enable_queue: + self._queue.set_url(self.local_url) + + # Cannot run async functions in background other than app's scope. + # Workaround by triggering the app endpoint + requests.get(f"{self.local_url}startup-events") + + utils.launch_counter() + + if share is None: + if self.is_colab and self.enable_queue: + if not quiet: + print( + "Setting queue=True in a Colab notebook requires sharing enabled. Setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n" + ) + self.share = True + elif self.is_kaggle: + if not quiet: + print( + "Kaggle notebooks require sharing enabled. Setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n" + ) + self.share = True + elif self.is_sagemaker: + if not quiet: + print( + "Sagemaker notebooks may require sharing enabled. Setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n" + ) + self.share = True + else: + self.share = False + else: + self.share = share + + # If running in a colab or not able to access localhost, + # a shareable link must be created. + if _frontend and (not networking.url_ok(self.local_url)) and (not self.share): + raise ValueError( + "When localhost is not accessible, a shareable link must be created. Please set share=True." + ) + + if self.is_colab: + if not quiet: + if debug: + print(strings.en["COLAB_DEBUG_TRUE"]) + else: + print(strings.en["COLAB_DEBUG_FALSE"]) + if not self.share: + print(strings.en["COLAB_WARNING"].format(self.server_port)) + if self.enable_queue and not self.share: + raise ValueError( + "When using queueing in Colab, a shareable link must be created. Please set share=True." + ) + else: + print( + strings.en["RUNNING_LOCALLY_SEPARATED"].format( + self.protocol, self.server_name, self.server_port + ) + ) + + if self.share: + if self.is_space: + raise RuntimeError("Share is not supported when you are in Spaces") + try: + if self.share_url is None: + self.share_url = networking.setup_tunnel( + self.server_name, self.server_port, self.share_token + ) + print(strings.en["SHARE_LINK_DISPLAY"].format(self.share_url)) + if not (quiet): + print(strings.en["SHARE_LINK_MESSAGE"]) + except (RuntimeError, requests.exceptions.ConnectionError): + if self.analytics_enabled: + utils.error_analytics("Not able to set up tunnel") + self.share_url = None + self.share = False + print(strings.en["COULD_NOT_GET_SHARE_LINK"]) + else: + if not (quiet): + print(strings.en["PUBLIC_SHARE_TRUE"]) + self.share_url = None + + if inbrowser: + link = self.share_url if self.share and self.share_url else self.local_url + webbrowser.open(link) + + # Check if running in a Python notebook in which case, display inline + if inline is None: + inline = utils.ipython_check() and (self.auth is None) + if inline: + if self.auth is not None: + print( + "Warning: authentication is not supported inline. Please" + "click the link to access the interface in a new tab." + ) + try: + from IPython.display import HTML, Javascript, display # type: ignore + + if self.share and self.share_url: + while not networking.url_ok(self.share_url): + time.sleep(0.25) + display( + HTML( + f'
' + ) + ) + elif self.is_colab: + # modified from /usr/local/lib/python3.7/dist-packages/google/colab/output/_util.py within Colab environment + code = """(async (port, path, width, height, cache, element) => { + if (!google.colab.kernel.accessAllowed && !cache) { + return; + } + element.appendChild(document.createTextNode('')); + const url = await google.colab.kernel.proxyPort(port, {cache}); + + const external_link = document.createElement('div'); + external_link.innerHTML = ` +
+ Running on + https://localhost:${port}${path} + +
+ `; + element.appendChild(external_link); + + const iframe = document.createElement('iframe'); + iframe.src = new URL(path, url).toString(); + iframe.height = height; + iframe.allow = "autoplay; camera; microphone; clipboard-read; clipboard-write;" + iframe.width = width; + iframe.style.border = 0; + element.appendChild(iframe); + })""" + "({port}, {path}, {width}, {height}, {cache}, window.element)".format( + port=json.dumps(self.server_port), + path=json.dumps("/"), + width=json.dumps(self.width), + height=json.dumps(self.height), + cache=json.dumps(False), + ) + + display(Javascript(code)) + else: + display( + HTML( + f'
' + ) + ) + except ImportError: + pass + + if getattr(self, "analytics_enabled", False): + data = { + "launch_method": "browser" if inbrowser else "inline", + "is_google_colab": self.is_colab, + "is_sharing_on": self.share, + "share_url": self.share_url, + "enable_queue": self.enable_queue, + "show_tips": self.show_tips, + "server_name": server_name, + "server_port": server_port, + "is_spaces": self.is_space, + "mode": self.mode, + } + utils.launch_analytics(data) + utils.launched_telemetry(self, data) + + utils.show_tip(self) + + # Block main thread if debug==True + if debug or int(os.getenv("GRADIO_DEBUG", 0)) == 1: + self.block_thread() + # Block main thread if running in a script to stop script from exiting + is_in_interactive_mode = bool(getattr(sys, "ps1", sys.flags.interactive)) + + if not prevent_thread_lock and not is_in_interactive_mode: + self.block_thread() + + return TupleNoPrint((self.server_app, self.local_url, self.share_url)) + + def integrate( + self, + comet_ml: comet_ml.Experiment | None = None, + wandb: ModuleType | None = None, + mlflow: ModuleType | None = None, + ) -> None: + """ + A catch-all method for integrating with other libraries. This method should be run after launch() + Parameters: + comet_ml: If a comet_ml Experiment object is provided, will integrate with the experiment and appear on Comet dashboard + wandb: If the wandb module is provided, will integrate with it and appear on WandB dashboard + mlflow: If the mlflow module is provided, will integrate with the experiment and appear on ML Flow dashboard + """ + analytics_integration = "" + if comet_ml is not None: + analytics_integration = "CometML" + comet_ml.log_other("Created from", "Gradio") + if self.share_url is not None: + comet_ml.log_text("gradio: " + self.share_url) + comet_ml.end() + elif self.local_url: + comet_ml.log_text("gradio: " + self.local_url) + comet_ml.end() + else: + raise ValueError("Please run `launch()` first.") + if wandb is not None: + analytics_integration = "WandB" + if self.share_url is not None: + wandb.log( + { + "Gradio panel": wandb.Html( + '' + ) + } + ) + else: + print( + "The WandB integration requires you to " + "`launch(share=True)` first." + ) + if mlflow is not None: + analytics_integration = "MLFlow" + if self.share_url is not None: + mlflow.log_param("Gradio Interface Share Link", self.share_url) + else: + mlflow.log_param("Gradio Interface Local Link", self.local_url) + if self.analytics_enabled and analytics_integration: + data = {"integration": analytics_integration} + utils.integration_analytics(data) + + def close(self, verbose: bool = True) -> None: + """ + Closes the Interface that was launched and frees the port. + """ + try: + if self.enable_queue: + self._queue.close() + self.server.close() + self.is_running = False + # So that the startup events (starting the queue) + # happen the next time the app is launched + self.app.startup_events_triggered = False + if verbose: + print("Closing server running on port: {}".format(self.server_port)) + except (AttributeError, OSError): # can't close if not running + pass + + def block_thread( + self, + ) -> None: + """Block main thread until interrupted by user.""" + try: + while True: + time.sleep(0.1) + except (KeyboardInterrupt, OSError): + print("Keyboard interruption in main thread... closing server.") + self.server.close() + for tunnel in CURRENT_TUNNELS: + tunnel.kill() + + def attach_load_events(self): + """Add a load event for every component whose initial value should be randomized.""" + if Context.root_block: + for component in Context.root_block.blocks.values(): + if ( + isinstance(component, components.IOComponent) + and component.load_event_to_attach + ): + load_fn, every = component.load_event_to_attach + # Use set_event_trigger to avoid ambiguity between load class/instance method + dep = self.set_event_trigger( + "load", + load_fn, + None, + component, + no_target=True, + # If every is None, for sure skip the queue + # else, let the enable_queue parameter take precedence + # this will raise a nice error message is every is used + # without queue + queue=False if every is None else None, + every=every, + )[0] + component.load_event = dep + + def startup_events(self): + """Events that should be run when the app containing this block starts up.""" + + if self.enable_queue: + utils.run_coro_in_background(self._queue.start, (self.progress_tracking,)) + # So that processing can resume in case the queue was stopped + self._queue.stopped = False + utils.run_coro_in_background(self.create_limiter) + + def queue_enabled_for_fn(self, fn_index: int): + if self.dependencies[fn_index]["queue"] is None: + return self.enable_queue + return self.dependencies[fn_index]["queue"] diff --git a/gradio/components.py b/gradio/components.py new file mode 100644 index 0000000000000000000000000000000000000000..c3264c46ca5be895faeab7a26f548bf3be5a3117 --- /dev/null +++ b/gradio/components.py @@ -0,0 +1,5837 @@ +"""Contains all of the components that can be used with Gradio Interface / Blocks. +Along with the docs for each component, you can find the names of example demos that use +each component. These demos are located in the `demo` directory.""" + +from __future__ import annotations + +import inspect +import json +import math +import operator +import random +import tempfile +import uuid +import warnings +from copy import deepcopy +from enum import Enum +from pathlib import Path +from types import ModuleType +from typing import TYPE_CHECKING, Any, Callable, Dict, List, Tuple, Type + +import altair as alt +import matplotlib.figure +import numpy as np +import pandas as pd +import PIL +import PIL.ImageOps +from ffmpy import FFmpeg +from pandas.api.types import is_numeric_dtype +from PIL import Image as _Image # using _ to minimize namespace pollution +from typing_extensions import Literal + +from gradio import media_data, processing_utils, utils +from gradio.blocks import Block, BlockContext +from gradio.documentation import document, set_documentation_group +from gradio.events import ( + Blurrable, + Changeable, + Clearable, + Clickable, + Editable, + EventListener, + EventListenerMethod, + Playable, + Releaseable, + Selectable, + Streamable, + Submittable, + Uploadable, +) +from gradio.interpretation import NeighborInterpretable, TokenInterpretable +from gradio.layouts import Column, Form, Row +from gradio.processing_utils import TempFileManager +from gradio.serializing import ( + FileSerializable, + ImgSerializable, + JSONSerializable, + Serializable, + SimpleSerializable, +) + +if TYPE_CHECKING: + from typing import TypedDict + + class DataframeData(TypedDict): + headers: List[str] + data: List[List[str | int | bool]] + + +set_documentation_group("component") +_Image.init() # fixes https://github.com/gradio-app/gradio/issues/2843 + + +class _Keywords(Enum): + NO_VALUE = "NO_VALUE" # Used as a sentinel to determine if nothing is provided as a argument for `value` in `Component.update()` + FINISHED_ITERATING = "FINISHED_ITERATING" # Used to skip processing of a component's value (needed for generators + state) + + +class Component(Block): + """ + A base class for defining the methods that all gradio components should have. + """ + + def __init__(self, *args, **kwargs): + Block.__init__(self, *args, **kwargs) + EventListener.__init__(self) + + def __str__(self): + return self.__repr__() + + def __repr__(self): + return f"{self.get_block_name()}" + + def get_config(self): + """ + :return: a dictionary with context variables for the javascript file associated with the context + """ + return { + "name": self.get_block_name(), + **super().get_config(), + } + + def preprocess(self, x: Any) -> Any: + """ + Any preprocessing needed to be performed on function input. + """ + return x + + def postprocess(self, y): + """ + Any postprocessing needed to be performed on function output. + """ + return y + + def style( + self, + *, + container: bool | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the component. + Parameters: + container: If True, will place the component in a container - providing some extra padding around the border. + """ + put_deprecated_params_in_box = False + if "rounded" in kwargs: + warnings.warn( + "'rounded' styling is no longer supported. To round adjacent components together, place them in a Column(variant='box')." + ) + if isinstance(kwargs["rounded"], list) or isinstance( + kwargs["rounded"], tuple + ): + put_deprecated_params_in_box = True + kwargs.pop("rounded") + if "margin" in kwargs: + warnings.warn( + "'margin' styling is no longer supported. To place adjacent components together without margin, place them in a Column(variant='box')." + ) + if isinstance(kwargs["margin"], list) or isinstance( + kwargs["margin"], tuple + ): + put_deprecated_params_in_box = True + kwargs.pop("margin") + if "border" in kwargs: + warnings.warn( + "'border' styling is no longer supported. To place adjacent components in a shared border, place them in a Column(variant='box')." + ) + kwargs.pop("border") + if container is not None: + self._style["container"] = container + if len(kwargs): + for key in kwargs: + warnings.warn(f"Unknown style parameter: {key}") + if put_deprecated_params_in_box and isinstance(self.parent, (Row, Column)): + if self.parent.variant == "default": + self.parent.variant = "compact" + return self + + +class IOComponent(Component, Serializable): + """ + A base class for defining methods that all input/output components should have. + """ + + def __init__( + self, + *, + value: Any = None, + label: str | None = None, + info: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + load_fn: Callable | None = None, + every: float | None = None, + **kwargs, + ): + Component.__init__( + self, elem_id=elem_id, elem_classes=elem_classes, visible=visible, **kwargs + ) + + self.label = label + self.info = info + self.show_label = show_label + self.interactive = interactive + + # load_event is set in the Blocks.attach_load_events method + self.load_event: None | Dict[str, Any] = None + self.load_event_to_attach = None + load_fn, initial_value = self.get_load_fn_and_initial_value(value) + self.value = ( + initial_value + if self._skip_init_processing + else self.postprocess(initial_value) + ) + if callable(load_fn): + self.attach_load_event(load_fn, every) + + def get_config(self): + config = { + "label": self.label, + "show_label": self.show_label, + "interactive": self.interactive, + **super().get_config(), + } + if self.info: + config["info"] = self.info + return config + + @staticmethod + def get_load_fn_and_initial_value(value): + if callable(value): + initial_value = value() + load_fn = value + else: + initial_value = value + load_fn = None + return load_fn, initial_value + + def attach_load_event(self, callable: Callable, every: float | None): + """Add a load event that runs `callable`, optionally every `every` seconds.""" + self.load_event_to_attach = (callable, every) + + def as_example(self, input_data): + """Return the input data in a way that can be displayed by the examples dataset component in the front-end.""" + return input_data + + +class FormComponent: + def get_expected_parent(self) -> Type[Form]: + return Form + + +@document("style") +class Textbox( + FormComponent, + Changeable, + Selectable, + Submittable, + Blurrable, + IOComponent, + SimpleSerializable, + TokenInterpretable, +): + """ + Creates a textarea for user to enter string input or display string output. + Preprocessing: passes textarea value as a {str} into the function. + Postprocessing: expects a {str} returned from function and sets textarea value to it. + Examples-format: a {str} representing the textbox input. + + Demos: hello_world, diff_texts, sentence_builder + Guides: creating_a_chatbot, real_time_speech_recognition + """ + + def __init__( + self, + value: str | Callable | None = "", + *, + lines: int = 1, + max_lines: int = 20, + placeholder: str | None = None, + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + type: str = "text", + **kwargs, + ): + """ + Parameters: + value: default text to provide in textarea. If callable, the function will be called whenever the app loads to set the initial value of the component. + lines: minimum number of line rows to provide in textarea. + max_lines: maximum number of line rows to provide in textarea. + placeholder: placeholder hint to provide behind textarea. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + type: The type of textbox. One of: 'text', 'password', 'email', Default is 'text'. + """ + if type not in ["text", "password", "email"]: + raise ValueError('`type` must be one of "text", "password", or "email".') + + # + self.lines = lines + self.max_lines = max_lines if type == "text" else 1 + self.placeholder = placeholder + self.select: EventListenerMethod + """ + Event listener for when the user selects text in the Textbox. + Uses event data gradio.SelectData to carry `value` referring to selected subtring, and `index` tuple referring to selected range endpoints. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + TokenInterpretable.__init__(self) + self.cleared_value = "" + self.test_input = value + self.type = type + + def get_config(self): + return { + "lines": self.lines, + "max_lines": self.max_lines, + "placeholder": self.placeholder, + "value": self.value, + "type": self.type, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: str | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + lines: int | None = None, + max_lines: int | None = None, + placeholder: str | None = None, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + interactive: bool | None = None, + type: str | None = None, + ): + return { + "lines": lines, + "max_lines": max_lines, + "placeholder": placeholder, + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "type": type, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: str | None) -> str | None: + """ + Preprocesses input (converts it to a string) before passing it to the function. + Parameters: + x: text + Returns: + text + """ + return None if x is None else str(x) + + def postprocess(self, y: str | None) -> str | None: + """ + Postproccess the function output y by converting it to a str before passing it to the frontend. + Parameters: + y: function output to postprocess. + Returns: + text + """ + return None if y is None else str(y) + + def set_interpret_parameters( + self, separator: str = " ", replacement: str | None = None + ): + """ + Calculates interpretation score of characters in input by splitting input into tokens, then using a "leave one out" method to calculate the score of each token by removing each token and measuring the delta of the output value. + Parameters: + separator: Separator to use to split input into tokens. + replacement: In the "leave one out" step, the text that the token should be replaced with. If None, the token is removed altogether. + """ + self.interpretation_separator = separator + self.interpretation_replacement = replacement + return self + + def tokenize(self, x: str) -> Tuple[List[str], List[str], None]: + """ + Tokenizes an input string by dividing into "words" delimited by self.interpretation_separator + """ + tokens = x.split(self.interpretation_separator) + leave_one_out_strings = [] + for index in range(len(tokens)): + leave_one_out_set = list(tokens) + if self.interpretation_replacement is None: + leave_one_out_set.pop(index) + else: + leave_one_out_set[index] = self.interpretation_replacement + leave_one_out_strings.append( + self.interpretation_separator.join(leave_one_out_set) + ) + return tokens, leave_one_out_strings, None + + def get_masked_inputs( + self, tokens: List[str], binary_mask_matrix: List[List[int]] + ) -> List[str]: + """ + Constructs partially-masked sentences for SHAP interpretation + """ + masked_inputs = [] + for binary_mask_vector in binary_mask_matrix: + masked_input = np.array(tokens)[np.array(binary_mask_vector, dtype=bool)] + masked_inputs.append(self.interpretation_separator.join(masked_input)) + return masked_inputs + + def get_interpretation_scores( + self, x, neighbors, scores: List[float], tokens: List[str], masks=None, **kwargs + ) -> List[Tuple[str, float]]: + """ + Returns: + Each tuple set represents a set of characters and their corresponding interpretation score. + """ + result = [] + for token, score in zip(tokens, scores): + result.append((token, score)) + result.append((self.interpretation_separator, 0)) + return result + + def style( + self, + *, + show_copy_button: bool | None = None, + container: bool | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the Textbox component. + Parameters: + show_copy_button: If True, includes a copy button to copy the text in the textbox. Only applies if show_label is True. + container: If True, will place the component in a container - providing some extra padding around the border. + """ + if show_copy_button is not None: + self._style["show_copy_button"] = show_copy_button + + return Component.style(self, container=container, **kwargs) + + +@document("style") +class Number( + FormComponent, + Changeable, + Submittable, + Blurrable, + IOComponent, + SimpleSerializable, + NeighborInterpretable, +): + """ + Creates a numeric field for user to enter numbers as input or display numeric output. + Preprocessing: passes field value as a {float} or {int} into the function, depending on `precision`. + Postprocessing: expects an {int} or {float} returned from the function and sets field value to it. + Examples-format: a {float} or {int} representing the number's value. + + Demos: tax_calculator, titanic_survival, blocks_simple_squares + """ + + def __init__( + self, + value: float | Callable | None = None, + *, + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + precision: int | None = None, + **kwargs, + ): + """ + Parameters: + value: default value. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will be editable; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + precision: Precision to round input/output to. If set to 0, will round to nearest integer and convert type to int. If None, no rounding happens. + """ + self.precision = precision + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + NeighborInterpretable.__init__(self) + self.test_input = self.value if self.value is not None else 1 + + @staticmethod + def _round_to_precision(num: float | int, precision: int | None) -> float | int: + """ + Round to a given precision. + + If precision is None, no rounding happens. If 0, num is converted to int. + + Parameters: + num: Number to round. + precision: Precision to round to. + Returns: + rounded number + """ + if precision is None: + return float(num) + elif precision == 0: + return int(round(num, precision)) + else: + return round(num, precision) + + def get_config(self): + return { + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: float | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: float | None) -> float | None: + """ + Parameters: + x: numeric input + Returns: + number representing function input + """ + if x is None: + return None + return self._round_to_precision(x, self.precision) + + def postprocess(self, y: float | None) -> float | None: + """ + Any postprocessing needed to be performed on function output. + + Parameters: + y: numeric output + Returns: + number representing function output + """ + if y is None: + return None + return self._round_to_precision(y, self.precision) + + def set_interpret_parameters( + self, steps: int = 3, delta: float = 1, delta_type: str = "percent" + ): + """ + Calculates interpretation scores of numeric values close to the input number. + Parameters: + steps: Number of nearby values to measure in each direction (above and below the input number). + delta: Size of step in each direction between nearby values. + delta_type: "percent" if delta step between nearby values should be a calculated as a percent, or "absolute" if delta should be a constant step change. + """ + self.interpretation_steps = steps + self.interpretation_delta = delta + self.interpretation_delta_type = delta_type + return self + + def get_interpretation_neighbors(self, x: float | int) -> Tuple[List[float], Dict]: + x = self._round_to_precision(x, self.precision) + if self.interpretation_delta_type == "percent": + delta = 1.0 * self.interpretation_delta * x / 100 + elif self.interpretation_delta_type == "absolute": + delta = self.interpretation_delta + else: + delta = self.interpretation_delta + if self.precision == 0 and math.floor(delta) != delta: + raise ValueError( + f"Delta value {delta} is not an integer and precision=0. Cannot generate valid set of neighbors. " + "If delta_type='percent', pick a value of delta such that x * delta is an integer. " + "If delta_type='absolute', pick a value of delta that is an integer." + ) + # run_interpretation will preprocess the neighbors so no need to convert to int here + negatives = ( + np.array(x) + np.arange(-self.interpretation_steps, 0) * delta + ).tolist() + positives = ( + np.array(x) + np.arange(1, self.interpretation_steps + 1) * delta + ).tolist() + return negatives + positives, {} + + def get_interpretation_scores( + self, x: float, neighbors: List[float], scores: List[float | None], **kwargs + ) -> List[Tuple[float, float | None]]: + """ + Returns: + Each tuple set represents a numeric value near the input and its corresponding interpretation score. + """ + interpretation = list(zip(neighbors, scores)) + interpretation.insert(int(len(interpretation) / 2), (x, None)) + return interpretation + + +@document("style") +class Slider( + FormComponent, + Changeable, + Releaseable, + IOComponent, + SimpleSerializable, + NeighborInterpretable, +): + """ + Creates a slider that ranges from `minimum` to `maximum` with a step size of `step`. + Preprocessing: passes slider value as a {float} into the function. + Postprocessing: expects an {int} or {float} returned from function and sets slider value to it as long as it is within range. + Examples-format: A {float} or {int} representing the slider's value. + + Demos: sentence_builder, slider_release, generate_tone, titanic_survival, interface_random_slider, blocks_random_slider + Guides: create_your_own_friends_with_a_gan + """ + + def __init__( + self, + minimum: float = 0, + maximum: float = 100, + value: float | Callable | None = None, + *, + step: float | None = None, + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + randomize: bool = False, + **kwargs, + ): + """ + Parameters: + minimum: minimum value for slider. + maximum: maximum value for slider. + value: default value. If callable, the function will be called whenever the app loads to set the initial value of the component. Ignored if randomized=True. + step: increment between slider values. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, slider will be adjustable; if False, adjusting will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + randomize: If True, the value of the slider when the app loads is taken uniformly at random from the range given by the minimum and maximum. + """ + self.minimum = minimum + self.maximum = maximum + if step is None: + difference = maximum - minimum + power = math.floor(math.log10(difference) - 2) + self.step = 10**power + else: + self.step = step + if randomize: + value = self.get_random_value + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + NeighborInterpretable.__init__(self) + self.cleared_value = self.value + self.test_input = self.value + + def get_config(self): + return { + "minimum": self.minimum, + "maximum": self.maximum, + "step": self.step, + "value": self.value, + **IOComponent.get_config(self), + } + + def get_random_value(self): + n_steps = int((self.maximum - self.minimum) / self.step) + step = random.randint(0, n_steps) + value = self.minimum + step * self.step + # Round to number of decimals in step so that UI doesn't display long decimals + n_decimals = max(str(self.step)[::-1].find("."), 0) + if n_decimals: + value = round(value, n_decimals) + return value + + @staticmethod + def update( + value: float | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + minimum: float | None = None, + maximum: float | None = None, + step: float | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "minimum": minimum, + "maximum": maximum, + "step": step, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def postprocess(self, y: float | None) -> float | None: + """ + Any postprocessing needed to be performed on function output. + Parameters: + y: numeric output + Returns: + numeric output or minimum number if None + """ + return self.minimum if y is None else y + + def set_interpret_parameters(self, steps: int = 8) -> "Slider": + """ + Calculates interpretation scores of numeric values ranging between the minimum and maximum values of the slider. + Parameters: + steps: Number of neighboring values to measure between the minimum and maximum values of the slider range. + """ + self.interpretation_steps = steps + return self + + def get_interpretation_neighbors(self, x) -> Tuple[object, dict]: + return ( + np.linspace(self.minimum, self.maximum, self.interpretation_steps).tolist(), + {}, + ) + + def style( + self, + *, + container: bool | None = None, + ): + """ + This method can be used to change the appearance of the slider. + Parameters: + container: If True, will place the component in a container - providing some extra padding around the border. + """ + Component.style( + self, + container=container, + ) + return self + + +@document("style") +class Checkbox( + FormComponent, + Changeable, + Selectable, + IOComponent, + SimpleSerializable, + NeighborInterpretable, +): + """ + Creates a checkbox that can be set to `True` or `False`. + + Preprocessing: passes the status of the checkbox as a {bool} into the function. + Postprocessing: expects a {bool} returned from the function and, if it is True, checks the checkbox. + Examples-format: a {bool} representing whether the box is checked. + Demos: sentence_builder, titanic_survival + """ + + def __init__( + self, + value: bool | Callable = False, + *, + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: if True, checked by default. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, this checkbox can be checked; if False, checking will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.test_input = True + self.select: EventListenerMethod + """ + Event listener for when the user selects or deselects Checkbox. + Uses event data gradio.SelectData to carry `value` referring to label of checkbox, and `selected` to refer to state of checkbox. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + NeighborInterpretable.__init__(self) + + def get_config(self): + return { + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: bool | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def get_interpretation_neighbors(self, x): + return [not x], {} + + def get_interpretation_scores(self, x, neighbors, scores, **kwargs): + """ + Returns: + The first value represents the interpretation score if the input is False, and the second if the input is True. + """ + if x: + return scores[0], None + else: + return None, scores[0] + + +@document("style") +class CheckboxGroup( + FormComponent, + Changeable, + Selectable, + IOComponent, + SimpleSerializable, + NeighborInterpretable, +): + """ + Creates a set of checkboxes of which a subset can be checked. + Preprocessing: passes the list of checked checkboxes as a {List[str]} or their indices as a {List[int]} into the function, depending on `type`. + Postprocessing: expects a {List[str]}, each element of which becomes a checked checkbox. + Examples-format: a {List[str]} representing the values to be checked. + Demos: sentence_builder, titanic_survival + """ + + def __init__( + self, + choices: List[str] | None = None, + *, + value: List[str] | str | Callable | None = None, + type: str = "value", + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + choices: list of options to select from. + value: default selected list of options. If callable, the function will be called whenever the app loads to set the initial value of the component. + type: Type of value to be returned by component. "value" returns the list of strings of the choices selected, "index" returns the list of indicies of the choices selected. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, choices in this checkbox group will be checkable; if False, checking will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.choices = choices or [] + self.cleared_value = [] + valid_types = ["value", "index"] + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + self.type = type + self.test_input = self.choices + self.select: EventListenerMethod + """ + Event listener for when the user selects or deselects within CheckboxGroup. + Uses event data gradio.SelectData to carry `value` referring to label of selected checkbox, `index` to refer to index, and `selected` to refer to state of checkbox. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + NeighborInterpretable.__init__(self) + + def get_config(self): + return { + "choices": self.choices, + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: List[str] + | str + | Literal[_Keywords.NO_VALUE] + | None = _Keywords.NO_VALUE, + choices: List[str] | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "choices": choices, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: List[str]) -> List[str] | List[int]: + """ + Parameters: + x: list of selected choices + Returns: + list of selected choices as strings or indices within choice list + """ + if self.type == "value": + return x + elif self.type == "index": + return [self.choices.index(choice) for choice in x] + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'value', 'index'." + ) + + def postprocess(self, y: List[str] | str | None) -> List[str]: + """ + Any postprocessing needed to be performed on function output. + Parameters: + y: List of selected choices. If a single choice is selected, it can be passed in as a string + Returns: + List of selected choices + """ + if y is None: + return [] + if not isinstance(y, list): + y = [y] + return y + + def get_interpretation_neighbors(self, x): + leave_one_out_sets = [] + for choice in self.choices: + leave_one_out_set = list(x) + if choice in leave_one_out_set: + leave_one_out_set.remove(choice) + else: + leave_one_out_set.append(choice) + leave_one_out_sets.append(leave_one_out_set) + return leave_one_out_sets, {} + + def get_interpretation_scores(self, x, neighbors, scores, **kwargs): + """ + Returns: + For each tuple in the list, the first value represents the interpretation score if the input is False, and the second if the input is True. + """ + final_scores = [] + for choice, score in zip(self.choices, scores): + if choice in x: + score_set = [score, None] + else: + score_set = [None, score] + final_scores.append(score_set) + return final_scores + + def style( + self, + *, + item_container: bool | None = None, + container: bool | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the CheckboxGroup. + Parameters: + item_container: If True, will place the items in a container. + container: If True, will place the component in a container - providing some extra padding around the border. + """ + if item_container is not None: + self._style["item_container"] = item_container + + Component.style(self, container=container, **kwargs) + return self + + +@document("style") +class Radio( + FormComponent, + Selectable, + Changeable, + IOComponent, + SimpleSerializable, + NeighborInterpretable, +): + """ + Creates a set of radio buttons of which only one can be selected. + Preprocessing: passes the value of the selected radio button as a {str} or its index as an {int} into the function, depending on `type`. + Postprocessing: expects a {str} corresponding to the value of the radio button to be selected. + Examples-format: a {str} representing the radio option to select. + + Demos: sentence_builder, titanic_survival, blocks_essay + """ + + def __init__( + self, + choices: List[str] | None = None, + *, + value: str | Callable | None = None, + type: str = "value", + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + choices: list of options to select from. + value: the button selected by default. If None, no button is selected by default. If callable, the function will be called whenever the app loads to set the initial value of the component. + type: Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, choices in this radio group will be selectable; if False, selection will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.choices = choices or [] + valid_types = ["value", "index"] + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + self.type = type + self.test_input = self.choices[0] if len(self.choices) else None + self.select: EventListenerMethod + """ + Event listener for when the user selects Radio option. + Uses event data gradio.SelectData to carry `value` referring to label of selected option, and `index` to refer to index. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + NeighborInterpretable.__init__(self) + self.cleared_value = self.value + + def get_config(self): + return { + "choices": self.choices, + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + choices: List[str] | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "choices": choices, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: str | None) -> str | int | None: + """ + Parameters: + x: selected choice + Returns: + selected choice as string or index within choice list + """ + if self.type == "value": + return x + elif self.type == "index": + if x is None: + return None + else: + return self.choices.index(x) + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'value', 'index'." + ) + + def get_interpretation_neighbors(self, x): + choices = list(self.choices) + choices.remove(x) + return choices, {} + + def get_interpretation_scores( + self, x, neighbors, scores: List[float | None], **kwargs + ) -> List: + """ + Returns: + Each value represents the interpretation score corresponding to each choice. + """ + scores.insert(self.choices.index(x), None) + return scores + + def style( + self, + *, + item_container: bool | None = None, + container: bool | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the radio component. + Parameters: + item_container: If True, will place items in a container. + container: If True, will place the component in a container - providing some extra padding around the border. + """ + if item_container is not None: + self._style["item_container"] = item_container + + Component.style(self, container=container, **kwargs) + return self + + +@document("style") +class Dropdown(Changeable, Selectable, IOComponent, SimpleSerializable, FormComponent): + """ + Creates a dropdown of choices from which entries can be selected. + Preprocessing: passes the value of the selected dropdown entry as a {str} or its index as an {int} into the function, depending on `type`. + Postprocessing: expects a {str} corresponding to the value of the dropdown entry to be selected. + Examples-format: a {str} representing the drop down value to select. + Demos: sentence_builder, titanic_survival + """ + + def __init__( + self, + choices: str | List[str] | None = None, + *, + value: str | List[str] | Callable | None = None, + type: str = "value", + multiselect: bool | None = None, + max_choices: int | None = None, + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + choices: list of options to select from. + value: default value(s) selected in dropdown. If None, no value is selected by default. If callable, the function will be called whenever the app loads to set the initial value of the component. + type: Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. + multiselect: if True, multiple choices can be selected. + max_choices: maximum number of choices that can be selected. If None, no limit is enforced. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, choices in this dropdown will be selectable; if False, selection will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.choices = choices or [] + valid_types = ["value", "index"] + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + self.type = type + self.multiselect = multiselect + if multiselect: + if isinstance(value, str): + value = [value] + if not multiselect and max_choices is not None: + warnings.warn( + "The `max_choices` parameter is ignored when `multiselect` is False." + ) + self.max_choices = max_choices + self.test_input = self.choices[0] if len(self.choices) else None + self.interpret_by_tokens = False + self.select: EventListenerMethod + """ + Event listener for when the user selects Dropdown option. + Uses event data gradio.SelectData to carry `value` referring to label of selected option, and `index` to refer to index. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + self.cleared_value = self.value or ([] if multiselect else "") + + def get_config(self): + return { + "choices": self.choices, + "value": self.value, + "multiselect": self.multiselect, + "max_choices": self.max_choices, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + choices: str | List[str] | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "choices": choices, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess( + self, x: str | List[str] + ) -> str | int | List[str] | List[int] | None: + """ + Parameters: + x: selected choice(s) + Returns: + selected choice(s) as string or index within choice list or list of string or indices + """ + if self.type == "value": + return x + elif self.type == "index": + if x is None: + return None + elif self.multiselect: + return [self.choices.index(c) for c in x] + else: + if isinstance(x, str): + return self.choices.index(x) + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'value', 'index'." + ) + + def set_interpret_parameters(self): + """ + Calculates interpretation score of each choice by comparing the output against each of the outputs when alternative choices are selected. + """ + return self + + def get_interpretation_neighbors(self, x): + choices = list(self.choices) + choices.remove(x) + return choices, {} + + def get_interpretation_scores( + self, x, neighbors, scores: List[float | None], **kwargs + ) -> List: + """ + Returns: + Each value represents the interpretation score corresponding to each choice. + """ + scores.insert(self.choices.index(x), None) + return scores + + def style(self, *, container: bool | None = None, **kwargs): + """ + This method can be used to change the appearance of the Dropdown. + Parameters: + container: If True, will place the component in a container - providing some extra padding around the border. + """ + Component.style(self, container=container, **kwargs) + return self + + +@document("style") +class Image( + Editable, + Clearable, + Changeable, + Streamable, + Uploadable, + IOComponent, + ImgSerializable, + TokenInterpretable, +): + """ + Creates an image component that can be used to upload/draw images (as an input) or display images (as an output). + Preprocessing: passes the uploaded image as a {numpy.array}, {PIL.Image} or {str} filepath depending on `type` -- unless `tool` is `sketch` AND source is one of `upload` or `webcam`. In these cases, a {dict} with keys `image` and `mask` is passed, and the format of the corresponding values depends on `type`. + Postprocessing: expects a {numpy.array}, {PIL.Image} or {str} or {pathlib.Path} filepath to an image and displays the image. + Examples-format: a {str} filepath to a local file that contains the image. + Demos: image_mod, image_mod_default_image + Guides: Gradio_and_ONNX_on_Hugging_Face, image_classification_in_pytorch, image_classification_in_tensorflow, image_classification_with_vision_transformers, building_a_pictionary_app, create_your_own_friends_with_a_gan + """ + + def __init__( + self, + value: str | _Image.Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] | None = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "upload", + tool: str | None = None, + type: str = "numpy", + label: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + mirror_webcam: bool = True, + brush_radius: int | None = None, + **kwargs, + ): + """ + Parameters: + value: A PIL Image, numpy array, path or URL for the default value that Image component is going to take. If callable, the function will be called whenever the app loads to set the initial value of the component. + shape: (width, height) shape to crop and resize image to; if None, matches input image size. Pass None for either width or height to only crop and resize the other. + image_mode: "RGB" if color, or "L" if black and white. + invert_colors: whether to invert the image as a preprocessing step. + source: Source of image. "upload" creates a box where user can drop an image file, "webcam" allows user to take snapshot from their webcam, "canvas" defaults to a white image that can be edited and drawn upon with tools. + tool: Tools used for editing. "editor" allows a full screen editor (and is the default if source is "upload" or "webcam"), "select" provides a cropping and zoom tool, "sketch" allows you to create a binary sketch (and is the default if source="canvas"), and "color-sketch" allows you to created a sketch in different colors. "color-sketch" can be used with source="upload" or "webcam" to allow sketching on an image. "sketch" can also be used with "upload" or "webcam" to create a mask over an image and in that case both the image and mask are passed into the function as a dictionary with keys "image" and "mask" respectively. + type: The format the image is converted to before being passed into the prediction function. "numpy" converts the image to a numpy array with shape (width, height, 3) and values from 0 to 255, "pil" converts the image to a PIL image object, "filepath" passes a str path to a temporary file containing the image. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will allow users to upload and edit an image; if False, can only be used to display images. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + streaming: If True when used in a `live` interface, will automatically stream webcam feed. Only valid is source is 'webcam'. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + mirror_webcam: If True webcam will be mirrored. Default is True. + brush_radius: Size of the brush for Sketch. Default is None which chooses a sensible default + """ + self.brush_radius = brush_radius + self.mirror_webcam = mirror_webcam + valid_types = ["numpy", "pil", "filepath"] + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + self.type = type + self.shape = shape + self.image_mode = image_mode + valid_sources = ["upload", "webcam", "canvas"] + if source not in valid_sources: + raise ValueError( + f"Invalid value for parameter `source`: {source}. Please choose from one of: {valid_sources}" + ) + self.source = source + if tool is None: + self.tool = "sketch" if source == "canvas" else "editor" + else: + self.tool = tool + self.invert_colors = invert_colors + self.test_input = deepcopy(media_data.BASE64_IMAGE) + self.streaming = streaming + if streaming and source != "webcam": + raise ValueError("Image streaming only available if source is 'webcam'.") + + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + TokenInterpretable.__init__(self) + + def get_config(self): + return { + "image_mode": self.image_mode, + "shape": self.shape, + "source": self.source, + "tool": self.tool, + "value": self.value, + "streaming": self.streaming, + "mirror_webcam": self.mirror_webcam, + "brush_radius": self.brush_radius, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + brush_radius: int | None = None, + ): + return { + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "brush_radius": brush_radius, + "interactive": interactive, + "__type__": "update", + } + + def _format_image( + self, im: _Image.Image | None + ) -> np.ndarray | _Image.Image | str | None: + """Helper method to format an image based on self.type""" + if im is None: + return im + fmt = im.format + if self.type == "pil": + return im + elif self.type == "numpy": + return np.array(im) + elif self.type == "filepath": + file_obj = tempfile.NamedTemporaryFile( + delete=False, + suffix=("." + fmt.lower() if fmt is not None else ".png"), + ) + im.save(file_obj.name) + return file_obj.name + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'numpy', 'pil', 'filepath'." + ) + + def preprocess( + self, x: str | Dict[str, str] + ) -> np.ndarray | _Image.Image | str | Dict | None: + """ + Parameters: + x: base64 url data, or (if tool == "sketch") a dict of image and mask base64 url data + Returns: + image in requested format, or (if tool == "sketch") a dict of image and mask in requested format + """ + if x is None: + return x + + mask = "" + if self.tool == "sketch" and self.source in ["upload", "webcam"]: + assert isinstance(x, dict) + x, mask = x["image"], x["mask"] + + assert isinstance(x, str) + im = processing_utils.decode_base64_to_image(x) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + im = im.convert(self.image_mode) + if self.shape is not None: + im = processing_utils.resize_and_crop(im, self.shape) + if self.invert_colors: + im = PIL.ImageOps.invert(im) + if ( + self.source == "webcam" + and self.mirror_webcam is True + and self.tool != "color-sketch" + ): + im = PIL.ImageOps.mirror(im) + + if self.tool == "sketch" and self.source in ["upload", "webcam"]: + mask_im = processing_utils.decode_base64_to_image(mask) + return { + "image": self._format_image(im), + "mask": self._format_image(mask_im), + } + + return self._format_image(im) + + def postprocess( + self, y: np.ndarray | _Image.Image | str | Path | None + ) -> str | None: + """ + Parameters: + y: image as a numpy array, PIL Image, string/Path filepath, or string URL + Returns: + base64 url data + """ + if y is None: + return None + if isinstance(y, np.ndarray): + return processing_utils.encode_array_to_base64(y) + elif isinstance(y, _Image.Image): + return processing_utils.encode_pil_to_base64(y) + elif isinstance(y, (str, Path)): + return processing_utils.encode_url_or_file_to_base64(y) + else: + raise ValueError("Cannot process this value as an Image") + + def set_interpret_parameters(self, segments: int = 16): + """ + Calculates interpretation score of image subsections by splitting the image into subsections, then using a "leave one out" method to calculate the score of each subsection by whiting out the subsection and measuring the delta of the output value. + Parameters: + segments: Number of interpretation segments to split image into. + """ + self.interpretation_segments = segments + return self + + def _segment_by_slic(self, x): + """ + Helper method that segments an image into superpixels using slic. + Parameters: + x: base64 representation of an image + """ + x = processing_utils.decode_base64_to_image(x) + if self.shape is not None: + x = processing_utils.resize_and_crop(x, self.shape) + resized_and_cropped_image = np.array(x) + try: + from skimage.segmentation import slic + except (ImportError, ModuleNotFoundError): + raise ValueError( + "Error: running this interpretation for images requires scikit-image, please install it first." + ) + try: + segments_slic = slic( + resized_and_cropped_image, + self.interpretation_segments, + compactness=10, + sigma=1, + start_label=1, + ) + except TypeError: # For skimage 0.16 and older + segments_slic = slic( + resized_and_cropped_image, + self.interpretation_segments, + compactness=10, + sigma=1, + ) + return segments_slic, resized_and_cropped_image + + def tokenize(self, x): + """ + Segments image into tokens, masks, and leave-one-out-tokens + Parameters: + x: base64 representation of an image + Returns: + tokens: list of tokens, used by the get_masked_input() method + leave_one_out_tokens: list of left-out tokens, used by the get_interpretation_neighbors() method + masks: list of masks, used by the get_interpretation_neighbors() method + """ + segments_slic, resized_and_cropped_image = self._segment_by_slic(x) + tokens, masks, leave_one_out_tokens = [], [], [] + replace_color = np.mean(resized_and_cropped_image, axis=(0, 1)) + for (i, segment_value) in enumerate(np.unique(segments_slic)): + mask = segments_slic == segment_value + image_screen = np.copy(resized_and_cropped_image) + image_screen[segments_slic == segment_value] = replace_color + leave_one_out_tokens.append( + processing_utils.encode_array_to_base64(image_screen) + ) + token = np.copy(resized_and_cropped_image) + token[segments_slic != segment_value] = 0 + tokens.append(token) + masks.append(mask) + return tokens, leave_one_out_tokens, masks + + def get_masked_inputs(self, tokens, binary_mask_matrix): + masked_inputs = [] + for binary_mask_vector in binary_mask_matrix: + masked_input = np.zeros_like(tokens[0], dtype=int) + for token, b in zip(tokens, binary_mask_vector): + masked_input = masked_input + token * int(b) + masked_inputs.append(processing_utils.encode_array_to_base64(masked_input)) + return masked_inputs + + def get_interpretation_scores( + self, x, neighbors, scores, masks, tokens=None, **kwargs + ) -> List[List[float]]: + """ + Returns: + A 2D array representing the interpretation score of each pixel of the image. + """ + x = processing_utils.decode_base64_to_image(x) + if self.shape is not None: + x = processing_utils.resize_and_crop(x, self.shape) + x = np.array(x) + output_scores = np.zeros((x.shape[0], x.shape[1])) + + for score, mask in zip(scores, masks): + output_scores += score * mask + + max_val, min_val = np.max(output_scores), np.min(output_scores) + if max_val > 0: + output_scores = (output_scores - min_val) / (max_val - min_val) + return output_scores.tolist() + + def style(self, *, height: int | None = None, width: int | None = None, **kwargs): + """ + This method can be used to change the appearance of the Image component. + Parameters: + height: Height of the image. + width: Width of the image. + """ + self._style["height"] = height + self._style["width"] = width + Component.style( + self, + **kwargs, + ) + return self + + def stream( + self, + fn: Callable, + inputs: List[Component], + outputs: List[Component], + _js: str | None = None, + api_name: str | None = None, + preprocess: bool = True, + postprocess: bool = True, + ): + """ + This event is triggered when the user streams the component (e.g. a live webcam + component) + Parameters: + fn: Callable function + inputs: List of inputs + outputs: List of outputs + """ + # js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components. + if self.source != "webcam": + raise ValueError("Image streaming only available if source is 'webcam'.") + super().stream( + fn, + inputs, + outputs, + _js=_js, + api_name=api_name, + preprocess=preprocess, + postprocess=postprocess, + ) + + def as_example(self, input_data: str | None) -> str: + if input_data is None: + return "" + elif ( + self.root_url + ): # If an externally hosted image, don't convert to absolute path + return input_data + return str(utils.abspath(input_data)) + + +@document("style") +class Video( + Changeable, + Clearable, + Playable, + Uploadable, + IOComponent, + FileSerializable, + TempFileManager, +): + """ + Creates a video component that can be used to upload/record videos (as an input) or display videos (as an output). + For the video to be playable in the browser it must have a compatible container and codec combination. Allowed + combinations are .mp4 with h264 codec, .ogg with theora codec, and .webm with vp9 codec. If the component detects + that the output video would not be playable in the browser it will attempt to convert it to a playable mp4 video. + If the conversion fails, the original video is returned. + Preprocessing: passes the uploaded video as a {str} filepath or URL whose extension can be modified by `format`. + Postprocessing: expects a {str} filepath to a video which is displayed. + Examples-format: a {str} filepath to a local file that contains the video. + Demos: video_identity + """ + + def __init__( + self, + value: str | Callable | None = None, + *, + format: str | None = None, + source: str = "upload", + label: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + mirror_webcam: bool = True, + include_audio: bool | None = None, + **kwargs, + ): + """ + Parameters: + value: A path or URL for the default value that Video component is going to take. If callable, the function will be called whenever the app loads to set the initial value of the component. + format: Format of video format to be returned by component, such as 'avi' or 'mp4'. Use 'mp4' to ensure browser playability. If set to None, video will keep uploaded format. + source: Source of video. "upload" creates a box where user can drop an video file, "webcam" allows user to record a video from their webcam. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will allow users to upload a video; if False, can only be used to display videos. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + mirror_webcam: If True webcam will be mirrored. Default is True. + include_audio: Whether the component should record/retain the audio track for a video. By default, audio is excluded for webcam videos and included for uploaded videos. + """ + self.format = format + valid_sources = ["upload", "webcam"] + if source not in valid_sources: + raise ValueError( + f"Invalid value for parameter `source`: {source}. Please choose from one of: {valid_sources}" + ) + self.source = source + self.mirror_webcam = mirror_webcam + self.include_audio = ( + include_audio if include_audio is not None else source == "upload" + ) + TempFileManager.__init__(self) + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "source": self.source, + "value": self.value, + "mirror_webcam": self.mirror_webcam, + "include_audio": self.include_audio, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + source: str | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "source": source, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: Dict[str, str] | None) -> str | None: + """ + Parameters: + x: a dictionary with the following keys: 'name' (containing the file path to a video), 'data' (with either the file URL or base64 representation of the video), and 'is_file` (True if `data` contains the file URL). + Returns: + a string file path to the preprocessed video + """ + if x is None: + return x + + file_name, file_data, is_file = ( + x["name"], + x["data"], + x.get("is_file", False), + ) + if is_file: + file_name = Path(self.make_temp_copy_if_needed(file_name)) + else: + file_name = Path(self.base64_to_temp_file_if_needed(file_data, file_name)) + + uploaded_format = file_name.suffix.replace(".", "") + modify_format = self.format is not None and uploaded_format != self.format + flip = self.source == "webcam" and self.mirror_webcam + if modify_format or flip: + format = f".{self.format if modify_format else uploaded_format}" + output_options = ["-vf", "hflip", "-c:a", "copy"] if flip else [] + output_options += ["-an"] if not self.include_audio else [] + flip_suffix = "_flip" if flip else "" + output_file_name = str( + file_name.with_name(f"{file_name.stem}{flip_suffix}{format}") + ) + if Path(output_file_name).exists(): + return output_file_name + ff = FFmpeg( + inputs={str(file_name): None}, + outputs={output_file_name: output_options}, + ) + ff.run() + return output_file_name + elif not self.include_audio: + output_file_name = str(file_name.with_name(f"muted_{file_name.name}")) + ff = FFmpeg( + inputs={str(file_name): None}, + outputs={output_file_name: ["-an"]}, + ) + ff.run() + return output_file_name + else: + return str(file_name) + + def postprocess(self, y: str | None) -> Dict[str, Any] | None: + """ + Processes a video to ensure that it is in the correct format before + returning it to the front end. + Parameters: + y: a path or URL to the video file + Returns: + a dictionary with the following keys: 'name' (containing the file path + to a temporary copy of the video), 'data' (None), and 'is_file` (True). + """ + if y is None: + return None + + returned_format = y.split(".")[-1].lower() + + if self.format is None or returned_format == self.format: + conversion_needed = False + else: + conversion_needed = True + + # For cases where the video is a URL and does not need to be converted to another format, we can just return the URL + if utils.validate_url(y) and not (conversion_needed): + return {"name": y, "data": None, "is_file": True} + + # For cases where the video needs to be converted to another format + if utils.validate_url(y): + y = self.download_temp_copy_if_needed(y) + if ( + processing_utils.ffmpeg_installed() + and not processing_utils.video_is_playable(y) + ): + warnings.warn( + "Video does not have browser-compatible container or codec. Converting to mp4" + ) + y = processing_utils.convert_video_to_playable_mp4(y) + if self.format is not None and returned_format != self.format: + output_file_name = y[0 : y.rindex(".") + 1] + self.format + ff = FFmpeg(inputs={y: None}, outputs={output_file_name: None}) + ff.run() + y = output_file_name + + y = self.make_temp_copy_if_needed(y) + return {"name": y, "data": None, "is_file": True} + + def style(self, *, height: int | None = None, width: int | None = None, **kwargs): + """ + This method can be used to change the appearance of the video component. + Parameters: + height: Height of the video. + width: Width of the video. + """ + self._style["height"] = height + self._style["width"] = width + Component.style( + self, + **kwargs, + ) + return self + + +@document("style") +class Audio( + Changeable, + Clearable, + Playable, + Streamable, + Uploadable, + IOComponent, + FileSerializable, + TempFileManager, + TokenInterpretable, +): + """ + Creates an audio component that can be used to upload/record audio (as an input) or display audio (as an output). + Preprocessing: passes the uploaded audio as a {Tuple(int, numpy.array)} corresponding to (sample rate, data) or as a {str} filepath, depending on `type` + Postprocessing: expects a {Tuple(int, numpy.array)} corresponding to (sample rate, data) or as a {str} filepath or URL to an audio file, which gets displayed + Examples-format: a {str} filepath to a local file that contains audio. + Demos: main_note, generate_tone, reverse_audio + Guides: real_time_speech_recognition + """ + + def __init__( + self, + value: str | Tuple[int, np.ndarray] | Callable | None = None, + *, + source: str = "upload", + type: str = "numpy", + label: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: A path, URL, or [sample_rate, numpy array] tuple for the default value that Audio component is going to take. If callable, the function will be called whenever the app loads to set the initial value of the component. + source: Source of audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. + type: The format the audio file is converted to before being passed into the prediction function. "numpy" converts the audio to a tuple consisting of: (int sample rate, numpy.array for the data), "filepath" passes a str path to a temporary file containing the audio. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will allow users to upload and edit a audio file; if False, can only be used to play audio. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + streaming: If set to True when used in a `live` interface, will automatically stream webcam feed. Only valid is source is 'microphone'. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + valid_sources = ["upload", "microphone"] + if source not in valid_sources: + raise ValueError( + f"Invalid value for parameter `source`: {source}. Please choose from one of: {valid_sources}" + ) + self.source = source + valid_types = ["numpy", "filepath"] + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + self.type = type + self.test_input = deepcopy(media_data.BASE64_AUDIO) + self.streaming = streaming + if streaming and source != "microphone": + raise ValueError( + "Audio streaming only available if source is 'microphone'." + ) + TempFileManager.__init__(self) + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + TokenInterpretable.__init__(self) + + def get_config(self): + return { + "source": self.source, + "value": self.value, + "streaming": self.streaming, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + source: str | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "source": source, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess( + self, x: Dict[str, Any] | None + ) -> Tuple[int, np.ndarray] | str | None: + """ + Parameters: + x: dictionary with keys "name", "data", "is_file", "crop_min", "crop_max". + Returns: + audio in requested format + """ + if x is None: + return x + file_name, file_data, is_file = ( + x["name"], + x["data"], + x.get("is_file", False), + ) + crop_min, crop_max = x.get("crop_min", 0), x.get("crop_max", 100) + if is_file: + if utils.validate_url(file_name): + temp_file_path = self.download_temp_copy_if_needed(file_name) + else: + temp_file_path = self.make_temp_copy_if_needed(file_name) + else: + temp_file_path = self.base64_to_temp_file_if_needed(file_data, file_name) + + sample_rate, data = processing_utils.audio_from_file( + temp_file_path, crop_min=crop_min, crop_max=crop_max + ) + + # Need a unique name for the file to avoid re-using the same audio file if + # a user submits the same audio file twice, but with different crop min/max. + temp_file_path = Path(temp_file_path) + output_file_name = str( + temp_file_path.with_name( + f"{temp_file_path.stem}-{crop_min}-{crop_max}{temp_file_path.suffix}" + ) + ) + + if self.type == "numpy": + return sample_rate, data + elif self.type == "filepath": + processing_utils.audio_to_file(sample_rate, data, output_file_name) + return output_file_name + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'numpy', 'filepath'." + ) + + def set_interpret_parameters(self, segments: int = 8): + """ + Calculates interpretation score of audio subsections by splitting the audio into subsections, then using a "leave one out" method to calculate the score of each subsection by removing the subsection and measuring the delta of the output value. + Parameters: + segments: Number of interpretation segments to split audio into. + """ + self.interpretation_segments = segments + return self + + def tokenize(self, x): + if x.get("is_file"): + sample_rate, data = processing_utils.audio_from_file(x["name"]) + else: + file_name = self.base64_to_temp_file_if_needed(x["data"]) + sample_rate, data = processing_utils.audio_from_file(file_name) + leave_one_out_sets = [] + tokens = [] + masks = [] + duration = data.shape[0] + boundaries = np.linspace(0, duration, self.interpretation_segments + 1).tolist() + boundaries = [round(boundary) for boundary in boundaries] + for index in range(len(boundaries) - 1): + start, stop = boundaries[index], boundaries[index + 1] + masks.append((start, stop)) + + # Handle the leave one outs + leave_one_out_data = np.copy(data) + leave_one_out_data[start:stop] = 0 + file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav") + processing_utils.audio_to_file(sample_rate, leave_one_out_data, file.name) + out_data = processing_utils.encode_file_to_base64(file.name) + leave_one_out_sets.append(out_data) + file.close() + Path(file.name).unlink() + + # Handle the tokens + token = np.copy(data) + token[0:start] = 0 + token[stop:] = 0 + file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav") + processing_utils.audio_to_file(sample_rate, token, file.name) + token_data = processing_utils.encode_file_to_base64(file.name) + file.close() + Path(file.name).unlink() + + tokens.append(token_data) + tokens = [{"name": "token.wav", "data": token} for token in tokens] + leave_one_out_sets = [ + {"name": "loo.wav", "data": loo_set} for loo_set in leave_one_out_sets + ] + return tokens, leave_one_out_sets, masks + + def get_masked_inputs(self, tokens, binary_mask_matrix): + # create a "zero input" vector and get sample rate + x = tokens[0]["data"] + file_name = self.base64_to_temp_file_if_needed(x) + sample_rate, data = processing_utils.audio_from_file(file_name) + zero_input = np.zeros_like(data, dtype="int16") + # decode all of the tokens + token_data = [] + for token in tokens: + file_name = self.base64_to_temp_file_if_needed(token["data"]) + _, data = processing_utils.audio_from_file(file_name) + token_data.append(data) + # construct the masked version + masked_inputs = [] + for binary_mask_vector in binary_mask_matrix: + masked_input = np.copy(zero_input) + for t, b in zip(token_data, binary_mask_vector): + masked_input = masked_input + t * int(b) + file = tempfile.NamedTemporaryFile(delete=False) + processing_utils.audio_to_file(sample_rate, masked_input, file.name) + masked_data = processing_utils.encode_file_to_base64(file.name) + file.close() + Path(file.name).unlink() + masked_inputs.append(masked_data) + return masked_inputs + + def postprocess(self, y: Tuple[int, np.ndarray] | str | None) -> str | Dict | None: + """ + Parameters: + y: audio data in either of the following formats: a tuple of (sample_rate, data), or a string filepath or URL to an audio file, or None. + Returns: + base64 url data + """ + if y is None: + return None + if isinstance(y, str) and utils.validate_url(y): + return {"name": y, "data": None, "is_file": True} + if isinstance(y, tuple): + sample_rate, data = y + file = tempfile.NamedTemporaryFile(suffix=".wav", delete=False) + processing_utils.audio_to_file(sample_rate, data, file.name) + file_path = str(utils.abspath(file.name)) + self.temp_files.add(file_path) + else: + file_path = self.make_temp_copy_if_needed(y) + return {"name": file_path, "data": None, "is_file": True} + + def stream( + self, + fn: Callable, + inputs: List[Component], + outputs: List[Component], + _js: str | None = None, + api_name: str | None = None, + preprocess: bool = True, + postprocess: bool = True, + ): + """ + This event is triggered when the user streams the component (e.g. a live webcam + component) + Parameters: + fn: Callable function + inputs: List of inputs + outputs: List of outputs + """ + # _js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components. + if self.source != "microphone": + raise ValueError( + "Audio streaming only available if source is 'microphone'." + ) + super().stream( + fn, + inputs, + outputs, + _js=_js, + api_name=api_name, + preprocess=preprocess, + postprocess=postprocess, + ) + + def style( + self, + **kwargs, + ): + """ + This method can be used to change the appearance of the audio component. + """ + Component.style( + self, + **kwargs, + ) + return self + + def as_example(self, input_data: str | None) -> str: + return Path(input_data).name if input_data else "" + + +@document("style") +class File( + Changeable, + Selectable, + Clearable, + Uploadable, + IOComponent, + FileSerializable, + TempFileManager, +): + """ + Creates a file component that allows uploading generic file (when used as an input) and or displaying generic files (output). + Preprocessing: passes the uploaded file as a {file-object} or {List[file-object]} depending on `file_count` (or a {bytes}/{List{bytes}} depending on `type`) + Postprocessing: expects function to return a {str} path to a file, or {List[str]} consisting of paths to files. + Examples-format: a {str} path to a local file that populates the component. + Demos: zip_to_json, zip_files + """ + + def __init__( + self, + value: str | List[str] | Callable | None = None, + *, + file_count: str = "single", + file_types: List[str] | None = None, + type: str = "file", + label: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default file to display, given as str file path. If callable, the function will be called whenever the app loads to set the initial value of the component. + file_count: if single, allows user to upload one file. If "multiple", user uploads multiple files. If "directory", user uploads all files in selected directory. Return type will be list for each file in case of "multiple" or "directory". + file_types: List of file extensions or types of files to be uploaded (e.g. ['image', '.json', '.mp4']). "file" allows any file to be uploaded, "image" allows only image files to be uploaded, "audio" allows only audio files to be uploaded, "video" allows only video files to be uploaded, "text" allows only text files to be uploaded. + type: Type of value to be returned by component. "file" returns a temporary file object with the same base name as the uploaded file, whose full path can be retrieved by file_obj.name, "binary" returns an bytes object. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will allow users to upload a file; if False, can only be used to display files. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.file_count = file_count + self.file_types = file_types + if file_types is not None and not isinstance(file_types, list): + raise ValueError( + f"Parameter file_types must be a list. Received {file_types.__class__.__name__}" + ) + valid_types = [ + "file", + "binary", + "bytes", + ] # "bytes" is included for backwards compatibility + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + if type == "bytes": + warnings.warn( + "The `bytes` type is deprecated and may not work as expected. Please use `binary` instead." + ) + if file_count == "directory" and file_types is not None: + warnings.warn( + "The `file_types` parameter is ignored when `file_count` is 'directory'." + ) + self.type = type + self.test_input = None + self.select: EventListenerMethod + """ + Event listener for when the user selects file from list. + Uses event data gradio.SelectData to carry `value` referring to name of selected file, and `index` to refer to index. + See EventData documentation on how to use this event data. + """ + TempFileManager.__init__(self) + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "file_count": self.file_count, + "file_types": self.file_types, + "value": self.value, + "selectable": self.selectable, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess( + self, x: List[Dict[str, Any]] | None + ) -> bytes | tempfile._TemporaryFileWrapper | List[ + bytes | tempfile._TemporaryFileWrapper + ] | None: + """ + Parameters: + x: List of JSON objects with filename as 'name' property and base64 data as 'data' property + Returns: + File objects in requested format + """ + if x is None: + return None + + def process_single_file(f) -> bytes | tempfile._TemporaryFileWrapper: + file_name, data, is_file = ( + f["name"], + f["data"], + f.get("is_file", False), + ) + if self.type == "file": + if is_file: + temp_file_path = self.make_temp_copy_if_needed(file_name) + file = tempfile.NamedTemporaryFile(delete=False) + file.name = temp_file_path + file.orig_name = file_name # type: ignore + else: + file = processing_utils.decode_base64_to_file( + data, file_path=file_name + ) + file.orig_name = file_name # type: ignore + self.temp_files.add(str(utils.abspath(file.name))) + return file + elif ( + self.type == "binary" or self.type == "bytes" + ): # "bytes" is included for backwards compatibility + if is_file: + with open(file_name, "rb") as file_data: + return file_data.read() + return processing_utils.decode_base64_to_binary(data)[0] + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'file', 'bytes'." + ) + + if self.file_count == "single": + if isinstance(x, list): + return process_single_file(x[0]) + else: + return process_single_file(x) + else: + if isinstance(x, list): + return [process_single_file(f) for f in x] + else: + return process_single_file(x) + + def postprocess( + self, y: str | List[str] | None + ) -> Dict[str, Any] | List[Dict[str, Any]] | None: + """ + Parameters: + y: file path + Returns: + JSON object with key 'name' for filename, 'data' for base64 url, and 'size' for filesize in bytes + """ + if y is None: + return None + if isinstance(y, list): + return [ + { + "orig_name": Path(file).name, + "name": self.make_temp_copy_if_needed(file), + "size": Path(file).stat().st_size, + "data": None, + "is_file": True, + } + for file in y + ] + else: + return { + "orig_name": Path(y).name, + "name": self.make_temp_copy_if_needed(y), + "size": Path(y).stat().st_size, + "data": None, + "is_file": True, + } + + def serialize(self, x: str | None, load_dir: str = "") -> Dict | None: + serialized = FileSerializable.serialize(self, x, load_dir) + if serialized is None: + return None + serialized["size"] = Path(serialized["name"]).stat().st_size + return serialized + + def style( + self, + **kwargs, + ): + """ + This method can be used to change the appearance of the file component. + """ + Component.style( + self, + **kwargs, + ) + return self + + def as_example(self, input_data: str | List | None) -> str: + if input_data is None: + return "" + elif isinstance(input_data, list): + return ", ".join([Path(file).name for file in input_data]) + else: + return Path(input_data).name + + +@document("style") +class Dataframe(Changeable, Selectable, IOComponent, JSONSerializable): + """ + Accepts or displays 2D input through a spreadsheet-like component for dataframes. + Preprocessing: passes the uploaded spreadsheet data as a {pandas.DataFrame}, {numpy.array}, {List[List]}, or {List} depending on `type` + Postprocessing: expects a {pandas.DataFrame}, {numpy.array}, {List[List]}, {List}, a {Dict} with keys `data` (and optionally `headers`), or {str} path to a csv, which is rendered in the spreadsheet. + Examples-format: a {str} filepath to a csv with data, a pandas dataframe, or a list of lists (excluding headers) where each sublist is a row of data. + Demos: filter_records, matrix_transpose, tax_calculator + """ + + markdown_parser = None + + def __init__( + self, + value: List[List[Any]] | Callable | None = None, + *, + headers: List[str] | None = None, + row_count: int | Tuple[int, str] = (1, "dynamic"), + col_count: int | Tuple[int, str] | None = None, + datatype: str | List[str] = "str", + type: str = "pandas", + max_rows: int | None = 20, + max_cols: int | None = None, + overflow_row_behaviour: str = "paginate", + label: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + wrap: bool = False, + **kwargs, + ): + """ + Parameters: + value: Default value as a 2-dimensional list of values. If callable, the function will be called whenever the app loads to set the initial value of the component. + headers: List of str header names. If None, no headers are shown. + row_count: Limit number of rows for input and decide whether user can create new rows. The first element of the tuple is an `int`, the row count; the second should be 'fixed' or 'dynamic', the new row behaviour. If an `int` is passed the rows default to 'dynamic' + col_count: Limit number of columns for input and decide whether user can create new columns. The first element of the tuple is an `int`, the number of columns; the second should be 'fixed' or 'dynamic', the new column behaviour. If an `int` is passed the columns default to 'dynamic' + datatype: Datatype of values in sheet. Can be provided per column as a list of strings, or for the entire sheet as a single string. Valid datatypes are "str", "number", "bool", "date", and "markdown". + type: Type of value to be returned by component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for a Python array. + label: component name in interface. + max_rows: Maximum number of rows to display at once. Set to None for infinite. + max_cols: Maximum number of columns to display at once. Set to None for infinite. + overflow_row_behaviour: If set to "paginate", will create pages for overflow rows. If set to "show_ends", will show initial and final rows and truncate middle rows. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will allow users to edit the dataframe; if False, can only be used to display data. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + wrap: if True text in table cells will wrap when appropriate, if False the table will scroll horiztonally. Defaults to False. + """ + + self.wrap = wrap + self.row_count = self.__process_counts(row_count) + self.col_count = self.__process_counts( + col_count, len(headers) if headers else 3 + ) + + self.__validate_headers(headers, self.col_count[0]) + + self.headers = ( + headers if headers is not None else list(range(1, self.col_count[0] + 1)) + ) + self.datatype = ( + datatype if isinstance(datatype, list) else [datatype] * self.col_count[0] + ) + valid_types = ["pandas", "numpy", "array"] + if type not in valid_types: + raise ValueError( + f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}" + ) + self.type = type + values = { + "str": "", + "number": 0, + "bool": False, + "date": "01/01/1970", + "markdown": "", + "html": "", + } + column_dtypes = ( + [datatype] * self.col_count[0] if isinstance(datatype, str) else datatype + ) + self.test_input = [ + [values[c] for c in column_dtypes] for _ in range(self.row_count[0]) + ] + + self.max_rows = max_rows + self.max_cols = max_cols + self.overflow_row_behaviour = overflow_row_behaviour + self.select: EventListenerMethod + """ + Event listener for when the user selects cell within Dataframe. + Uses event data gradio.SelectData to carry `value` referring to value of selected cell, and `index` tuple to refer to index row and column. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "headers": self.headers, + "datatype": self.datatype, + "row_count": self.row_count, + "col_count": self.col_count, + "value": self.value, + "max_rows": self.max_rows, + "max_cols": self.max_cols, + "overflow_row_behaviour": self.overflow_row_behaviour, + "wrap": self.wrap, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + max_rows: int | None = None, + max_cols: str | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "max_rows": max_rows, + "max_cols": max_cols, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: DataframeData): + """ + Parameters: + x: 2D array of str, numeric, or bool data + Returns: + Dataframe in requested format + """ + if self.type == "pandas": + if x.get("headers") is not None: + return pd.DataFrame(x["data"], columns=x.get("headers")) + else: + return pd.DataFrame(x["data"]) + if self.type == "numpy": + return np.array(x["data"]) + elif self.type == "array": + return x["data"] + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'pandas', 'numpy', 'array'." + ) + + def postprocess( + self, y: str | pd.DataFrame | np.ndarray | List[List[str | float]] | Dict + ) -> Dict: + """ + Parameters: + y: dataframe in given format + Returns: + JSON object with key 'headers' for list of header names, 'data' for 2D array of string or numeric data + """ + if y is None: + return self.postprocess(self.test_input) + if isinstance(y, dict): + return y + if isinstance(y, str): + dataframe = pd.read_csv(y) + return { + "headers": list(dataframe.columns), + "data": Dataframe.__process_markdown( + dataframe.to_dict(orient="split")["data"], self.datatype + ), + } + if isinstance(y, pd.DataFrame): + return { + "headers": list(y.columns), # type: ignore + "data": Dataframe.__process_markdown( + y.to_dict(orient="split")["data"], self.datatype # type: ignore + ), + } + if isinstance(y, (np.ndarray, list)): + if isinstance(y, np.ndarray): + y = y.tolist() + assert isinstance(y, list), "output cannot be converted to list" + + _headers = self.headers + + if len(self.headers) < len(y[0]): + _headers = [ + *self.headers, + *list(range(len(self.headers) + 1, len(y[0]) + 1)), + ] + elif len(self.headers) > len(y[0]): + _headers = self.headers[: len(y[0])] + + return { + "headers": _headers, + "data": Dataframe.__process_markdown(y, self.datatype), + } + raise ValueError("Cannot process value as a Dataframe") + + @staticmethod + def __process_counts(count, default=3) -> Tuple[int, str]: + if count is None: + return (default, "dynamic") + if type(count) == int or type(count) == float: + return (int(count), "dynamic") + else: + return count + + @staticmethod + def __validate_headers(headers: List[str] | None, col_count: int): + if headers is not None and len(headers) != col_count: + raise ValueError( + "The length of the headers list must be equal to the col_count int.\nThe column count is set to {cols} but `headers` has {headers} items. Check the values passed to `col_count` and `headers`.".format( + cols=col_count, headers=len(headers) + ) + ) + + @classmethod + def __process_markdown(cls, data: List[List[Any]], datatype: List[str]): + if "markdown" not in datatype: + return data + + if cls.markdown_parser is None: + cls.markdown_parser = utils.get_markdown_parser() + + for i in range(len(data)): + for j in range(len(data[i])): + if datatype[j] == "markdown": + data[i][j] = cls.markdown_parser.render(data[i][j]) + + return data + + def style( + self, + **kwargs, + ): + """ + This method can be used to change the appearance of the DataFrame component. + """ + Component.style( + self, + **kwargs, + ) + return self + + def as_example(self, input_data: pd.DataFrame | np.ndarray | str | None): + if input_data is None: + return "" + elif isinstance(input_data, pd.DataFrame): + return input_data.head(n=5).to_dict(orient="split")["data"] # type: ignore + elif isinstance(input_data, np.ndarray): + return input_data.tolist() + return input_data + + +@document("style") +class Timeseries(Changeable, IOComponent, JSONSerializable): + """ + Creates a component that can be used to upload/preview timeseries csv files or display a dataframe consisting of a time series graphically. + Preprocessing: passes the uploaded timeseries data as a {pandas.DataFrame} into the function + Postprocessing: expects a {pandas.DataFrame} or {str} path to a csv to be returned, which is then displayed as a timeseries graph + Examples-format: a {str} filepath of csv data with time series data. + Demos: fraud_detector + """ + + def __init__( + self, + value: str | Callable | None = None, + *, + x: str | None = None, + y: str | List[str] | None = None, + colors: List[str] | None = None, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: File path for the timeseries csv file. If callable, the function will be called whenever the app loads to set the initial value of the component. + x: Column name of x (time) series. None if csv has no headers, in which case first column is x series. + y: Column name of y series, or list of column names if multiple series. None if csv has no headers, in which case every column after first is a y series. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + colors: an ordered list of colors to use for each line plot + show_label: if True, will display label. + interactive: if True, will allow users to upload a timeseries csv; if False, can only be used to display timeseries data. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.x = x + if isinstance(y, str): + y = [y] + self.y = y + self.colors = colors + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "x": self.x, + "y": self.y, + "value": self.value, + "colors": self.colors, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + colors: List[str] | None = None, + label: str | None = None, + show_label: bool | None = None, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "colors": colors, + "label": label, + "show_label": show_label, + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: Dict | None) -> pd.DataFrame | None: + """ + Parameters: + x: Dict with keys 'data': 2D array of str, numeric, or bool data, 'headers': list of strings for header names, 'range': optional two element list designating start of end of subrange. + Returns: + Dataframe of timeseries data + """ + if x is None: + return x + elif x.get("is_file"): + dataframe = pd.read_csv(x["name"]) + else: + dataframe = pd.DataFrame(data=x["data"], columns=x["headers"]) + if x.get("range") is not None: + dataframe = dataframe.loc[dataframe[self.x or 0] >= x["range"][0]] + dataframe = dataframe.loc[dataframe[self.x or 0] <= x["range"][1]] + return dataframe + + def postprocess(self, y: str | pd.DataFrame | None) -> Dict | None: + """ + Parameters: + y: csv or dataframe with timeseries data + Returns: + JSON object with key 'headers' for list of header names, 'data' for 2D array of string or numeric data + """ + if y is None: + return None + if isinstance(y, str): + dataframe = pd.read_csv(y) + return { + "headers": dataframe.columns.values.tolist(), + "data": dataframe.values.tolist(), + } + if isinstance(y, pd.DataFrame): + return {"headers": y.columns.values.tolist(), "data": y.values.tolist()} + raise ValueError("Cannot process value as Timeseries data") + + def style( + self, + **kwargs, + ): + """ + This method can be used to change the appearance of the TimeSeries component. + """ + Component.style( + self, + **kwargs, + ) + return self + + def as_example(self, input_data: str | None) -> str: + return Path(input_data).name if input_data else "" + + +@document() +class State(IOComponent, SimpleSerializable): + """ + Special hidden component that stores session state across runs of the demo by the + same user. The value of the State variable is cleared when the user refreshes the page. + + Preprocessing: No preprocessing is performed + Postprocessing: No postprocessing is performed + Demos: blocks_simple_squares + Guides: creating_a_chatbot, real_time_speech_recognition + """ + + allow_string_shortcut = False + + def __init__( + self, + value: Any = None, + **kwargs, + ): + """ + Parameters: + value: the initial value of the state. If callable, the function will be called whenever the app loads to set the initial value of the component. + """ + self.stateful = True + IOComponent.__init__(self, value=deepcopy(value), **kwargs) + + +class Variable(State): + """Variable was renamed to State. This class is kept for backwards compatibility.""" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def get_block_name(self): + return "state" + + +@document("style") +class Button(Clickable, IOComponent, SimpleSerializable): + """ + Used to create a button, that can be assigned arbitrary click() events. The label (value) of the button can be used as an input or set via the output of a function. + + Preprocessing: passes the button value as a {str} into the function + Postprocessing: expects a {str} to be returned from a function, which is set as the label of the button + Demos: blocks_inputs, blocks_kinematics + """ + + def __init__( + self, + value: str | Callable = "Run", + *, + variant: str = "secondary", + visible: bool = True, + interactive: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default text for the button to display. If callable, the function will be called whenever the app loads to set the initial value of the component. + variant: 'primary' for main call-to-action, 'secondary' for a more subdued style, 'stop' for a stop button. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + IOComponent.__init__( + self, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + interactive=interactive, + **kwargs, + ) + if variant == "plain": + warnings.warn("'plain' variant deprecated, using 'secondary' instead.") + variant = "secondary" + self.variant = variant + + def get_config(self): + return { + "value": self.value, + "variant": self.variant, + "interactive": self.interactive, + **Component.get_config(self), + } + + @staticmethod + def update( + value: str | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + variant: str | None = None, + visible: bool | None = None, + interactive: bool | None = None, + ): + return { + "variant": variant, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def style( + self, + *, + full_width: bool | None = None, + size: Literal["sm"] | Literal["lg"] | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the button component. + Parameters: + full_width: If True, will expand to fill parent container. + size: Size of the button. Can be "sm" or "lg". + """ + if full_width is not None: + self._style["full_width"] = full_width + if size is not None: + self._style["size"] = size + + Component.style(self, **kwargs) + return self + + +@document("style") +class UploadButton( + Clickable, Uploadable, IOComponent, FileSerializable, TempFileManager +): + """ + Used to create an upload button, when cicked allows a user to upload files that satisfy the specified file type or generic files (if file_type not set). + Preprocessing: passes the uploaded file as a {file-object} or {List[file-object]} depending on `file_count` (or a {bytes}/{List{bytes}} depending on `type`) + Postprocessing: expects function to return a {str} path to a file, or {List[str]} consisting of paths to files. + Examples-format: a {str} path to a local file that populates the component. + Demos: upload_button + """ + + def __init__( + self, + label: str = "Upload a File", + value: str | List[str] | Callable | None = None, + *, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + type: str = "file", + file_count: str = "single", + file_types: List[str] | None = None, + **kwargs, + ): + """ + Parameters: + value: Default text for the button to display. + type: Type of value to be returned by component. "file" returns a temporary file object with the same base name as the uploaded file, whose full path can be retrieved by file_obj.name, "binary" returns an bytes object. + file_count: if single, allows user to upload one file. If "multiple", user uploads multiple files. If "directory", user uploads all files in selected directory. Return type will be list for each file in case of "multiple" or "directory". + file_types: List of type of files to be uploaded. "file" allows any file to be uploaded, "image" allows only image files to be uploaded, "audio" allows only audio files to be uploaded, "video" allows only video files to be uploaded, "text" allows only text files to be uploaded. + label: Text to display on the button. Defaults to "Upload a File". + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.type = type + self.file_count = file_count + if file_count == "directory" and file_types is not None: + warnings.warn( + "The `file_types` parameter is ignored when `file_count` is 'directory'." + ) + if file_types is not None and not isinstance(file_types, list): + raise ValueError( + f"Parameter file_types must be a list. Received {file_types.__class__.__name__}" + ) + self.file_types = file_types + self.label = label + TempFileManager.__init__(self) + IOComponent.__init__( + self, + label=label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "label": self.label, + "value": self.value, + "file_count": self.file_count, + "file_types": self.file_types, + **Component.get_config(self), + } + + @staticmethod + def update( + value: str | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + interactive: bool | None = None, + visible: bool | None = None, + ): + return { + "interactive": interactive, + "visible": visible, + "value": value, + "interactive": interactive, + "__type__": "update", + } + + def preprocess( + self, x: List[Dict[str, Any]] | None + ) -> bytes | tempfile._TemporaryFileWrapper | List[ + bytes | tempfile._TemporaryFileWrapper + ] | None: + """ + Parameters: + x: List of JSON objects with filename as 'name' property and base64 data as 'data' property + Returns: + File objects in requested format + """ + if x is None: + return None + + def process_single_file(f) -> bytes | tempfile._TemporaryFileWrapper: + file_name, data, is_file = ( + f["name"], + f["data"], + f.get("is_file", False), + ) + if self.type == "file": + if is_file: + temp_file_path = self.make_temp_copy_if_needed(file_name) + file = tempfile.NamedTemporaryFile(delete=False) + file.name = temp_file_path + file.orig_name = file_name # type: ignore + else: + file = processing_utils.decode_base64_to_file( + data, file_path=file_name + ) + file.orig_name = file_name # type: ignore + self.temp_files.add(str(utils.abspath(file.name))) + return file + elif self.type == "bytes": + if is_file: + with open(file_name, "rb") as file_data: + return file_data.read() + return processing_utils.decode_base64_to_binary(data)[0] + else: + raise ValueError( + "Unknown type: " + + str(self.type) + + ". Please choose from: 'file', 'bytes'." + ) + + if self.file_count == "single": + if isinstance(x, list): + return process_single_file(x[0]) + else: + return process_single_file(x) + else: + if isinstance(x, list): + return [process_single_file(f) for f in x] + else: + return process_single_file(x) + + def serialize(self, x: str | None, load_dir: str = "") -> Dict | None: + serialized = FileSerializable.serialize(self, x, load_dir) + if serialized is None: + return None + serialized["size"] = Path(serialized["name"]).stat().st_size + return serialized + + def style( + self, + *, + full_width: bool | None = None, + size: Literal["sm"] | Literal["lg"] | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the button component. + Parameters: + full_width: If True, will expand to fill parent container. + size: Size of the button. Can be "sm" or "lg". + """ + if full_width is not None: + self._style["full_width"] = full_width + if size is not None: + self._style["size"] = size + + Component.style(self, **kwargs) + return self + + +@document("style") +class ColorPicker(Changeable, Submittable, IOComponent, SimpleSerializable): + """ + Creates a color picker for user to select a color as string input. + Preprocessing: passes selected color value as a {str} into the function. + Postprocessing: expects a {str} returned from function and sets color picker value to it. + Examples-format: a {str} with a hexadecimal representation of a color, e.g. "#ff0000" for red. + Demos: color_picker, color_generator + """ + + def __init__( + self, + value: str | Callable | None = None, + *, + label: str | None = None, + info: str | None = None, + every: float | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: default text to provide in color picker. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + info: additional component description. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + interactive: if True, will be rendered as an editable color picker; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.cleared_value = "#000000" + self.test_input = value + IOComponent.__init__( + self, + label=label, + info=info, + every=every, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: str | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + interactive: bool | None = None, + ): + return { + "value": value, + "label": label, + "show_label": show_label, + "visible": visible, + "interactive": interactive, + "__type__": "update", + } + + def preprocess(self, x: str | None) -> str | None: + """ + Any preprocessing needed to be performed on function input. + Parameters: + x: text + Returns: + text + """ + if x is None: + return None + else: + return str(x) + + def postprocess(self, y: str | None) -> str | None: + """ + Any postprocessing needed to be performed on function output. + Parameters: + y: text + Returns: + text + """ + if y is None: + return None + else: + return str(y) + + +############################ +# Only Output Components +############################ + + +@document("style") +class Label(Changeable, Selectable, IOComponent, JSONSerializable): + """ + Displays a classification label, along with confidence scores of top categories, if provided. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a {Dict[str, float]} of classes and confidences, or {str} with just the class or an {int}/{float} for regression outputs, or a {str} path to a .json file containing a json dictionary in the structure produced by Label.postprocess(). + + Demos: main_note, titanic_survival + Guides: Gradio_and_ONNX_on_Hugging_Face, image_classification_in_pytorch, image_classification_in_tensorflow, image_classification_with_vision_transformers, building_a_pictionary_app + """ + + CONFIDENCES_KEY = "confidences" + + def __init__( + self, + value: Dict[str, float] | str | float | Callable | None = None, + *, + num_top_classes: int | None = None, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + color: str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default value to show in the component. If a str or number is provided, simply displays the string or number. If a {Dict[str, float]} of classes and confidences is provided, displays the top class on top and the `num_top_classes` below, along with their confidence bars. If callable, the function will be called whenever the app loads to set the initial value of the component. + num_top_classes: number of most confident classes to show. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + color: The background color of the label (either a valid css color name or hexadecimal string). + """ + self.num_top_classes = num_top_classes + self.color = color + self.select: EventListenerMethod + """ + Event listener for when the user selects a category from Label. + Uses event data gradio.SelectData to carry `value` referring to name of selected category, and `index` to refer to index. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "num_top_classes": self.num_top_classes, + "value": self.value, + "color": self.color, + "selectable": self.selectable, + **IOComponent.get_config(self), + } + + def postprocess(self, y: Dict[str, float] | str | float | None) -> Dict | None: + """ + Parameters: + y: a dictionary mapping labels to confidence value, or just a string/numerical label by itself + Returns: + Object with key 'label' representing primary label, and key 'confidences' representing a list of label-confidence pairs + """ + if y is None or y == {}: + return None + if isinstance(y, str) and y.endswith(".json") and Path(y).exists(): + return self.serialize(y) + if isinstance(y, (str, float, int)): + return {"label": str(y)} + if isinstance(y, dict): + if "confidences" in y and isinstance(y["confidences"], dict): + y = y["confidences"] + y = {c["label"]: c["confidence"] for c in y} + sorted_pred = sorted(y.items(), key=operator.itemgetter(1), reverse=True) + if self.num_top_classes is not None: + sorted_pred = sorted_pred[: self.num_top_classes] + return { + "label": sorted_pred[0][0], + "confidences": [ + {"label": pred[0], "confidence": pred[1]} for pred in sorted_pred + ], + } + raise ValueError( + "The `Label` output interface expects one of: a string label, or an int label, a " + "float label, or a dictionary whose keys are labels and values are confidences. " + "Instead, got a {}".format(type(y)) + ) + + @staticmethod + def update( + value: Dict[str, float] + | str + | float + | Literal[_Keywords.NO_VALUE] + | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + color: str | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + ): + # If color is not specified (NO_VALUE) map it to None so that + # it gets filtered out in postprocess. This will mean the color + # will not be updated in the front-end + if color is _Keywords.NO_VALUE: + color = None + # If the color was specified by the developer as None + # Map is so that the color is updated to be transparent, + # e.g. no background default state. + elif color is None: + color = "transparent" + return { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "color": color, + "__type__": "update", + } + + def style( + self, + *, + container: bool | None = None, + ): + """ + This method can be used to change the appearance of the label component. + Parameters: + container: If True, will add a container to the label - providing some extra padding around the border. + """ + Component.style(self, container=container) + return self + + +@document("style") +class HighlightedText(Changeable, Selectable, IOComponent, JSONSerializable): + """ + Displays text that contains spans that are highlighted by category or numerical value. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a {List[Tuple[str, float | str]]]} consisting of spans of text and their associated labels, or a {Dict} with two keys: (1) "text" whose value is the complete text, and "entities", which is a list of dictionaries, each of which have the keys: "entity" (consisting of the entity label), "start" (the character index where the label starts), and "end" (the character index where the label ends). Entities should not overlap. + + Demos: diff_texts, text_analysis + Guides: named_entity_recognition + """ + + def __init__( + self, + value: List[Tuple[str, str | float | None]] | Dict | Callable | None = None, + *, + color_map: Dict[str, str] + | None = None, # Parameter moved to HighlightedText.style() + show_legend: bool = False, + combine_adjacent: bool = False, + adjacent_separator: str = "", + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default value to show. If callable, the function will be called whenever the app loads to set the initial value of the component. + show_legend: whether to show span categories in a separate legend or inline. + combine_adjacent: If True, will merge the labels of adjacent tokens belonging to the same category. + adjacent_separator: Specifies the separator to be used between tokens if combine_adjacent is True. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.color_map = color_map + if color_map is not None: + warnings.warn( + "The 'color_map' parameter has been moved from the constructor to `HighlightedText.style()` ", + ) + self.show_legend = show_legend + self.combine_adjacent = combine_adjacent + self.adjacent_separator = adjacent_separator + self.select: EventListenerMethod + """ + Event listener for when the user selects Highlighted text span. + Uses event data gradio.SelectData to carry `value` referring to selected [text, label] tuple, and `index` to refer to span index. + See EventData documentation on how to use this event data. + """ + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "color_map": self.color_map, + "show_legend": self.show_legend, + "value": self.value, + "selectable": self.selectable, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: List[Tuple[str, str | float | None]] + | Dict + | Literal[_Keywords.NO_VALUE] + | None = _Keywords.NO_VALUE, + color_map: Dict[str, str] | None = None, + show_legend: bool | None = None, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "color_map": color_map, + "show_legend": show_legend, + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def postprocess( + self, y: List[Tuple[str, str | float | None]] | Dict | None + ) -> List[Tuple[str, str | float | None]] | None: + """ + Parameters: + y: List of (word, category) tuples + Returns: + List of (word, category) tuples + """ + if y is None: + return None + if isinstance(y, dict): + try: + text = y["text"] + entities = y["entities"] + except KeyError: + raise ValueError( + "Expected a dictionary with keys 'text' and 'entities' for the value of the HighlightedText component." + ) + if len(entities) == 0: + y = [(text, None)] + else: + list_format = [] + index = 0 + entities = sorted(entities, key=lambda x: x["start"]) + for entity in entities: + list_format.append((text[index : entity["start"]], None)) + list_format.append( + (text[entity["start"] : entity["end"]], entity["entity"]) + ) + index = entity["end"] + list_format.append((text[index:], None)) + y = list_format + if self.combine_adjacent: + output = [] + running_text, running_category = None, None + for text, category in y: + if running_text is None: + running_text = text + running_category = category + elif category == running_category: + running_text += self.adjacent_separator + text + elif not text: + # Skip fully empty item, these get added in processing + # of dictionaries. + pass + else: + output.append((running_text, running_category)) + running_text = text + running_category = category + if running_text is not None: + output.append((running_text, running_category)) + return output + else: + return y + + def style( + self, + *, + color_map: Dict[str, str] | None = None, + container: bool | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the HighlightedText component. + Parameters: + color_map: Map between category and respective colors. + container: If True, will place the component in a container - providing some extra padding around the border. + """ + if color_map is not None: + self._style["color_map"] = color_map + + Component.style(self, container=container, **kwargs) + return self + + +@document("style") +class JSON(Changeable, IOComponent, JSONSerializable): + """ + Used to display arbitrary JSON output prettily. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a {str} filepath to a file containing valid JSON -- or a {list} or {dict} that is valid JSON + + Demos: zip_to_json, blocks_xray + """ + + def __init__( + self, + value: str | Dict | List | Callable | None = None, + *, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default value. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def postprocess(self, y: Dict | List | str | None) -> Dict | List | None: + """ + Parameters: + y: either a string filepath to a JSON file, or a Python list or dict that can be converted to JSON + Returns: + JSON output in Python list or dict format + """ + if y is None: + return None + if isinstance(y, str): + return json.loads(y) + else: + return y + + def style(self, *, container: bool | None = None, **kwargs): + """ + This method can be used to change the appearance of the JSON component. + Parameters: + container: If True, will place the JSON in a container - providing some extra padding around the border. + """ + Component.style(self, container=container, **kwargs) + return self + + +@document() +class HTML(Changeable, IOComponent, SimpleSerializable): + """ + Used to display arbitrary HTML output. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a valid HTML {str}. + + Demos: text_analysis + Guides: key_features + """ + + def __init__( + self, + value: str | Callable = "", + *, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default value. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def style(self): + return self + + +@document("style") +class Gallery(IOComponent, TempFileManager, FileSerializable, Selectable): + """ + Used to display a list of images as a gallery that can be scrolled through. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a list of images in any format, {List[numpy.array | PIL.Image | str]}, or a {List} of (image, {str} caption) tuples and displays them. + + Demos: fake_gan + """ + + def __init__( + self, + value: List[np.ndarray | _Image.Image | str | Tuple] | Callable | None = None, + *, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: List of images to display in the gallery by default. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.select: EventListenerMethod + """ + Event listener for when the user selects image within Gallery. + Uses event data gradio.SelectData to carry `value` referring to caption of selected image, and `index` to refer to index. + See EventData documentation on how to use this event data. + """ + TempFileManager.__init__(self) + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def get_config(self): + return { + "value": self.value, + **IOComponent.get_config(self), + } + + def postprocess( + self, + y: List[np.ndarray | _Image.Image | str] + | List[Tuple[np.ndarray | _Image.Image | str, str]] + | None, + ) -> List[str]: + """ + Parameters: + y: list of images, or list of (image, caption) tuples + Returns: + list of string file paths to images in temp directory + """ + if y is None: + return [] + output = [] + for img in y: + caption = None + if isinstance(img, tuple) or isinstance(img, list): + img, caption = img + if isinstance(img, np.ndarray): + file = processing_utils.save_array_to_file(img) + file_path = str(utils.abspath(file.name)) + self.temp_files.add(file_path) + elif isinstance(img, _Image.Image): + file = processing_utils.save_pil_to_file(img) + file_path = str(utils.abspath(file.name)) + self.temp_files.add(file_path) + elif isinstance(img, str): + if utils.validate_url(img): + file_path = img + else: + file_path = self.make_temp_copy_if_needed(img) + else: + raise ValueError(f"Cannot process type as image: {type(img)}") + + if caption is not None: + output.append( + [{"name": file_path, "data": None, "is_file": True}, caption] + ) + else: + output.append({"name": file_path, "data": None, "is_file": True}) + + return output + + def style( + self, + *, + grid: int | Tuple | None = None, + height: str | None = None, + container: bool | None = None, + preview: bool | None = None, + **kwargs, + ): + """ + This method can be used to change the appearance of the gallery component. + Parameters: + grid: Represents the number of images that should be shown in one row, for each of the six standard screen sizes (<576px, <768px, <992px, <1200px, <1400px, >1400px). if fewer that 6 are given then the last will be used for all subsequent breakpoints + height: Height of the gallery. + container: If True, will place gallery in a container - providing some extra padding around the border. + preview: If True, will display the Gallery in preview mode, which shows all of the images as thumbnails and allows the user to click on them to view them in full size. + """ + if grid is not None: + self._style["grid"] = grid + if height is not None: + self._style["height"] = height + if preview is not None: + self._style["preview"] = preview + + Component.style(self, container=container, **kwargs) + return self + + def deserialize( + self, + x: Any, + save_dir: str = "", + root_url: str | None = None, + ) -> None | str: + if x is None: + return None + gallery_path = Path(save_dir) / str(uuid.uuid4()) + gallery_path.mkdir(exist_ok=True, parents=True) + captions = {} + for img_data in x: + if isinstance(img_data, list) or isinstance(img_data, tuple): + img_data, caption = img_data + else: + caption = None + name = FileSerializable.deserialize( + self, img_data, gallery_path, root_url=root_url + ) + captions[name] = caption + captions_file = gallery_path / "captions.json" + with captions_file.open("w") as captions_json: + json.dump(captions, captions_json) + return str(utils.abspath(gallery_path)) + + def serialize(self, x: Any, load_dir: str = "", called_directly: bool = False): + files = [] + captions_file = Path(x) / "captions.json" + with captions_file.open("r") as captions_json: + captions = json.load(captions_json) + for file_name, caption in captions.items(): + img = FileSerializable.serialize(self, file_name) + files.append([img, caption]) + return files + + +class Carousel(IOComponent, Changeable, SimpleSerializable): + """ + Deprecated Component + """ + + def __init__( + self, + *args, + **kwargs, + ): + raise DeprecationWarning( + "The Carousel component is deprecated. Please consider using the Gallery " + "component, which can be used to display images (and optional captions).", + ) + + +@document("style") +class Chatbot(Changeable, Selectable, IOComponent, JSONSerializable): + """ + Displays a chatbot output showing both user submitted messages and responses. Supports a subset of Markdown including bold, italics, code, and images. + Preprocessing: this component does *not* accept input. + Postprocessing: expects function to return a {List[Tuple[str | None | Tuple, str | None | Tuple]]}, a list of tuples with user message and response messages. Messages should be strings, tuples, or Nones. If the message is a string, it can include Markdown. If it is a tuple, it should consist of (string filepath to image/video/audio, [optional string alt text]). Messages that are `None` are not displayed. + + Demos: chatbot_simple, chatbot_multimodal + """ + + def __init__( + self, + value: List[Tuple[str | None, str | None]] | Callable | None = None, + color_map: Dict[str, str] | None = None, # Parameter moved to Chatbot.style() + *, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default value to show in chatbot. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + if color_map is not None: + warnings.warn( + "The 'color_map' parameter has been deprecated.", + ) + self.md = utils.get_markdown_parser() + self.select: EventListenerMethod + """ + Event listener for when the user selects message from Chatbot. + Uses event data gradio.SelectData to carry `value` referring to text of selected message, and `index` tuple to refer to [message, participant] index. + See EventData documentation on how to use this event data. + """ + + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "value": self.value, + "selectable": self.selectable, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def _process_chat_messages( + self, chat_message: str | Tuple | List | Dict | None + ) -> str | Dict | None: + if chat_message is None: + return None + elif isinstance(chat_message, (tuple, list)): + mime_type = processing_utils.get_mimetype(chat_message[0]) + return { + "name": chat_message[0], + "mime_type": mime_type, + "alt_text": chat_message[1] if len(chat_message) > 1 else None, + "data": None, # These last two fields are filled in by the frontend + "is_file": True, + } + elif isinstance( + chat_message, dict + ): # This happens for previously processed messages + return chat_message + elif isinstance(chat_message, str): + return self.md.renderInline(chat_message) + else: + raise ValueError(f"Invalid message for Chatbot component: {chat_message}") + + def postprocess( + self, + y: List[ + Tuple[str | Tuple | List | Dict | None, str | Tuple | List | Dict | None] + ], + ) -> List[Tuple[str | Dict | None, str | Dict | None]]: + """ + Parameters: + y: List of tuples representing the message and response pairs. Each message and response should be a string, which may be in Markdown format. It can also be a tuple whose first element is a string filepath or URL to an image/video/audio, and second (optional) element is the alt text, in which case the media file is displayed. It can also be None, in which case that message is not displayed. + Returns: + List of tuples representing the message and response. Each message and response will be a string of HTML, or a dictionary with media information. + """ + if y is None: + return [] + processed_messages = [] + for message_pair in y: + assert isinstance( + message_pair, (tuple, list) + ), f"Expected a list of lists or list of tuples. Received: {message_pair}" + assert ( + len(message_pair) == 2 + ), f"Expected a list of lists of length 2 or list of tuples of length 2. Received: {message_pair}" + processed_messages.append( + ( + self._process_chat_messages(message_pair[0]), + self._process_chat_messages(message_pair[1]), + ) + ) + return processed_messages + + def style(self, height: int | None = None, **kwargs): + """ + This method can be used to change the appearance of the Chatbot component. + """ + if height is not None: + self._style["height"] = height + if kwargs.get("color_map") is not None: + warnings.warn("The 'color_map' parameter has been deprecated.") + + Component.style( + self, + **kwargs, + ) + return self + + +@document("style") +class Model3D( + Changeable, Editable, Clearable, IOComponent, FileSerializable, TempFileManager +): + """ + Component allows users to upload or view 3D Model files (.obj, .glb, or .gltf). + Preprocessing: This component passes the uploaded file as a {str} filepath. + Postprocessing: expects function to return a {str} path to a file of type (.obj, glb, or .gltf) + + Demos: model3D + Guides: how_to_use_3D_model_component + """ + + def __init__( + self, + value: str | Callable | None = None, + *, + clear_color: List[float] | None = None, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: path to (.obj, glb, or .gltf) file to show in model3D viewer. If callable, the function will be called whenever the app loads to set the initial value of the component. + clear_color: background color of scene + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.clear_color = clear_color or [0, 0, 0, 0] + TempFileManager.__init__(self) + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "clearColor": self.clear_color, + "value": self.value, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def preprocess(self, x: Dict[str, str] | None) -> str | None: + """ + Parameters: + x: JSON object with filename as 'name' property and base64 data as 'data' property + Returns: + string file path to temporary file with the 3D image model + """ + if x is None: + return x + file_name, file_data, is_file = ( + x["name"], + x["data"], + x.get("is_file", False), + ) + if is_file: + temp_file_path = self.make_temp_copy_if_needed(file_name) + else: + temp_file_path = self.base64_to_temp_file_if_needed(file_data, file_name) + + return temp_file_path + + def postprocess(self, y: str | None) -> Dict[str, str] | None: + """ + Parameters: + y: path to the model + Returns: + file name mapped to base64 url data + """ + if y is None: + return y + data = { + "name": self.make_temp_copy_if_needed(y), + "data": None, + "is_file": True, + } + return data + + def style(self, **kwargs): + """ + This method can be used to change the appearance of the Model3D component. + """ + Component.style( + self, + **kwargs, + ) + return self + + def as_example(self, input_data: str | None) -> str: + return Path(input_data).name if input_data else "" + + +@document() +class Plot(Changeable, Clearable, IOComponent, JSONSerializable): + """ + Used to display various kinds of plots (matplotlib, plotly, or bokeh are supported) + Preprocessing: this component does *not* accept input. + Postprocessing: expects either a {matplotlib.figure.Figure}, a {plotly.graph_objects._figure.Figure}, or a {dict} corresponding to a bokeh plot (json_item format) + + Demos: altair_plot, outbreak_forecast, blocks_kinematics, stock_forecast, map_airbnb + Guides: plot_component_for_maps + """ + + def __init__( + self, + value: Callable | None | pd.DataFrame = None, + *, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Optionally, supply a default plot object to display, must be a matplotlib, plotly, altair, or bokeh figure, or a callable. If callable, the function will be called whenever the app loads to set the initial value of the component. + label: component name in interface. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + IOComponent.__init__( + self, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + try: + import bokeh # type: ignore + + bokeh_version = bokeh.__version__ + except ImportError: + bokeh_version = None + return { + "value": self.value, + "bokeh_version": bokeh_version, + **IOComponent.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def postprocess(self, y) -> Dict[str, str] | None: + """ + Parameters: + y: plot data + Returns: + plot type mapped to plot base64 data + """ + if y is None: + return None + if isinstance(y, (ModuleType, matplotlib.figure.Figure)): + dtype = "matplotlib" + out_y = processing_utils.encode_plot_to_base64(y) + elif "bokeh" in y.__module__: + dtype = "bokeh" + from bokeh.embed import json_item # type: ignore + + out_y = json.dumps(json_item(y)) + else: + is_altair = "altair" in y.__module__ + if is_altair: + dtype = "altair" + else: + dtype = "plotly" + out_y = y.to_json() + return {"type": dtype, "plot": out_y} + + def style(self, container: bool | None = None): + Component.style( + self, + container=container, + ) + return self + + +class AltairPlot: + @staticmethod + def create_legend(position, title): + if position == "none": + legend = None + else: + position = {"orient": position} if position else {} + legend = {"title": title, **position} + + return legend + + @staticmethod + def create_scale(limit): + return alt.Scale(domain=limit) if limit else alt.Undefined + + +@document() +class ScatterPlot(Plot): + """ + Create a scatter plot. + + Preprocessing: this component does *not* accept input. + Postprocessing: expects a pandas dataframe with the data to plot. + + Demos: native_plots + Guides: creating_a_dashboard_from_bigquery_data + """ + + def __init__( + self, + value: pd.DataFrame | Callable | None = None, + x: str | None = None, + y: str | None = None, + *, + color: str | None = None, + size: str | None = None, + shape: str | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + size_legend_title: str | None = None, + shape_legend_title: str | None = None, + color_legend_position: str | None = None, + size_legend_position: str | None = None, + shape_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + x_lim: List[int | float] | None = None, + y_lim: List[int | float] | None = None, + caption: str | None = None, + interactive: bool | None = True, + label: str | None = None, + every: float | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + ): + """ + Parameters: + value: The pandas dataframe containing the data to display in a scatter plot, or a callable. If callable, the function will be called whenever the app loads to set the initial value of the component. + x: Column corresponding to the x axis. + y: Column corresponding to the y axis. + color: The column to determine the point color. If the column contains numeric data, gradio will interpolate the column data so that small values correspond to light colors and large values correspond to dark values. + size: The column used to determine the point size. Should contain numeric data so that gradio can map the data to the point size. + shape: The column used to determine the point shape. Should contain categorical data. Gradio will map each unique value to a different shape. + title: The title to display on top of the chart. + tooltip: The column (or list of columns) to display on the tooltip when a user hovers a point on the plot. + x_title: The title given to the x axis. By default, uses the value of the x parameter. + y_title: The title given to the y axis. By default, uses the value of the y parameter. + color_legend_title: The title given to the color legend. By default, uses the value of color parameter. + size_legend_title: The title given to the size legend. By default, uses the value of the size parameter. + shape_legend_title: The title given to the shape legend. By default, uses the value of the shape parameter. + color_legend_position: The position of the color legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + size_legend_position: The position of the size legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + shape_legend_position: The position of the shape legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + height: The height of the plot in pixels. + width: The width of the plot in pixels. + x_lim: A tuple or list containing the limits for the x-axis, specified as [x_min, x_max]. + y_lim: A tuple of list containing the limits for the y-axis, specified as [y_min, y_max]. + caption: The (optional) caption to display below the plot. + interactive: Whether users should be able to interact with the plot by panning or zooming with their mouse or trackpad. + label: The (optional) label to display on the top left corner of the plot. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + show_label: Whether the label should be displayed. + visible: Whether the plot should be visible. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.x = x + self.y = y + self.color = color + self.size = size + self.shape = shape + self.tooltip = tooltip + self.title = title + self.x_title = x_title + self.y_title = y_title + self.color_legend_title = color_legend_title + self.color_legend_position = color_legend_position + self.size_legend_title = size_legend_title + self.size_legend_position = size_legend_position + self.shape_legend_title = shape_legend_title + self.shape_legend_position = shape_legend_position + self.caption = caption + self.interactive_chart = interactive + self.width = width + self.height = height + self.x_lim = x_lim + self.y_lim = y_lim + super().__init__( + value=value, + label=label, + every=every, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + ) + + def get_config(self): + config = super().get_config() + config["caption"] = self.caption + return config + + def get_block_name(self) -> str: + return "plot" + + @staticmethod + def update( + value: DataFrame | Dict | Literal[_Keywords.NO_VALUE] = _Keywords.NO_VALUE, + x: str | None = None, + y: str | None = None, + color: str | None = None, + size: str | None = None, + shape: str | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + size_legend_title: str | None = None, + shape_legend_title: str | None = None, + color_legend_position: str | None = None, + size_legend_position: str | None = None, + shape_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + x_lim: List[int | float] | None = None, + y_lim: List[int | float] | None = None, + interactive: bool | None = None, + caption: str | None = None, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + """Update an existing plot component. + + If updating any of the plot properties (color, size, etc) the value, x, and y parameters must be specified. + + Parameters: + value: The pandas dataframe containing the data to display in a scatter plot. + x: Column corresponding to the x axis. + y: Column corresponding to the y axis. + color: The column to determine the point color. If the column contains numeric data, gradio will interpolate the column data so that small values correspond to light colors and large values correspond to dark values. + size: The column used to determine the point size. Should contain numeric data so that gradio can map the data to the point size. + shape: The column used to determine the point shape. Should contain categorical data. Gradio will map each unique value to a different shape. + title: The title to display on top of the chart. + tooltip: The column (or list of columns) to display on the tooltip when a user hovers a point on the plot. + x_title: The title given to the x axis. By default, uses the value of the x parameter. + y_title: The title given to the y axis. By default, uses the value of the y parameter. + color_legend_title: The title given to the color legend. By default, uses the value of color parameter. + size_legend_title: The title given to the size legend. By default, uses the value of the size parameter. + shape_legend_title: The title given to the shape legend. By default, uses the value of the shape parameter. + color_legend_position: The position of the color legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + size_legend_position: The position of the size legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + shape_legend_position: The position of the shape legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + height: The height of the plot in pixels. + width: The width of the plot in pixels. + x_lim: A tuple or list containing the limits for the x-axis, specified as [x_min, x_max]. + y_lim: A tuple of list containing the limits for the y-axis, specified as [y_min, y_max]. + interactive: Whether users should be able to interact with the plot by panning or zooming with their mouse or trackpad. + caption: The (optional) caption to display below the plot. + label: The (optional) label to display in the top left corner of the plot. + show_label: Whether the label should be displayed. + visible: Whether the plot should be visible. + """ + properties = [ + x, + y, + color, + size, + shape, + title, + tooltip, + x_title, + y_title, + color_legend_title, + size_legend_title, + shape_legend_title, + color_legend_position, + size_legend_position, + shape_legend_position, + height, + width, + x_lim, + y_lim, + interactive, + ] + if any(properties): + if not isinstance(value, pd.DataFrame): + raise ValueError( + "In order to update plot properties the value parameter " + "must be provided, and it must be a Dataframe. Please pass a value " + "parameter to gr.ScatterPlot.update." + ) + if x is None or y is None: + raise ValueError( + "In order to update plot properties, the x and y axis data " + "must be specified. Please pass valid values for x an y to " + "gr.ScatterPlot.update." + ) + chart = ScatterPlot.create_plot(value, *properties) + value = {"type": "altair", "plot": chart.to_json(), "chart": "scatter"} + + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "caption": caption, + "__type__": "update", + } + return updated_config + + @staticmethod + def create_plot( + value: pd.DataFrame, + x: str, + y: str, + color: str | None = None, + size: str | None = None, + shape: str | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + size_legend_title: str | None = None, + shape_legend_title: str | None = None, + color_legend_position: str | None = None, + size_legend_position: str | None = None, + shape_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + x_lim: List[int | float] | None = None, + y_lim: List[int | float] | None = None, + interactive: bool | None = True, + ): + """Helper for creating the scatter plot.""" + interactive = True if interactive is None else interactive + encodings = dict( + x=alt.X( + x, # type: ignore + title=x_title or x, # type: ignore + scale=AltairPlot.create_scale(x_lim), # type: ignore + ), # ignore: type + y=alt.Y( + y, # type: ignore + title=y_title or y, # type: ignore + scale=AltairPlot.create_scale(y_lim), # type: ignore + ), + ) + properties = {} + if title: + properties["title"] = title + if height: + properties["height"] = height + if width: + properties["width"] = width + if color: + if is_numeric_dtype(value[color]): + domain = [value[color].min(), value[color].max()] + range_ = [0, 1] + type_ = "quantitative" + else: + domain = value[color].unique().tolist() + range_ = list(range(len(domain))) + type_ = "nominal" + + encodings["color"] = { + "field": color, + "type": type_, + "legend": AltairPlot.create_legend( + position=color_legend_position, title=color_legend_title or color + ), + "scale": {"domain": domain, "range": range_}, + } + if tooltip: + encodings["tooltip"] = tooltip + if size: + encodings["size"] = { + "field": size, + "type": "quantitative" if is_numeric_dtype(value[size]) else "nominal", + "legend": AltairPlot.create_legend( + position=size_legend_position, title=size_legend_title or size + ), + } + if shape: + encodings["shape"] = { + "field": shape, + "type": "quantitative" if is_numeric_dtype(value[shape]) else "nominal", + "legend": AltairPlot.create_legend( + position=shape_legend_position, title=shape_legend_title or shape + ), + } + chart = ( + alt.Chart(value) # type: ignore + .mark_point(clip=True) # type: ignore + .encode(**encodings) + .properties(background="transparent", **properties) + ) + if interactive: + chart = chart.interactive() + + return chart + + def postprocess(self, y: pd.DataFrame | Dict | None) -> Dict[str, str] | None: + # if None or update + if y is None or isinstance(y, Dict): + return y + if self.x is None or self.y is None: + raise ValueError("No value provided for required parameters `x` and `y`.") + chart = self.create_plot( + value=y, + x=self.x, + y=self.y, + color=self.color, + size=self.size, + shape=self.shape, + title=self.title, + tooltip=self.tooltip, + x_title=self.x_title, + y_title=self.y_title, + color_legend_title=self.color_legend_title, + size_legend_title=self.size_legend_title, + shape_legend_title=self.size_legend_title, + color_legend_position=self.color_legend_position, + size_legend_position=self.size_legend_position, + shape_legend_position=self.shape_legend_position, + interactive=self.interactive_chart, + height=self.height, + width=self.width, + x_lim=self.x_lim, + y_lim=self.y_lim, + ) + + return {"type": "altair", "plot": chart.to_json(), "chart": "scatter"} + + +@document() +class LinePlot(Plot): + """ + Create a line plot. + + Preprocessing: this component does *not* accept input. + Postprocessing: expects a pandas dataframe with the data to plot. + + Demos: native_plots, live_dashboard + """ + + def __init__( + self, + value: pd.DataFrame | Callable | None = None, + x: str | None = None, + y: str | None = None, + *, + color: str | None = None, + stroke_dash: str | None = None, + overlay_point: bool | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + stroke_dash_legend_title: str | None = None, + color_legend_position: str | None = None, + stroke_dash_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + x_lim: List[int] | None = None, + y_lim: List[int] | None = None, + caption: str | None = None, + interactive: bool | None = True, + label: str | None = None, + show_label: bool = True, + every: float | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + ): + """ + Parameters: + value: The pandas dataframe containing the data to display in a scatter plot. + x: Column corresponding to the x axis. + y: Column corresponding to the y axis. + color: The column to determine the point color. If the column contains numeric data, gradio will interpolate the column data so that small values correspond to light colors and large values correspond to dark values. + stroke_dash: The column to determine the symbol used to draw the line, e.g. dashed lines, dashed lines with points. + overlay_point: Whether to draw a point on the line for each (x, y) coordinate pair. + title: The title to display on top of the chart. + tooltip: The column (or list of columns) to display on the tooltip when a user hovers a point on the plot. + x_title: The title given to the x axis. By default, uses the value of the x parameter. + y_title: The title given to the y axis. By default, uses the value of the y parameter. + color_legend_title: The title given to the color legend. By default, uses the value of color parameter. + stroke_dash_legend_title: The title given to the stroke_dash legend. By default, uses the value of the stroke_dash parameter. + color_legend_position: The position of the color legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + stroke_dash_legend_position: The position of the stoke_dash legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + height: The height of the plot in pixels. + width: The width of the plot in pixels. + x_lim: A tuple or list containing the limits for the x-axis, specified as [x_min, x_max]. + y_lim: A tuple of list containing the limits for the y-axis, specified as [y_min, y_max]. + caption: The (optional) caption to display below the plot. + interactive: Whether users should be able to interact with the plot by panning or zooming with their mouse or trackpad. + label: The (optional) label to display on the top left corner of the plot. + show_label: Whether the label should be displayed. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + visible: Whether the plot should be visible. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.x = x + self.y = y + self.color = color + self.stroke_dash = stroke_dash + self.tooltip = tooltip + self.title = title + self.x_title = x_title + self.y_title = y_title + self.color_legend_title = color_legend_title + self.stroke_dash_legend_title = stroke_dash_legend_title + self.color_legend_position = color_legend_position + self.stroke_dash_legend_position = stroke_dash_legend_position + self.overlay_point = overlay_point + self.x_lim = x_lim + self.y_lim = y_lim + self.caption = caption + self.interactive_chart = interactive + self.width = width + self.height = height + super().__init__( + value=value, + label=label, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + every=every, + ) + + def get_config(self): + config = super().get_config() + config["caption"] = self.caption + return config + + def get_block_name(self) -> str: + return "plot" + + @staticmethod + def update( + value: pd.DataFrame | Dict | Literal[_Keywords.NO_VALUE] = _Keywords.NO_VALUE, + x: str | None = None, + y: str | None = None, + color: str | None = None, + stroke_dash: str | None = None, + overlay_point: bool | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + stroke_dash_legend_title: str | None = None, + color_legend_position: str | None = None, + stroke_dash_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + x_lim: List[int] | None = None, + y_lim: List[int] | None = None, + interactive: bool | None = None, + caption: str | None = None, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + ): + """Update an existing plot component. + + If updating any of the plot properties (color, size, etc) the value, x, and y parameters must be specified. + + Parameters: + value: The pandas dataframe containing the data to display in a scatter plot. + x: Column corresponding to the x axis. + y: Column corresponding to the y axis. + color: The column to determine the point color. If the column contains numeric data, gradio will interpolate the column data so that small values correspond to light colors and large values correspond to dark values. + stroke_dash: The column to determine the symbol used to draw the line, e.g. dashed lines, dashed lines with points. + overlay_point: Whether to draw a point on the line for each (x, y) coordinate pair. + title: The title to display on top of the chart. + tooltip: The column (or list of columns) to display on the tooltip when a user hovers a point on the plot. + x_title: The title given to the x axis. By default, uses the value of the x parameter. + y_title: The title given to the y axis. By default, uses the value of the y parameter. + color_legend_title: The title given to the color legend. By default, uses the value of color parameter. + stroke_dash_legend_title: The title given to the stroke legend. By default, uses the value of stroke parameter. + color_legend_position: The position of the color legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation + stroke_dash_legend_position: The position of the stoke_dash legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation + height: The height of the plot in pixels. + width: The width of the plot in pixels. + x_lim: A tuple or list containing the limits for the x-axis, specified as [x_min, x_max]. + y_lim: A tuple of list containing the limits for the y-axis, specified as [y_min, y_max]. + caption: The (optional) caption to display below the plot. + interactive: Whether users should be able to interact with the plot by panning or zooming with their mouse or trackpad. + label: The (optional) label to display in the top left corner of the plot. + show_label: Whether the label should be displayed. + visible: Whether the plot should be visible. + """ + properties = [ + x, + y, + color, + stroke_dash, + overlay_point, + title, + tooltip, + x_title, + y_title, + color_legend_title, + stroke_dash_legend_title, + color_legend_position, + stroke_dash_legend_position, + height, + width, + x_lim, + y_lim, + interactive, + ] + if any(properties): + if not isinstance(value, pd.DataFrame): + raise ValueError( + "In order to update plot properties the value parameter " + "must be provided, and it must be a Dataframe. Please pass a value " + "parameter to gr.LinePlot.update." + ) + if x is None or y is None: + raise ValueError( + "In order to update plot properties, the x and y axis data " + "must be specified. Please pass valid values for x an y to " + "gr.LinePlot.update." + ) + chart = LinePlot.create_plot(value, *properties) + value = {"type": "altair", "plot": chart.to_json(), "chart": "line"} + + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "caption": caption, + "__type__": "update", + } + return updated_config + + @staticmethod + def create_plot( + value: pd.DataFrame, + x: str, + y: str, + color: str | None = None, + stroke_dash: str | None = None, + overlay_point: bool | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + stroke_dash_legend_title: str | None = None, + color_legend_position: str | None = None, + stroke_dash_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + x_lim: List[int] | None = None, + y_lim: List[int] | None = None, + interactive: bool | None = None, + ): + """Helper for creating the scatter plot.""" + interactive = True if interactive is None else interactive + encodings = dict( + x=alt.X( + x, # type: ignore + title=x_title or x, # type: ignore + scale=AltairPlot.create_scale(x_lim), # type: ignore + ), + y=alt.Y( + y, # type: ignore + title=y_title or y, # type: ignore + scale=AltairPlot.create_scale(y_lim), # type: ignore + ), + ) + properties = {} + if title: + properties["title"] = title + if height: + properties["height"] = height + if width: + properties["width"] = width + + if color: + domain = value[color].unique().tolist() + range_ = list(range(len(domain))) + encodings["color"] = { + "field": color, + "type": "nominal", + "scale": {"domain": domain, "range": range_}, + "legend": AltairPlot.create_legend( + position=color_legend_position, title=color_legend_title or color + ), + } + + highlight = None + if interactive and any([color, stroke_dash]): + highlight = alt.selection( + type="single", # type: ignore + on="mouseover", + fields=[c for c in [color, stroke_dash] if c], + nearest=True, + ) + + if stroke_dash: + stroke_dash = { + "field": stroke_dash, # type: ignore + "legend": AltairPlot.create_legend( # type: ignore + position=stroke_dash_legend_position, # type: ignore + title=stroke_dash_legend_title or stroke_dash, # type: ignore + ), # type: ignore + } # type: ignore + else: + stroke_dash = alt.value(alt.Undefined) # type: ignore + + if tooltip: + encodings["tooltip"] = tooltip + + chart = alt.Chart(value).encode(**encodings) # type: ignore + + points = chart.mark_point(clip=True).encode( + opacity=alt.value(alt.Undefined) if overlay_point else alt.value(0), + ) + lines = chart.mark_line(clip=True).encode(strokeDash=stroke_dash) + + if highlight: + points = points.add_selection(highlight) + + lines = lines.encode( + size=alt.condition(highlight, alt.value(4), alt.value(1)), + ) + + chart = (lines + points).properties(background="transparent", **properties) + if interactive: + chart = chart.interactive() + + return chart + + def postprocess(self, y: pd.DataFrame | Dict | None) -> Dict[str, str] | None: + # if None or update + if y is None or isinstance(y, Dict): + return y + if self.x is None or self.y is None: + raise ValueError("No value provided for required parameters `x` and `y`.") + chart = self.create_plot( + value=y, + x=self.x, + y=self.y, + color=self.color, + overlay_point=self.overlay_point, + title=self.title, + tooltip=self.tooltip, + x_title=self.x_title, + y_title=self.y_title, + color_legend_title=self.color_legend_title, + color_legend_position=self.color_legend_position, + stroke_dash_legend_title=self.stroke_dash_legend_title, + stroke_dash_legend_position=self.stroke_dash_legend_position, + x_lim=self.x_lim, + y_lim=self.y_lim, + stroke_dash=self.stroke_dash, + interactive=self.interactive_chart, + height=self.height, + width=self.width, + ) + + return {"type": "altair", "plot": chart.to_json(), "chart": "line"} + + +@document() +class BarPlot(Plot): + """ + Create a bar plot. + + Preprocessing: this component does *not* accept input. + Postprocessing: expects a pandas dataframe with the data to plot. + + Demos: native_plots, chicago-bikeshare-dashboard + """ + + def __init__( + self, + value: pd.DataFrame | Callable | None = None, + x: str | None = None, + y: str | None = None, + *, + color: str | None = None, + vertical: bool = True, + group: str | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + group_title: str | None = None, + color_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + y_lim: List[int] | None = None, + caption: str | None = None, + interactive: bool | None = True, + label: str | None = None, + show_label: bool = True, + every: float | None = None, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + ): + """ + Parameters: + value: The pandas dataframe containing the data to display in a scatter plot. + x: Column corresponding to the x axis. + y: Column corresponding to the y axis. + color: The column to determine the bar color. Must be categorical (discrete values). + vertical: If True, the bars will be displayed vertically. If False, the x and y axis will be switched, displaying the bars horizontally. Default is True. + group: The column with which to split the overall plot into smaller subplots. + title: The title to display on top of the chart. + tooltip: The column (or list of columns) to display on the tooltip when a user hovers over a bar. + x_title: The title given to the x axis. By default, uses the value of the x parameter. + y_title: The title given to the y axis. By default, uses the value of the y parameter. + color_legend_title: The title given to the color legend. By default, uses the value of color parameter. + group_title: The label displayed on top of the subplot columns (or rows if vertical=True). Use an empty string to omit. + color_legend_position: The position of the color legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + height: The height of the plot in pixels. + width: The width of the plot in pixels. + y_lim: A tuple of list containing the limits for the y-axis, specified as [y_min, y_max]. + caption: The (optional) caption to display below the plot. + interactive: Whether users should be able to interact with the plot by panning or zooming with their mouse or trackpad. + label: The (optional) label to display on the top left corner of the plot. + show_label: Whether the label should be displayed. + every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. + visible: Whether the plot should be visible. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.x = x + self.y = y + self.color = color + self.vertical = vertical + self.group = group + self.group_title = group_title + self.tooltip = tooltip + self.title = title + self.x_title = x_title + self.y_title = y_title + self.color_legend_title = color_legend_title + self.group_title = group_title + self.color_legend_position = color_legend_position + self.y_lim = y_lim + self.caption = caption + self.interactive_chart = interactive + self.width = width + self.height = height + super().__init__( + value=value, + label=label, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + every=every, + ) + + def get_config(self): + config = super().get_config() + config["caption"] = self.caption + return config + + def get_block_name(self) -> str: + return "plot" + + @staticmethod + def update( + value: pd.DataFrame | Dict | Literal[_Keywords.NO_VALUE] = _Keywords.NO_VALUE, + x: str | None = None, + y: str | None = None, + color: str | None = None, + vertical: bool = True, + group: str | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + group_title: str | None = None, + color_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + y_lim: List[int] | None = None, + caption: str | None = None, + interactive: bool | None = True, + label: str | None = None, + show_label: bool = True, + visible: bool = True, + ): + """Update an existing BarPlot component. + + If updating any of the plot properties (color, size, etc) the value, x, and y parameters must be specified. + + Parameters: + value: The pandas dataframe containing the data to display in a scatter plot. + x: Column corresponding to the x axis. + y: Column corresponding to the y axis. + color: The column to determine the bar color. Must be categorical (discrete values). + vertical: If True, the bars will be displayed vertically. If False, the x and y axis will be switched, displaying the bars horizontally. Default is True. + group: The column with which to split the overall plot into smaller subplots. + title: The title to display on top of the chart. + tooltip: The column (or list of columns) to display on the tooltip when a user hovers over a bar. + x_title: The title given to the x axis. By default, uses the value of the x parameter. + y_title: The title given to the y axis. By default, uses the value of the y parameter. + color_legend_title: The title given to the color legend. By default, uses the value of color parameter. + group_title: The label displayed on top of the subplot columns (or rows if vertical=True). Use an empty string to omit. + color_legend_position: The position of the color legend. If the string value 'none' is passed, this legend is omitted. For other valid position values see: https://vega.github.io/vega/docs/legends/#orientation. + height: The height of the plot in pixels. + width: The width of the plot in pixels. + y_lim: A tuple of list containing the limits for the y-axis, specified as [y_min, y_max]. + caption: The (optional) caption to display below the plot. + interactive: Whether users should be able to interact with the plot by panning or zooming with their mouse or trackpad. + label: The (optional) label to display on the top left corner of the plot. + show_label: Whether the label should be displayed. + visible: Whether the plot should be visible. + """ + properties = [ + x, + y, + color, + vertical, + group, + title, + tooltip, + x_title, + y_title, + color_legend_title, + group_title, + color_legend_position, + height, + width, + y_lim, + interactive, + ] + if any(properties): + if not isinstance(value, pd.DataFrame): + raise ValueError( + "In order to update plot properties the value parameter " + "must be provided, and it must be a Dataframe. Please pass a value " + "parameter to gr.BarPlot.update." + ) + if x is None or y is None: + raise ValueError( + "In order to update plot properties, the x and y axis data " + "must be specified. Please pass valid values for x an y to " + "gr.BarPlot.update." + ) + chart = BarPlot.create_plot(value, *properties) + value = {"type": "altair", "plot": chart.to_json(), "chart": "bar"} + + updated_config = { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "caption": caption, + "__type__": "update", + } + return updated_config + + @staticmethod + def create_plot( + value: pd.DataFrame, + x: str, + y: str, + color: str | None = None, + vertical: bool = True, + group: str | None = None, + title: str | None = None, + tooltip: List[str] | str | None = None, + x_title: str | None = None, + y_title: str | None = None, + color_legend_title: str | None = None, + group_title: str | None = None, + color_legend_position: str | None = None, + height: int | None = None, + width: int | None = None, + y_lim: List[int] | None = None, + interactive: bool | None = True, + ): + """Helper for creating the scatter plot.""" + interactive = True if interactive is None else interactive + orientation = ( + dict(field=group, title=group_title if group_title is not None else group) + if group + else {} + ) + + x_title = x_title or x + y_title = y_title or y + + # If horizontal, switch x and y + if not vertical: + y, x = x, y + x = f"sum({x}):Q" + y_title, x_title = x_title, y_title + orientation = {"row": alt.Row(**orientation)} if orientation else {} # type: ignore + x_lim = y_lim + y_lim = None + else: + y = f"sum({y}):Q" + x_lim = None + orientation = {"column": alt.Column(**orientation)} if orientation else {} # type: ignore + + encodings = dict( + x=alt.X( + x, # type: ignore + title=x_title, # type: ignore + scale=AltairPlot.create_scale(x_lim), # type: ignore + ), + y=alt.Y( + y, # type: ignore + title=y_title, # type: ignore + scale=AltairPlot.create_scale(y_lim), # type: ignore + ), + **orientation, + ) + properties = {} + if title: + properties["title"] = title + if height: + properties["height"] = height + if width: + properties["width"] = width + + if color: + domain = value[color].unique().tolist() + range_ = list(range(len(domain))) + encodings["color"] = { + "field": color, + "type": "nominal", + "scale": {"domain": domain, "range": range_}, + "legend": AltairPlot.create_legend( + position=color_legend_position, title=color_legend_title or color + ), + } + + if tooltip: + encodings["tooltip"] = tooltip + + chart = ( + alt.Chart(value) # type: ignore + .mark_bar() # type: ignore + .encode(**encodings) + .properties(background="transparent", **properties) + ) + if interactive: + chart = chart.interactive() + + return chart + + def postprocess(self, y: pd.DataFrame | Dict | None) -> Dict[str, str] | None: + # if None or update + if y is None or isinstance(y, Dict): + return y + if self.x is None or self.y is None: + raise ValueError("No value provided for required parameters `x` and `y`.") + chart = self.create_plot( + value=y, + x=self.x, + y=self.y, + color=self.color, + vertical=self.vertical, + group=self.group, + title=self.title, + tooltip=self.tooltip, + x_title=self.x_title, + y_title=self.y_title, + color_legend_title=self.color_legend_title, + color_legend_position=self.color_legend_position, + group_title=self.group_title, + y_lim=self.y_lim, + interactive=self.interactive_chart, + height=self.height, + width=self.width, + ) + + return {"type": "altair", "plot": chart.to_json(), "chart": "bar"} + + +@document() +class Markdown(IOComponent, Changeable, SimpleSerializable): + """ + Used to render arbitrary Markdown output. Can also render latex enclosed by dollar signs. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a valid {str} that can be rendered as Markdown. + + Demos: blocks_hello, blocks_kinematics + Guides: key_features + """ + + def __init__( + self, + value: str | Callable = "", + *, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Value to show in Markdown component. If callable, the function will be called whenever the app loads to set the initial value of the component. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.md = utils.get_markdown_parser() + IOComponent.__init__( + self, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def postprocess(self, y: str | None) -> str | None: + """ + Parameters: + y: markdown representation + Returns: + HTML rendering of markdown + """ + if y is None: + return None + unindented_y = inspect.cleandoc(y) + return self.md.render(unindented_y) + + def get_config(self): + return { + "value": self.value, + **Component.get_config(self), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + visible: bool | None = None, + ): + updated_config = { + "visible": visible, + "value": value, + "__type__": "update", + } + return updated_config + + def style(self): + return self + + def as_example(self, input_data: str | None) -> str: + postprocessed = self.postprocess(input_data) + return postprocessed if postprocessed else "" + + +@document("languages") +class Code(Changeable, IOComponent, SimpleSerializable): + """ + Creates a Code editor for entering, editing or viewing code. + Preprocessing: passes a {str} of code into the function. + Postprocessing: expects the function to return a {str} of code or a single-elment {tuple}: (string filepath,) + """ + + languages = [ + "python", + "markdown", + "json", + "html", + "css", + "javascript", + "typescript", + "yaml", + "dockerfile", + "shell", + "r", + None, + ] + + def __init__( + self, + value: str | None = None, + language: str | None = None, + *, + label: str | None = None, + interactive: bool | None = None, + show_label: bool = True, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + value: Default value to show in the code editor. If callable, the function will be called whenever the app loads to set the initial value of the component. + language: The language to display the code as. Supported languages listed in `gr.Code.languages`. + label: component name in interface. + interactive: Whether user should be able to enter code or only view it. + show_label: if True, will display label. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + assert language in Code.languages, f"Language {language} not supported." + self.language = language + IOComponent.__init__( + self, + label=label, + interactive=interactive, + show_label=show_label, + visible=visible, + elem_id=elem_id, + elem_classes=elem_classes, + value=value, + **kwargs, + ) + + def get_config(self): + return { + "value": self.value, + "language": self.language, + **IOComponent.get_config(self), + } + + def postprocess(self, y): + if y is None: + return None + elif isinstance(y, tuple): + with open(y[0]) as file_data: + return file_data.read() + else: + unindented_y = inspect.cleandoc(y) + return unindented_y + + @staticmethod + def update( + value: str | None | Literal[_Keywords.NO_VALUE] = _Keywords.NO_VALUE, + label: str | None = None, + show_label: bool | None = None, + visible: bool | None = None, + language: str | None = None, + interactive: bool | None = True, + ): + return { + "label": label, + "show_label": show_label, + "visible": visible, + "value": value, + "language": language, + "interactive": interactive, + "__type__": "update", + } + + def style(self): + return self + + +############################ +# Special Components +############################ + + +@document("style") +class Dataset(Clickable, Selectable, Component): + """ + Used to create an output widget for showing datasets. Used to render the examples + box. + Preprocessing: passes the selected sample either as a {list} of data (if type="value") or as an {int} index (if type="index") + Postprocessing: expects a {list} of {lists} corresponding to the dataset data. + """ + + def __init__( + self, + *, + label: str | None = None, + components: List[IOComponent] | List[str], + samples: List[List[Any]] | None = None, + headers: List[str] | None = None, + type: str = "values", + samples_per_page: int = 10, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + components: Which component types to show in this dataset widget, can be passed in as a list of string names or Components instances. The following components are supported in a Dataset: Audio, Checkbox, CheckboxGroup, ColorPicker, Dataframe, Dropdown, File, HTML, Image, Markdown, Model3D, Number, Radio, Slider, Textbox, TimeSeries, Video + samples: a nested list of samples. Each sublist within the outer list represents a data sample, and each element within the sublist represents an value for each component + headers: Column headers in the Dataset widget, should be the same len as components. If not provided, inferred from component labels + type: 'values' if clicking on a sample should pass the value of the sample, or "index" if it should pass the index of the sample + samples_per_page: how many examples to show per page. + visible: If False, component will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + Component.__init__( + self, visible=visible, elem_id=elem_id, elem_classes=elem_classes, **kwargs + ) + self.components = [get_component_instance(c, render=False) for c in components] + + # Narrow type to IOComponent + assert all( + [isinstance(c, IOComponent) for c in self.components] + ), "All components in a `Dataset` must be subclasses of `IOComponent`" + self.components = [c for c in self.components if isinstance(c, IOComponent)] + for component in self.components: + component.root_url = self.root_url + + self.samples = [[]] if samples is None else samples + for example in self.samples: + for i, (component, ex) in enumerate(zip(self.components, example)): + example[i] = component.as_example(ex) + self.type = type + self.label = label + if headers is not None: + self.headers = headers + elif all([c.label is None for c in self.components]): + self.headers = [] + else: + self.headers = [c.label or "" for c in self.components] + self.samples_per_page = samples_per_page + + def get_config(self): + return { + "components": [component.get_block_name() for component in self.components], + "headers": self.headers, + "samples": self.samples, + "type": self.type, + "label": self.label, + "samples_per_page": self.samples_per_page, + **Component.get_config(self), + } + + @staticmethod + def update( + samples: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + visible: bool | None = None, + label: str | None = None, + ): + return { + "samples": samples, + "visible": visible, + "label": label, + "__type__": "update", + } + + def preprocess(self, x: Any) -> Any: + """ + Any preprocessing needed to be performed on function input. + """ + if self.type == "index": + return x + elif self.type == "values": + return self.samples[x] + + def postprocess(self, samples: List[List[Any]]) -> Dict: + return { + "samples": samples, + "__type__": "update", + } + + def style(self, **kwargs): + """ + This method can be used to change the appearance of the Dataset component. + """ + Component.style(self, **kwargs) + return self + + +@document() +class Interpretation(Component): + """ + Used to create an interpretation widget for a component. + Preprocessing: this component does *not* accept input. + Postprocessing: expects a {dict} with keys "original" and "interpretation". + + Guides: custom_interpretations_with_blocks + """ + + def __init__( + self, + component: Component, + *, + visible: bool = True, + elem_id: str | None = None, + elem_classes: List[str] | str | None = None, + **kwargs, + ): + """ + Parameters: + component: Which component to show in the interpretation widget. + visible: Whether or not the interpretation is visible. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + Component.__init__( + self, visible=visible, elem_id=elem_id, elem_classes=elem_classes, **kwargs + ) + self.component = component + + def get_config(self): + return { + "component": self.component.get_block_name(), + "component_props": self.component.get_config(), + } + + @staticmethod + def update( + value: Any | Literal[_Keywords.NO_VALUE] | None = _Keywords.NO_VALUE, + visible: bool | None = None, + ): + return { + "visible": visible, + "value": value, + "__type__": "update", + } + + def style(self): + return self + + +class StatusTracker(Component): + def __init__( + self, + **kwargs, + ): + warnings.warn("The StatusTracker component is deprecated.") + + +def component(cls_name: str) -> Component: + obj = utils.component_or_layout_class(cls_name)() + if isinstance(obj, BlockContext): + raise ValueError(f"Invalid component: {obj.__class__}") + return obj + + +def get_component_instance(comp: str | dict | Component, render=True) -> Component: + if isinstance(comp, str): + component_obj = component(comp) + if not (render): + component_obj.unrender() + return component_obj + elif isinstance(comp, dict): + name = comp.pop("name") + component_cls = utils.component_or_layout_class(name) + component_obj = component_cls(**comp) + if isinstance(component_obj, BlockContext): + raise ValueError(f"Invalid component: {name}") + if not (render): + component_obj.unrender() + return component_obj + elif isinstance(comp, Component): + return comp + else: + raise ValueError( + f"Component must provided as a `str` or `dict` or `Component` but is {comp}" + ) + + +Text = Textbox +DataFrame = Dataframe +Highlightedtext = HighlightedText +Highlight = HighlightedText +Checkboxgroup = CheckboxGroup +TimeSeries = Timeseries +Json = JSON diff --git a/gradio/context.py b/gradio/context.py new file mode 100644 index 0000000000000000000000000000000000000000..6048312eb01799d0dd042f8b25294f3dc6f11c8e --- /dev/null +++ b/gradio/context.py @@ -0,0 +1,18 @@ +# Defines the Context class, which is used to store the state of all Blocks that are being rendered. + +from __future__ import annotations + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + from gradio.blocks import BlockContext, Blocks + + +class Context: + root_block: Blocks | None = None # The current root block that holds all blocks. + block: BlockContext | None = None # The current block that children are added to. + id: int = 0 # Running id to uniquely refer to any block that gets defined + ip_address: str | None = None # The IP address of the user. + access_token: str | None = ( + None # The HF token that is provided when loading private models or Spaces + ) diff --git a/gradio/data_classes.py b/gradio/data_classes.py new file mode 100644 index 0000000000000000000000000000000000000000..9b0ae76c489245c10c0adc6cd843e5c1161f81a5 --- /dev/null +++ b/gradio/data_classes.py @@ -0,0 +1,55 @@ +"""Pydantic data models and other dataclasses. This is the only file that uses Optional[] +typing syntax instead of | None syntax to work with pydantic""" +from enum import Enum, auto +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel + + +class PredictBody(BaseModel): + session_hash: Optional[str] + event_id: Optional[str] + data: List[Any] + event_data: Optional[Any] + fn_index: Optional[int] + batched: Optional[ + bool + ] = False # Whether the data is a batch of samples (i.e. called from the queue if batch=True) or a single sample (i.e. called from the UI) + request: Optional[ + Union[Dict, List[Dict]] + ] = None # dictionary of request headers, query parameters, url, etc. (used to to pass in request for queuing) + + +class ResetBody(BaseModel): + session_hash: str + fn_index: int + + +class InterfaceTypes(Enum): + STANDARD = auto() + INPUT_ONLY = auto() + OUTPUT_ONLY = auto() + UNIFIED = auto() + + +class Estimation(BaseModel): + msg: Optional[str] = "estimation" + rank: Optional[int] = None + queue_size: int + avg_event_process_time: Optional[float] + avg_event_concurrent_process_time: Optional[float] + rank_eta: Optional[float] = None + queue_eta: float + + +class ProgressUnit(BaseModel): + index: Optional[int] + length: Optional[int] + unit: Optional[str] + progress: Optional[float] + desc: Optional[str] + + +class Progress(BaseModel): + msg: str = "progress" + progress_data: List[ProgressUnit] = [] diff --git a/gradio/deprecation.py b/gradio/deprecation.py new file mode 100644 index 0000000000000000000000000000000000000000..555a4fed4474ec18c72bd36484ddf3a5ec466c0b --- /dev/null +++ b/gradio/deprecation.py @@ -0,0 +1,45 @@ +import warnings + + +def simple_deprecated_notice(term: str) -> str: + return f"`{term}` parameter is deprecated, and it has no effect" + + +def use_in_launch(term: str) -> str: + return f"`{term}` is deprecated in `Interface()`, please use it within `launch()` instead." + + +DEPRECATION_MESSAGE = { + "optional": simple_deprecated_notice("optional"), + "keep_filename": simple_deprecated_notice("keep_filename"), + "numeric": simple_deprecated_notice("numeric"), + "verbose": simple_deprecated_notice("verbose"), + "allow_screenshot": simple_deprecated_notice("allow_screenshot"), + "layout": simple_deprecated_notice("layout"), + "show_input": simple_deprecated_notice("show_input"), + "show_output": simple_deprecated_notice("show_output"), + "capture_session": simple_deprecated_notice("capture_session"), + "api_mode": simple_deprecated_notice("api_mode"), + "show_tips": use_in_launch("show_tips"), + "encrypt": simple_deprecated_notice("encrypt"), + "enable_queue": use_in_launch("enable_queue"), + "server_name": use_in_launch("server_name"), + "server_port": use_in_launch("server_port"), + "width": use_in_launch("width"), + "height": use_in_launch("height"), + "plot": "The 'plot' parameter has been deprecated. Use the new Plot component instead", + "type": "The 'type' parameter has been deprecated. Use the Number component instead.", +} + + +def check_deprecated_parameters(cls: str, **kwargs) -> None: + for key, value in DEPRECATION_MESSAGE.items(): + if key in kwargs: + kwargs.pop(key) + # Interestingly, using DeprecationWarning causes warning to not appear. + warnings.warn(value) + + if len(kwargs) != 0: + warnings.warn( + f"You have unused kwarg parameters in {cls}, please remove them: {kwargs}" + ) diff --git a/gradio/documentation.py b/gradio/documentation.py new file mode 100644 index 0000000000000000000000000000000000000000..a3c8792d59217c2c798d5eead77d9a95aa91fdd9 --- /dev/null +++ b/gradio/documentation.py @@ -0,0 +1,261 @@ +"""Contains methods that generate documentation for Gradio functions and classes.""" + +from __future__ import annotations + +import inspect +from typing import Callable, Dict, List, Tuple + +classes_to_document = {} +classes_inherit_documentation = {} +documentation_group = None + + +def set_documentation_group(m): + global documentation_group + documentation_group = m + if m not in classes_to_document: + classes_to_document[m] = [] + + +def extract_instance_attr_doc(cls, attr): + code = inspect.getsource(cls.__init__) + lines = [line.strip() for line in code.split("\n")] + i = None + for i, line in enumerate(lines): + if line.startswith("self." + attr + ":") or line.startswith( + "self." + attr + " =" + ): + break + assert i is not None, f"Could not find {attr} in {cls.__name__}" + start_line = lines.index('"""', i) + end_line = lines.index('"""', start_line + 1) + for j in range(i + 1, start_line): + assert not lines[j].startswith("self."), ( + f"Found another attribute before docstring for {attr} in {cls.__name__}: " + + lines[j] + + "\n start:" + + lines[i] + ) + doc_string = " ".join(lines[start_line + 1 : end_line]) + return doc_string + + +def document(*fns, inherit=False): + """ + Defines the @document decorator which adds classes or functions to the Gradio + documentation at www.gradio.app/docs. + + Usage examples: + - Put @document() above a class to document the class and its constructor. + - Put @document("fn1", "fn2") above a class to also document methods fn1 and fn2. + - Put @document("*fn3") with an asterisk above a class to document the instance attribute methods f3. + """ + + def inner_doc(cls): + global documentation_group + if inherit: + classes_inherit_documentation[cls] = None + classes_to_document[documentation_group].append((cls, fns)) + return cls + + return inner_doc + + +def document_fn(fn: Callable, cls) -> Tuple[str, List[Dict], Dict, str | None]: + """ + Generates documentation for any function. + Parameters: + fn: Function to document + Returns: + description: General description of fn + parameters: A list of dicts for each parameter, storing data for the parameter name, annotation and doc + return: A dict storing data for the returned annotation and doc + example: Code for an example use of the fn + """ + doc_str = inspect.getdoc(fn) or "" + doc_lines = doc_str.split("\n") + signature = inspect.signature(fn) + description, parameters, returns, examples = [], {}, [], [] + mode = "description" + for line in doc_lines: + line = line.rstrip() + if line == "Parameters:": + mode = "parameter" + elif line.startswith("Example:"): + mode = "example" + if "(" in line and ")" in line: + c = line.split("(")[1].split(")")[0] + if c != cls.__name__: + mode = "ignore" + elif line == "Returns:": + mode = "return" + else: + if mode == "description": + description.append(line if line.strip() else "
") + continue + assert ( + line.startswith(" ") or line.strip() == "" + ), f"Documentation format for {fn.__name__} has format error in line: {line}" + line = line[4:] + if mode == "parameter": + colon_index = line.index(": ") + assert ( + colon_index > -1 + ), f"Documentation format for {fn.__name__} has format error in line: {line}" + parameter = line[:colon_index] + parameter_doc = line[colon_index + 2 :] + parameters[parameter] = parameter_doc + elif mode == "return": + returns.append(line) + elif mode == "example": + examples.append(line) + description_doc = " ".join(description) + parameter_docs = [] + for param_name, param in signature.parameters.items(): + if param_name.startswith("_"): + continue + if param_name == "kwargs" and param_name not in parameters: + continue + parameter_doc = { + "name": param_name, + "annotation": param.annotation, + "doc": parameters.get(param_name), + } + if param_name in parameters: + del parameters[param_name] + if param.default != inspect.Parameter.empty: + default = param.default + if type(default) == str: + default = '"' + default + '"' + if default.__class__.__module__ != "builtins": + default = f"{default.__class__.__name__}()" + parameter_doc["default"] = default + elif parameter_doc["doc"] is not None and "kwargs" in parameter_doc["doc"]: + parameter_doc["kwargs"] = True + parameter_docs.append(parameter_doc) + assert ( + len(parameters) == 0 + ), f"Documentation format for {fn.__name__} documents nonexistent parameters: {''.join(parameters.keys())}" + if len(returns) == 0: + return_docs = {} + elif len(returns) == 1: + return_docs = {"annotation": signature.return_annotation, "doc": returns[0]} + else: + return_docs = {} + # raise ValueError("Does not support multiple returns yet.") + examples_doc = "\n".join(examples) if len(examples) > 0 else None + return description_doc, parameter_docs, return_docs, examples_doc + + +def document_cls(cls): + doc_str = inspect.getdoc(cls) + if doc_str is None: + return "", {}, "" + tags = {} + description_lines = [] + mode = "description" + for line in doc_str.split("\n"): + line = line.rstrip() + if line.endswith(":") and " " not in line: + mode = line[:-1].lower() + tags[mode] = [] + elif line.split(" ")[0].endswith(":") and not line.startswith(" "): + tag = line[: line.index(":")].lower() + value = line[line.index(":") + 2 :] + tags[tag] = value + else: + if mode == "description": + description_lines.append(line if line.strip() else "
") + else: + assert ( + line.startswith(" ") or not line.strip() + ), f"Documentation format for {cls.__name__} has format error in line: {line}" + tags[mode].append(line[4:]) + if "example" in tags: + example = "\n".join(tags["example"]) + del tags["example"] + else: + example = None + for key, val in tags.items(): + if isinstance(val, list): + tags[key] = "
".join(val) + description = " ".join(description_lines).replace("\n", "
") + return description, tags, example + + +def generate_documentation(): + documentation = {} + for mode, class_list in classes_to_document.items(): + documentation[mode] = [] + for cls, fns in class_list: + fn_to_document = cls if inspect.isfunction(cls) else cls.__init__ + _, parameter_doc, return_doc, _ = document_fn(fn_to_document, cls) + cls_description, cls_tags, cls_example = document_cls(cls) + cls_documentation = { + "class": cls, + "name": cls.__name__, + "description": cls_description, + "tags": cls_tags, + "parameters": parameter_doc, + "returns": return_doc, + "example": cls_example, + "fns": [], + } + for fn_name in fns: + instance_attribute_fn = fn_name.startswith("*") + if instance_attribute_fn: + fn_name = fn_name[1:] + # Instance attribute fns are classes + # whose __call__ method determines their behavior + fn = getattr(cls(), fn_name).__call__ + else: + fn = getattr(cls, fn_name) + if not callable(fn): + description_doc = str(fn) + parameter_docs = {} + return_docs = {} + examples_doc = "" + override_signature = f"gr.{cls.__name__}.{fn_name}" + else: + ( + description_doc, + parameter_docs, + return_docs, + examples_doc, + ) = document_fn(fn, cls) + override_signature = None + if instance_attribute_fn: + description_doc = extract_instance_attr_doc(cls, fn_name) + cls_documentation["fns"].append( + { + "fn": fn, + "name": fn_name, + "description": description_doc, + "tags": {}, + "parameters": parameter_docs, + "returns": return_docs, + "example": examples_doc, + "override_signature": override_signature, + } + ) + documentation[mode].append(cls_documentation) + if cls in classes_inherit_documentation: + classes_inherit_documentation[cls] = cls_documentation["fns"] + for mode, class_list in classes_to_document.items(): + for i, (cls, _) in enumerate(class_list): + for super_class in classes_inherit_documentation: + if ( + inspect.isclass(cls) + and issubclass(cls, super_class) + and cls != super_class + ): + for inherited_fn in classes_inherit_documentation[super_class]: + inherited_fn = dict(inherited_fn) + try: + inherited_fn["description"] = extract_instance_attr_doc( + cls, inherited_fn["name"] + ) + except (ValueError, AssertionError): + pass + documentation[mode][i]["fns"].append(inherited_fn) + return documentation diff --git a/gradio/events.py b/gradio/events.py new file mode 100644 index 0000000000000000000000000000000000000000..c19539e45c9332cf30db0d381e507c43e261aa5b --- /dev/null +++ b/gradio/events.py @@ -0,0 +1,298 @@ +"""Contains all of the events that can be triggered in a gr.Blocks() app, with the exception +of the on-page-load event, which is defined in gr.Blocks().load().""" + +from __future__ import annotations + +import warnings +from typing import TYPE_CHECKING, Any, Callable, Dict, List, Set, Tuple + +from gradio.blocks import Block +from gradio.documentation import document, set_documentation_group +from gradio.helpers import EventData +from gradio.utils import get_cancel_function + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + from gradio.components import Component, StatusTracker + +set_documentation_group("events") + + +def set_cancel_events( + block: Block, event_name: str, cancels: None | Dict[str, Any] | List[Dict[str, Any]] +): + if cancels: + if not isinstance(cancels, list): + cancels = [cancels] + cancel_fn, fn_indices_to_cancel = get_cancel_function(cancels) + block.set_event_trigger( + event_name, + cancel_fn, + inputs=None, + outputs=None, + queue=False, + preprocess=False, + cancels=fn_indices_to_cancel, + ) + + +class EventListener(Block): + def __init__(self: Any): + for event_listener_class in EventListener.__subclasses__(): + if isinstance(self, event_listener_class): + event_listener_class.__init__(self) + + +class Dependency(dict): + def __init__(self, trigger, key_vals, dep_index): + super().__init__(key_vals) + self.trigger = trigger + self.then = EventListenerMethod( + self.trigger, + "then", + trigger_after=dep_index, + trigger_only_on_success=False, + ) + """ + Triggered after directly preceding event is completed, regardless of success or failure. + """ + self.success = EventListenerMethod( + self.trigger, + "success", + trigger_after=dep_index, + trigger_only_on_success=True, + ) + """ + Triggered after directly preceding event is completed, if it was successful. + """ + + +class EventListenerMethod: + """ + Triggered on an event deployment. + """ + + def __init__( + self, + trigger: Block, + event_name: str, + show_progress: bool = True, + callback: Callable | None = None, + trigger_after: int | None = None, + trigger_only_on_success: bool = False, + ): + self.trigger = trigger + self.event_name = event_name + self.show_progress = show_progress + self.callback = callback + self.trigger_after = trigger_after + self.trigger_only_on_success = trigger_only_on_success + + def __call__( + self, + fn: Callable | None, + inputs: Component | List[Component] | Set[Component] | None = None, + outputs: Component | List[Component] | None = None, + api_name: str | None = None, + status_tracker: StatusTracker | None = None, + scroll_to_output: bool = False, + show_progress: bool | None = None, + queue: bool | None = None, + batch: bool = False, + max_batch_size: int = 4, + preprocess: bool = True, + postprocess: bool = True, + cancels: Dict[str, Any] | List[Dict[str, Any]] | None = None, + every: float | None = None, + _js: str | None = None, + ) -> Dependency: + """ + Parameters: + fn: the function to wrap an interface around. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component. + inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list. + outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list. + api_name: Defining this parameter exposes the endpoint in the api docs + scroll_to_output: If True, will scroll to output component on completion + show_progress: If True, will show progress animation while pending + queue: If True, will place the request on the queue, if the queue exists + batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component. + max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True) + preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component). + postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser. + cancels: A list of other events to cancel when this event is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. + every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds. Queue must be enabled. + """ + # _js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components. + if status_tracker: + warnings.warn( + "The 'status_tracker' parameter has been deprecated and has no effect." + ) + dep, dep_index = self.trigger.set_event_trigger( + self.event_name, + fn, + inputs, + outputs, + preprocess=preprocess, + postprocess=postprocess, + scroll_to_output=scroll_to_output, + show_progress=show_progress + if show_progress is not None + else self.show_progress, + api_name=api_name, + js=_js, + queue=queue, + batch=batch, + max_batch_size=max_batch_size, + every=every, + trigger_after=self.trigger_after, + trigger_only_on_success=self.trigger_only_on_success, + ) + set_cancel_events(self.trigger, self.event_name, cancels) + if self.callback: + self.callback() + return Dependency(self.trigger, dep, dep_index) + + +@document("*change", inherit=True) +class Changeable(EventListener): + def __init__(self): + self.change = EventListenerMethod(self, "change") + """ + This event is triggered when the component's input value changes (e.g. when the user types in a textbox + or uploads an image). This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*click", inherit=True) +class Clickable(EventListener): + def __init__(self): + self.click = EventListenerMethod(self, "click") + """ + This event is triggered when the component (e.g. a button) is clicked. + This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*submit", inherit=True) +class Submittable(EventListener): + def __init__(self): + self.submit = EventListenerMethod(self, "submit") + """ + This event is triggered when the user presses the Enter key while the component (e.g. a textbox) is focused. + This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*edit", inherit=True) +class Editable(EventListener): + def __init__(self): + self.edit = EventListenerMethod(self, "edit") + """ + This event is triggered when the user edits the component (e.g. image) using the + built-in editor. This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*clear", inherit=True) +class Clearable(EventListener): + def __init__(self): + self.clear = EventListenerMethod(self, "clear") + """ + This event is triggered when the user clears the component (e.g. image or audio) + using the X button for the component. This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*play", "*pause", "*stop", inherit=True) +class Playable(EventListener): + def __init__(self): + self.play = EventListenerMethod(self, "play") + """ + This event is triggered when the user plays the component (e.g. audio or video). + This method can be used when this component is in a Gradio Blocks. + """ + + self.pause = EventListenerMethod(self, "pause") + """ + This event is triggered when the user pauses the component (e.g. audio or video). + This method can be used when this component is in a Gradio Blocks. + """ + + self.stop = EventListenerMethod(self, "stop") + """ + This event is triggered when the user stops the component (e.g. audio or video). + This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*stream", inherit=True) +class Streamable(EventListener): + def __init__(self): + self.streaming: bool + self.stream = EventListenerMethod( + self, + "stream", + show_progress=False, + callback=lambda: setattr(self, "streaming", True), + ) + """ + This event is triggered when the user streams the component (e.g. a live webcam + component). This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*blur", inherit=True) +class Blurrable(EventListener): + def __init__(self): + self.blur = EventListenerMethod(self, "blur") + """ + This event is triggered when the component's is unfocused/blurred (e.g. when the user clicks outside of a textbox). This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*upload", inherit=True) +class Uploadable(EventListener): + def __init__(self): + self.upload = EventListenerMethod(self, "upload") + """ + This event is triggered when the user uploads a file into the component (e.g. when the user uploads a video into a video component). This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*release", inherit=True) +class Releaseable(EventListener): + def __init__(self): + self.release = EventListenerMethod(self, "release") + """ + This event is triggered when the user releases the mouse on this component (e.g. when the user releases the slider). This method can be used when this component is in a Gradio Blocks. + """ + + +@document("*select", inherit=True) +class Selectable(EventListener): + def __init__(self): + self.selectable: bool = False + self.select = EventListenerMethod( + self, "select", callback=lambda: setattr(self, "selectable", True) + ) + """ + This event is triggered when the user selects from within the Component. + This event has EventData of type gradio.SelectData that carries information, accessible through SelectData.index and SelectData.value. + See EventData documentation on how to use this event data. + """ + + +class SelectData(EventData): + def __init__(self, target: Block | None, data: Any): + super().__init__(target, data) + self.index: int | Tuple[int, int] = data["index"] + """ + The index of the selected item. Is a tuple if the component is two dimensional or selection is a range. + """ + self.value: Any = data["value"] + """ + The value of the selected item. + """ + self.selected: bool = data.get("selected", True) + """ + True if the item was selected, False if deselected. + """ diff --git a/gradio/exceptions.py b/gradio/exceptions.py new file mode 100644 index 0000000000000000000000000000000000000000..54e582f58f964f34a5e1d87bf86ab2321af8538f --- /dev/null +++ b/gradio/exceptions.py @@ -0,0 +1,39 @@ +from gradio.documentation import document, set_documentation_group + +set_documentation_group("helpers") + + +class DuplicateBlockError(ValueError): + """Raised when a Blocks contains more than one Block with the same id""" + + pass + + +class TooManyRequestsError(Exception): + """Raised when the Hugging Face API returns a 429 status code.""" + + pass + + +class InvalidApiName(ValueError): + pass + + +@document() +class Error(Exception): + """ + This class allows you to pass custom error messages to the user. You can do so by raising a gr.Error("custom message") anywhere in the code, and when that line is executed the custom message will appear in a modal on the demo. + + Demos: calculator + """ + + def __init__(self, message: str): + """ + Parameters: + message: The error message to be displayed to the user. + """ + self.message = message + super().__init__(self.message) + + def __str__(self): + return repr(self.message) diff --git a/gradio/external.py b/gradio/external.py new file mode 100644 index 0000000000000000000000000000000000000000..8e6686470910b232909a6fd2af1ef41e8c729b3d --- /dev/null +++ b/gradio/external.py @@ -0,0 +1,512 @@ +"""This module should not be used directly as its API is subject to change. Instead, +use the `gr.Blocks.load()` or `gr.Interface.load()` functions.""" + +from __future__ import annotations + +import json +import re +import uuid +import warnings +from copy import deepcopy +from typing import TYPE_CHECKING, Callable, Dict + +import requests + +import gradio +from gradio import components, utils +from gradio.context import Context +from gradio.exceptions import Error, TooManyRequestsError +from gradio.external_utils import ( + cols_to_rows, + encode_to_base64, + get_tabular_examples, + get_ws_fn, + postprocess_label, + rows_to_cols, + streamline_spaces_interface, + use_websocket, +) +from gradio.processing_utils import to_binary + +if TYPE_CHECKING: + from gradio.blocks import Blocks + from gradio.interface import Interface + + +def load_blocks_from_repo( + name: str, + src: str | None = None, + api_key: str | None = None, + alias: str | None = None, + **kwargs, +) -> Blocks: + """Creates and returns a Blocks instance from a Hugging Face model or Space repo.""" + if src is None: + # Separate the repo type (e.g. "model") from repo name (e.g. "google/vit-base-patch16-224") + tokens = name.split("/") + assert ( + len(tokens) > 1 + ), "Either `src` parameter must be provided, or `name` must be formatted as {src}/{repo name}" + src = tokens[0] + name = "/".join(tokens[1:]) + + factory_methods: Dict[str, Callable] = { + # for each repo type, we have a method that returns the Interface given the model name & optionally an api_key + "huggingface": from_model, + "models": from_model, + "spaces": from_spaces, + } + assert src.lower() in factory_methods, "parameter: src must be one of {}".format( + factory_methods.keys() + ) + + if api_key is not None: + if Context.access_token is not None and Context.access_token != api_key: + warnings.warn( + """You are loading a model/Space with a different access token than the one you used to load a previous model/Space. This is not recommended, as it may cause unexpected behavior.""" + ) + Context.access_token = api_key + + blocks: gradio.Blocks = factory_methods[src](name, api_key, alias, **kwargs) + return blocks + + +def chatbot_preprocess(text, state): + payload = { + "inputs": {"generated_responses": None, "past_user_inputs": None, "text": text} + } + if state is not None: + payload["inputs"]["generated_responses"] = state["conversation"][ + "generated_responses" + ] + payload["inputs"]["past_user_inputs"] = state["conversation"][ + "past_user_inputs" + ] + + return payload + + +def chatbot_postprocess(response): + response_json = response.json() + chatbot_value = list( + zip( + response_json["conversation"]["past_user_inputs"], + response_json["conversation"]["generated_responses"], + ) + ) + return chatbot_value, response_json + + +def from_model(model_name: str, api_key: str | None, alias: str | None, **kwargs): + model_url = "https://huggingface.co/{}".format(model_name) + api_url = "https://api-inference.huggingface.co/models/{}".format(model_name) + print("Fetching model from: {}".format(model_url)) + + headers = {"Authorization": f"Bearer {api_key}"} if api_key is not None else {} + + # Checking if model exists, and if so, it gets the pipeline + response = requests.request("GET", api_url, headers=headers) + assert ( + response.status_code == 200 + ), f"Could not find model: {model_name}. If it is a private or gated model, please provide your Hugging Face access token (https://huggingface.co/settings/tokens) as the argument for the `api_key` parameter." + p = response.json().get("pipeline_tag") + pipelines = { + "audio-classification": { + # example model: ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition + "inputs": components.Audio(source="upload", type="filepath", label="Input"), + "outputs": components.Label(label="Class"), + "preprocess": lambda i: to_binary, + "postprocess": lambda r: postprocess_label( + {i["label"].split(", ")[0]: i["score"] for i in r.json()} + ), + }, + "audio-to-audio": { + # example model: facebook/xm_transformer_sm_all-en + "inputs": components.Audio(source="upload", type="filepath", label="Input"), + "outputs": components.Audio(label="Output"), + "preprocess": to_binary, + "postprocess": encode_to_base64, + }, + "automatic-speech-recognition": { + # example model: facebook/wav2vec2-base-960h + "inputs": components.Audio(source="upload", type="filepath", label="Input"), + "outputs": components.Textbox(label="Output"), + "preprocess": to_binary, + "postprocess": lambda r: r.json()["text"], + }, + "conversational": { + "inputs": [components.Textbox(), components.State()], # type: ignore + "outputs": [components.Chatbot(), components.State()], # type: ignore + "preprocess": chatbot_preprocess, + "postprocess": chatbot_postprocess, + }, + "feature-extraction": { + # example model: julien-c/distilbert-feature-extraction + "inputs": components.Textbox(label="Input"), + "outputs": components.Dataframe(label="Output"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r.json()[0], + }, + "fill-mask": { + "inputs": components.Textbox(label="Input"), + "outputs": components.Label(label="Classification"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: postprocess_label( + {i["token_str"]: i["score"] for i in r.json()} + ), + }, + "image-classification": { + # Example: google/vit-base-patch16-224 + "inputs": components.Image(type="filepath", label="Input Image"), + "outputs": components.Label(label="Classification"), + "preprocess": to_binary, + "postprocess": lambda r: postprocess_label( + {i["label"].split(", ")[0]: i["score"] for i in r.json()} + ), + }, + "image-to-text": { + "inputs": components.Image(type="filepath", label="Input Image"), + "outputs": components.Textbox(), + "preprocess": to_binary, + "postprocess": lambda r: r.json()[0]["generated_text"], + }, + "question-answering": { + # Example: deepset/xlm-roberta-base-squad2 + "inputs": [ + components.Textbox(lines=7, label="Context"), + components.Textbox(label="Question"), + ], + "outputs": [ + components.Textbox(label="Answer"), + components.Label(label="Score"), + ], + "preprocess": lambda c, q: {"inputs": {"context": c, "question": q}}, + "postprocess": lambda r: (r.json()["answer"], {"label": r.json()["score"]}), + }, + "summarization": { + # Example: facebook/bart-large-cnn + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Summary"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r.json()[0]["summary_text"], + }, + "text-classification": { + # Example: distilbert-base-uncased-finetuned-sst-2-english + "inputs": components.Textbox(label="Input"), + "outputs": components.Label(label="Classification"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: postprocess_label( + {i["label"].split(", ")[0]: i["score"] for i in r.json()[0]} + ), + }, + "text-generation": { + # Example: gpt2 + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Output"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r.json()[0]["generated_text"], + }, + "text2text-generation": { + # Example: valhalla/t5-small-qa-qg-hl + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Generated Text"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r.json()[0]["generated_text"], + }, + "translation": { + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Translation"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r.json()[0]["translation_text"], + }, + "zero-shot-classification": { + # Example: facebook/bart-large-mnli + "inputs": [ + components.Textbox(label="Input"), + components.Textbox(label="Possible class names (" "comma-separated)"), + components.Checkbox(label="Allow multiple true classes"), + ], + "outputs": components.Label(label="Classification"), + "preprocess": lambda i, c, m: { + "inputs": i, + "parameters": {"candidate_labels": c, "multi_class": m}, + }, + "postprocess": lambda r: postprocess_label( + { + r.json()["labels"][i]: r.json()["scores"][i] + for i in range(len(r.json()["labels"])) + } + ), + }, + "sentence-similarity": { + # Example: sentence-transformers/distilbert-base-nli-stsb-mean-tokens + "inputs": [ + components.Textbox( + value="That is a happy person", label="Source Sentence" + ), + components.Textbox( + lines=7, + placeholder="Separate each sentence by a newline", + label="Sentences to compare to", + ), + ], + "outputs": components.Label(label="Classification"), + "preprocess": lambda src, sentences: { + "inputs": { + "source_sentence": src, + "sentences": [s for s in sentences.splitlines() if s != ""], + } + }, + "postprocess": lambda r: postprocess_label( + {f"sentence {i}": v for i, v in enumerate(r.json())} + ), + }, + "text-to-speech": { + # Example: julien-c/ljspeech_tts_train_tacotron2_raw_phn_tacotron_g2p_en_no_space_train + "inputs": components.Textbox(label="Input"), + "outputs": components.Audio(label="Audio"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": encode_to_base64, + }, + "text-to-image": { + # example model: osanseviero/BigGAN-deep-128 + "inputs": components.Textbox(label="Input"), + "outputs": components.Image(label="Output"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": encode_to_base64, + }, + "token-classification": { + # example model: huggingface-course/bert-finetuned-ner + "inputs": components.Textbox(label="Input"), + "outputs": components.HighlightedText(label="Output"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r, # Handled as a special case in query_huggingface_api() + }, + } + + if p in ["tabular-classification", "tabular-regression"]: + example_data = get_tabular_examples(model_name) + col_names, example_data = cols_to_rows(example_data) + example_data = [[example_data]] if example_data else None + + pipelines[p] = { + "inputs": components.Dataframe( + label="Input Rows", + type="pandas", + headers=col_names, + col_count=(len(col_names), "fixed"), + ), + "outputs": components.Dataframe( + label="Predictions", type="array", headers=["prediction"] + ), + "preprocess": rows_to_cols, + "postprocess": lambda r: { + "headers": ["prediction"], + "data": [[pred] for pred in json.loads(r.text)], + }, + "examples": example_data, + } + + if p is None or not (p in pipelines): + raise ValueError("Unsupported pipeline type: {}".format(p)) + + pipeline = pipelines[p] + + def query_huggingface_api(*params): + # Convert to a list of input components + data = pipeline["preprocess"](*params) + if isinstance( + data, dict + ): # HF doesn't allow additional parameters for binary files (e.g. images or audio files) + data.update({"options": {"wait_for_model": True}}) + data = json.dumps(data) + response = requests.request("POST", api_url, headers=headers, data=data) + if not (response.status_code == 200): + errors_json = response.json() + errors, warns = "", "" + if errors_json.get("error"): + errors = f", Error: {errors_json.get('error')}" + if errors_json.get("warnings"): + warns = f", Warnings: {errors_json.get('warnings')}" + raise Error( + f"Could not complete request to HuggingFace API, Status Code: {response.status_code}" + + errors + + warns + ) + if ( + p == "token-classification" + ): # Handle as a special case since HF API only returns the named entities and we need the input as well + ner_groups = response.json() + input_string = params[0] + response = utils.format_ner_list(input_string, ner_groups) + output = pipeline["postprocess"](response) + return output + + if alias is None: + query_huggingface_api.__name__ = model_name + else: + query_huggingface_api.__name__ = alias + + interface_info = { + "fn": query_huggingface_api, + "inputs": pipeline["inputs"], + "outputs": pipeline["outputs"], + "title": model_name, + "examples": pipeline.get("examples"), + } + + kwargs = dict(interface_info, **kwargs) + + # So interface doesn't run pre/postprocess + # except for conversational interfaces which + # are stateful + kwargs["_api_mode"] = p != "conversational" + + interface = gradio.Interface(**kwargs) + return interface + + +def from_spaces( + space_name: str, api_key: str | None, alias: str | None, **kwargs +) -> Blocks: + space_url = "https://huggingface.co/spaces/{}".format(space_name) + + print("Fetching Space from: {}".format(space_url)) + + headers = {} + if api_key is not None: + headers["Authorization"] = f"Bearer {api_key}" + + iframe_url = ( + requests.get( + f"https://huggingface.co/api/spaces/{space_name}/host", headers=headers + ) + .json() + .get("host") + ) + + if iframe_url is None: + raise ValueError( + f"Could not find Space: {space_name}. If it is a private or gated Space, please provide your Hugging Face access token (https://huggingface.co/settings/tokens) as the argument for the `api_key` parameter." + ) + + r = requests.get(iframe_url, headers=headers) + + result = re.search( + r"window.gradio_config = (.*?);[\s]*", r.text + ) # some basic regex to extract the config + try: + config = json.loads(result.group(1)) # type: ignore + except AttributeError: + raise ValueError("Could not load the Space: {}".format(space_name)) + if "allow_flagging" in config: # Create an Interface for Gradio 2.x Spaces + return from_spaces_interface( + space_name, config, alias, api_key, iframe_url, **kwargs + ) + else: # Create a Blocks for Gradio 3.x Spaces + if kwargs: + warnings.warn( + "You cannot override parameters for this Space by passing in kwargs. " + "Instead, please load the Space as a function and use it to create a " + "Blocks or Interface locally. You may find this Guide helpful: " + "https://gradio.app/using_blocks_like_functions/" + ) + return from_spaces_blocks(config, api_key, iframe_url) + + +def from_spaces_blocks(config: Dict, api_key: str | None, iframe_url: str) -> Blocks: + api_url = "{}/api/predict/".format(iframe_url) + + headers = {"Content-Type": "application/json"} + if api_key is not None: + headers["Authorization"] = f"Bearer {api_key}" + ws_url = "{}/queue/join".format(iframe_url).replace("https", "wss") + + ws_fn = get_ws_fn(ws_url, headers) + + fns = [] + for d, dependency in enumerate(config["dependencies"]): + if dependency["backend_fn"]: + + def get_fn(outputs, fn_index, use_ws): + def fn(*data): + data = json.dumps({"data": data, "fn_index": fn_index}) + hash_data = json.dumps( + {"fn_index": fn_index, "session_hash": str(uuid.uuid4())} + ) + if use_ws: + result = utils.synchronize_async(ws_fn, data, hash_data) + output = result["data"] + else: + response = requests.post(api_url, headers=headers, data=data) + result = json.loads(response.content.decode("utf-8")) + try: + output = result["data"] + except KeyError: + if "error" in result and "429" in result["error"]: + raise TooManyRequestsError( + "Too many requests to the Hugging Face API" + ) + raise KeyError( + f"Could not find 'data' key in response from external Space. Response received: {result}" + ) + if len(outputs) == 1: + output = output[0] + return output + + return fn + + fn = get_fn( + deepcopy(dependency["outputs"]), d, use_websocket(config, dependency) + ) + fns.append(fn) + else: + fns.append(None) + return gradio.Blocks.from_config(config, fns, iframe_url) + + +def from_spaces_interface( + model_name: str, + config: Dict, + alias: str | None, + api_key: str | None, + iframe_url: str, + **kwargs, +) -> Interface: + + config = streamline_spaces_interface(config) + api_url = "{}/api/predict/".format(iframe_url) + headers = {"Content-Type": "application/json"} + if api_key is not None: + headers["Authorization"] = f"Bearer {api_key}" + + # The function should call the API with preprocessed data + def fn(*data): + data = json.dumps({"data": data}) + response = requests.post(api_url, headers=headers, data=data) + result = json.loads(response.content.decode("utf-8")) + try: + output = result["data"] + except KeyError: + if "error" in result and "429" in result["error"]: + raise TooManyRequestsError("Too many requests to the Hugging Face API") + raise KeyError( + f"Could not find 'data' key in response from external Space. Response received: {result}" + ) + if ( + len(config["outputs"]) == 1 + ): # if the fn is supposed to return a single value, pop it + output = output[0] + if len(config["outputs"]) == 1 and isinstance( + output, list + ): # Needed to support Output.Image() returning bounding boxes as well (TODO: handle different versions of gradio since they have slightly different APIs) + output = output[0] + return output + + fn.__name__ = alias if (alias is not None) else model_name + config["fn"] = fn + + kwargs = dict(config, **kwargs) + kwargs["_api_mode"] = True + interface = gradio.Interface(**kwargs) + return interface diff --git a/gradio/external_utils.py b/gradio/external_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..82294add0fe12ea33f6e7e9846488f7338e6d14e --- /dev/null +++ b/gradio/external_utils.py @@ -0,0 +1,185 @@ +"""Utility function for gradio/external.py""" + +import base64 +import json +import math +import operator +import re +import warnings +from typing import Any, Dict, List, Tuple + +import requests +import websockets +import yaml +from packaging import version +from websockets.legacy.protocol import WebSocketCommonProtocol + +from gradio import components, exceptions + +################## +# Helper functions for processing tabular data +################## + + +def get_tabular_examples(model_name: str) -> Dict[str, List[float]]: + readme = requests.get(f"https://huggingface.co/{model_name}/resolve/main/README.md") + if readme.status_code != 200: + warnings.warn(f"Cannot load examples from README for {model_name}", UserWarning) + example_data = {} + else: + yaml_regex = re.search( + "(?:^|[\r\n])---[\n\r]+([\\S\\s]*?)[\n\r]+---([\n\r]|$)", readme.text + ) + if yaml_regex is None: + example_data = {} + else: + example_yaml = next( + yaml.safe_load_all(readme.text[: yaml_regex.span()[-1]]) + ) + example_data = example_yaml.get("widget", {}).get("structuredData", {}) + if not example_data: + raise ValueError( + f"No example data found in README.md of {model_name} - Cannot build gradio demo. " + "See the README.md here: https://huggingface.co/scikit-learn/tabular-playground/blob/main/README.md " + "for a reference on how to provide example data to your model." + ) + # replace nan with string NaN for inference API + for data in example_data.values(): + for i, val in enumerate(data): + if isinstance(val, float) and math.isnan(val): + data[i] = "NaN" + return example_data + + +def cols_to_rows( + example_data: Dict[str, List[float]] +) -> Tuple[List[str], List[List[float]]]: + headers = list(example_data.keys()) + n_rows = max(len(example_data[header] or []) for header in headers) + data = [] + for row_index in range(n_rows): + row_data = [] + for header in headers: + col = example_data[header] or [] + if row_index >= len(col): + row_data.append("NaN") + else: + row_data.append(col[row_index]) + data.append(row_data) + return headers, data + + +def rows_to_cols(incoming_data: Dict) -> Dict[str, Dict[str, Dict[str, List[str]]]]: + data_column_wise = {} + for i, header in enumerate(incoming_data["headers"]): + data_column_wise[header] = [str(row[i]) for row in incoming_data["data"]] + return {"inputs": {"data": data_column_wise}} + + +################## +# Helper functions for processing other kinds of data +################## + + +def postprocess_label(scores: Dict) -> Dict: + sorted_pred = sorted(scores.items(), key=operator.itemgetter(1), reverse=True) + return { + "label": sorted_pred[0][0], + "confidences": [ + {"label": pred[0], "confidence": pred[1]} for pred in sorted_pred + ], + } + + +def encode_to_base64(r: requests.Response) -> str: + # Handles the different ways HF API returns the prediction + base64_repr = base64.b64encode(r.content).decode("utf-8") + data_prefix = ";base64," + # Case 1: base64 representation already includes data prefix + if data_prefix in base64_repr: + return base64_repr + else: + content_type = r.headers.get("content-type") + # Case 2: the data prefix is a key in the response + if content_type == "application/json": + try: + content_type = r.json()[0]["content-type"] + base64_repr = r.json()[0]["blob"] + except KeyError: + raise ValueError( + "Cannot determine content type returned" "by external API." + ) + # Case 3: the data prefix is included in the response headers + else: + pass + new_base64 = "data:{};base64,".format(content_type) + base64_repr + return new_base64 + + +################## +# Helper functions for connecting to websockets +################## + + +async def get_pred_from_ws( + websocket: WebSocketCommonProtocol, data: str, hash_data: str +) -> Dict[str, Any]: + completed = False + resp = {} + while not completed: + msg = await websocket.recv() + resp = json.loads(msg) + if resp["msg"] == "queue_full": + raise exceptions.Error("Queue is full! Please try again.") + if resp["msg"] == "send_hash": + await websocket.send(hash_data) + elif resp["msg"] == "send_data": + await websocket.send(data) + completed = resp["msg"] == "process_completed" + return resp["output"] + + +def get_ws_fn(ws_url, headers): + async def ws_fn(data, hash_data): + async with websockets.connect( # type: ignore + ws_url, open_timeout=10, extra_headers=headers + ) as websocket: + return await get_pred_from_ws(websocket, data, hash_data) + + return ws_fn + + +def use_websocket(config, dependency): + queue_enabled = config.get("enable_queue", False) + queue_uses_websocket = version.parse( + config.get("version", "2.0") + ) >= version.Version("3.2") + dependency_uses_queue = dependency.get("queue", False) is not False + return queue_enabled and queue_uses_websocket and dependency_uses_queue + + +################## +# Helper function for cleaning up an Interface loaded from HF Spaces +################## + + +def streamline_spaces_interface(config: Dict) -> Dict: + """Streamlines the interface config dictionary to remove unnecessary keys.""" + config["inputs"] = [ + components.get_component_instance(component) + for component in config["input_components"] + ] + config["outputs"] = [ + components.get_component_instance(component) + for component in config["output_components"] + ] + parameters = { + "article", + "description", + "flagging_options", + "inputs", + "outputs", + "title", + } + config = {k: config[k] for k in parameters} + return config diff --git a/gradio/flagging.py b/gradio/flagging.py new file mode 100644 index 0000000000000000000000000000000000000000..cc19927d9812ed00826145b221240b969170f5a1 --- /dev/null +++ b/gradio/flagging.py @@ -0,0 +1,555 @@ +from __future__ import annotations + +import csv +import datetime +import json +import os +import time +import uuid +from abc import ABC, abstractmethod +from distutils.version import StrictVersion +from pathlib import Path +from typing import TYPE_CHECKING, Any, List + +import pkg_resources + +import gradio as gr +from gradio import utils +from gradio.documentation import document, set_documentation_group + +if TYPE_CHECKING: + from gradio.components import IOComponent + +set_documentation_group("flagging") + + +def _get_dataset_features_info(is_new, components): + """ + Takes in a list of components and returns a dataset features info + + Parameters: + is_new: boolean, whether the dataset is new or not + components: list of components + + Returns: + infos: a dictionary of the dataset features + file_preview_types: dictionary mapping of gradio components to appropriate string. + header: list of header strings + + """ + infos = {"flagged": {"features": {}}} + # File previews for certain input and output types + file_preview_types = {gr.Audio: "Audio", gr.Image: "Image"} + headers = [] + + # Generate the headers and dataset_infos + if is_new: + + for component in components: + headers.append(component.label) + infos["flagged"]["features"][component.label] = { + "dtype": "string", + "_type": "Value", + } + if isinstance(component, tuple(file_preview_types)): + headers.append(component.label + " file") + for _component, _type in file_preview_types.items(): + if isinstance(component, _component): + infos["flagged"]["features"][ + (component.label or "") + " file" + ] = {"_type": _type} + break + + headers.append("flag") + infos["flagged"]["features"]["flag"] = { + "dtype": "string", + "_type": "Value", + } + + return infos, file_preview_types, headers + + +class FlaggingCallback(ABC): + """ + An abstract class for defining the methods that any FlaggingCallback should have. + """ + + @abstractmethod + def setup(self, components: List[IOComponent], flagging_dir: str): + """ + This method should be overridden and ensure that everything is set up correctly for flag(). + This method gets called once at the beginning of the Interface.launch() method. + Parameters: + components: Set of components that will provide flagged data. + flagging_dir: A string, typically containing the path to the directory where the flagging file should be storied (provided as an argument to Interface.__init__()). + """ + pass + + @abstractmethod + def flag( + self, + flag_data: List[Any], + flag_option: str = "", + username: str | None = None, + ) -> int: + """ + This method should be overridden by the FlaggingCallback subclass and may contain optional additional arguments. + This gets called every time the button is pressed. + Parameters: + interface: The Interface object that is being used to launch the flagging interface. + flag_data: The data to be flagged. + flag_option (optional): In the case that flagging_options are provided, the flag option that is being used. + username (optional): The username of the user that is flagging the data, if logged in. + Returns: + (int) The total number of samples that have been flagged. + """ + pass + + +@document() +class SimpleCSVLogger(FlaggingCallback): + """ + A simplified implementation of the FlaggingCallback abstract class + provided for illustrative purposes. Each flagged sample (both the input and output data) + is logged to a CSV file on the machine running the gradio app. + Example: + import gradio as gr + def image_classifier(inp): + return {'cat': 0.3, 'dog': 0.7} + demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label", + flagging_callback=SimpleCSVLogger()) + """ + + def __init__(self): + pass + + def setup(self, components: List[IOComponent], flagging_dir: str | Path): + self.components = components + self.flagging_dir = flagging_dir + os.makedirs(flagging_dir, exist_ok=True) + + def flag( + self, + flag_data: List[Any], + flag_option: str = "", + username: str | None = None, + ) -> int: + flagging_dir = self.flagging_dir + log_filepath = Path(flagging_dir) / "log.csv" + + csv_data = [] + for component, sample in zip(self.components, flag_data): + save_dir = Path(flagging_dir) / utils.strip_invalid_filename_characters( + component.label or "" + ) + csv_data.append( + component.deserialize( + sample, + save_dir, + None, + ) + ) + + with open(log_filepath, "a", newline="") as csvfile: + writer = csv.writer(csvfile) + writer.writerow(utils.sanitize_list_for_csv(csv_data)) + + with open(log_filepath, "r") as csvfile: + line_count = len([None for row in csv.reader(csvfile)]) - 1 + return line_count + + +@document() +class CSVLogger(FlaggingCallback): + """ + The default implementation of the FlaggingCallback abstract class. Each flagged + sample (both the input and output data) is logged to a CSV file with headers on the machine running the gradio app. + Example: + import gradio as gr + def image_classifier(inp): + return {'cat': 0.3, 'dog': 0.7} + demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label", + flagging_callback=CSVLogger()) + Guides: using_flagging + """ + + def __init__(self): + pass + + def setup( + self, + components: List[IOComponent], + flagging_dir: str | Path, + ): + self.components = components + self.flagging_dir = flagging_dir + os.makedirs(flagging_dir, exist_ok=True) + + def flag( + self, + flag_data: List[Any], + flag_option: str = "", + username: str | None = None, + ) -> int: + flagging_dir = self.flagging_dir + log_filepath = Path(flagging_dir) / "log.csv" + is_new = not Path(log_filepath).exists() + headers = [ + getattr(component, "label", None) or f"component {idx}" + for idx, component in enumerate(self.components) + ] + [ + "flag", + "username", + "timestamp", + ] + + csv_data = [] + for idx, (component, sample) in enumerate(zip(self.components, flag_data)): + save_dir = Path(flagging_dir) / utils.strip_invalid_filename_characters( + getattr(component, "label", None) or f"component {idx}" + ) + if utils.is_update(sample): + csv_data.append(str(sample)) + else: + csv_data.append( + component.deserialize(sample, save_dir=save_dir) + if sample is not None + else "" + ) + csv_data.append(flag_option) + csv_data.append(username if username is not None else "") + csv_data.append(str(datetime.datetime.now())) + + with open(log_filepath, "a", newline="", encoding="utf-8") as csvfile: + writer = csv.writer(csvfile) + if is_new: + writer.writerow(utils.sanitize_list_for_csv(headers)) + writer.writerow(utils.sanitize_list_for_csv(csv_data)) + + with open(log_filepath, "r", encoding="utf-8") as csvfile: + line_count = len([None for row in csv.reader(csvfile)]) - 1 + return line_count + + +@document() +class HuggingFaceDatasetSaver(FlaggingCallback): + """ + A callback that saves each flagged sample (both the input and output data) + to a HuggingFace dataset. + Example: + import gradio as gr + hf_writer = gr.HuggingFaceDatasetSaver(HF_API_TOKEN, "image-classification-mistakes") + def image_classifier(inp): + return {'cat': 0.3, 'dog': 0.7} + demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label", + allow_flagging="manual", flagging_callback=hf_writer) + Guides: using_flagging + """ + + def __init__( + self, + hf_token: str, + dataset_name: str, + organization: str | None = None, + private: bool = False, + ): + """ + Parameters: + hf_token: The HuggingFace token to use to create (and write the flagged sample to) the HuggingFace dataset. + dataset_name: The name of the dataset to save the data to, e.g. "image-classifier-1" + organization: The organization to save the dataset under. The hf_token must provide write access to this organization. If not provided, saved under the name of the user corresponding to the hf_token. + private: Whether the dataset should be private (defaults to False). + """ + self.hf_token = hf_token + self.dataset_name = dataset_name + self.organization_name = organization + self.dataset_private = private + + def setup(self, components: List[IOComponent], flagging_dir: str): + """ + Params: + flagging_dir (str): local directory where the dataset is cloned, + updated, and pushed from. + """ + try: + import huggingface_hub + except (ImportError, ModuleNotFoundError): + raise ImportError( + "Package `huggingface_hub` not found is needed " + "for HuggingFaceDatasetSaver. Try 'pip install huggingface_hub'." + ) + hh_version = pkg_resources.get_distribution("huggingface_hub").version + try: + if StrictVersion(hh_version) < StrictVersion("0.6.0"): + raise ImportError( + "The `huggingface_hub` package must be version 0.6.0 or higher" + "for HuggingFaceDatasetSaver. Try 'pip install huggingface_hub --upgrade'." + ) + except ValueError: + pass + repo_id = huggingface_hub.get_full_repo_name( + self.dataset_name, token=self.hf_token + ) + path_to_dataset_repo = huggingface_hub.create_repo( + repo_id=repo_id, + token=self.hf_token, + private=self.dataset_private, + repo_type="dataset", + exist_ok=True, + ) + self.path_to_dataset_repo = path_to_dataset_repo # e.g. "https://huggingface.co/datasets/abidlabs/test-audio-10" + self.components = components + self.flagging_dir = flagging_dir + self.dataset_dir = Path(flagging_dir) / self.dataset_name + self.repo = huggingface_hub.Repository( + local_dir=str(self.dataset_dir), + clone_from=path_to_dataset_repo, + use_auth_token=self.hf_token, + ) + self.repo.git_pull(lfs=True) + + # Should filename be user-specified? + self.log_file = Path(self.dataset_dir) / "data.csv" + self.infos_file = Path(self.dataset_dir) / "dataset_infos.json" + + def flag( + self, + flag_data: List[Any], + flag_option: str = "", + username: str | None = None, + ) -> int: + self.repo.git_pull(lfs=True) + + is_new = not Path(self.log_file).exists() + + with open(self.log_file, "a", newline="", encoding="utf-8") as csvfile: + writer = csv.writer(csvfile) + + # File previews for certain input and output types + infos, file_preview_types, headers = _get_dataset_features_info( + is_new, self.components + ) + + # Generate the headers and dataset_infos + if is_new: + writer.writerow(utils.sanitize_list_for_csv(headers)) + + # Generate the row corresponding to the flagged sample + csv_data = [] + for component, sample in zip(self.components, flag_data): + save_dir = Path( + self.dataset_dir + ) / utils.strip_invalid_filename_characters(component.label or "") + filepath = component.deserialize(sample, save_dir, None) + csv_data.append(filepath) + if isinstance(component, tuple(file_preview_types)): + csv_data.append( + "{}/resolve/main/{}".format(self.path_to_dataset_repo, filepath) + ) + csv_data.append(flag_option) + writer.writerow(utils.sanitize_list_for_csv(csv_data)) + + if is_new: + json.dump(infos, open(self.infos_file, "w")) + + with open(self.log_file, "r", encoding="utf-8") as csvfile: + line_count = len([None for row in csv.reader(csvfile)]) - 1 + + self.repo.push_to_hub(commit_message="Flagged sample #{}".format(line_count)) + + return line_count + + +class HuggingFaceDatasetJSONSaver(FlaggingCallback): + """ + A FlaggingCallback that saves flagged data to a Hugging Face dataset in JSONL format. + + Each data sample is saved in a different JSONL file, + allowing multiple users to use flagging simultaneously. + Saving to a single CSV would cause errors as only one user can edit at the same time. + + """ + + def __init__( + self, + hf_token: str, + dataset_name: str, + organization: str | None = None, + private: bool = False, + verbose: bool = True, + ): + """ + Params: + hf_token (str): The token to use to access the huggingface API. + dataset_name (str): The name of the dataset to save the data to, e.g. + "image-classifier-1" + organization (str): The name of the organization to which to attach + the datasets. If None, the dataset attaches to the user only. + private (bool): If the dataset does not already exist, whether it + should be created as a private dataset or public. Private datasets + may require paid huggingface.co accounts + verbose (bool): Whether to print out the status of the dataset + creation. + """ + self.hf_token = hf_token + self.dataset_name = dataset_name + self.organization_name = organization + self.dataset_private = private + self.verbose = verbose + + def setup(self, components: List[IOComponent], flagging_dir: str): + """ + Params: + components List[Component]: list of components for flagging + flagging_dir (str): local directory where the dataset is cloned, + updated, and pushed from. + """ + try: + import huggingface_hub + except (ImportError, ModuleNotFoundError): + raise ImportError( + "Package `huggingface_hub` not found is needed " + "for HuggingFaceDatasetJSONSaver. Try 'pip install huggingface_hub'." + ) + hh_version = pkg_resources.get_distribution("huggingface_hub").version + try: + if StrictVersion(hh_version) < StrictVersion("0.6.0"): + raise ImportError( + "The `huggingface_hub` package must be version 0.6.0 or higher" + "for HuggingFaceDatasetSaver. Try 'pip install huggingface_hub --upgrade'." + ) + except ValueError: + pass + repo_id = huggingface_hub.get_full_repo_name( + self.dataset_name, token=self.hf_token + ) + path_to_dataset_repo = huggingface_hub.create_repo( + repo_id=repo_id, + token=self.hf_token, + private=self.dataset_private, + repo_type="dataset", + exist_ok=True, + ) + self.path_to_dataset_repo = path_to_dataset_repo # e.g. "https://huggingface.co/datasets/abidlabs/test-audio-10" + self.components = components + self.flagging_dir = flagging_dir + self.dataset_dir = Path(flagging_dir) / self.dataset_name + self.repo = huggingface_hub.Repository( + local_dir=str(self.dataset_dir), + clone_from=path_to_dataset_repo, + use_auth_token=self.hf_token, + ) + self.repo.git_pull(lfs=True) + + self.infos_file = Path(self.dataset_dir) / "dataset_infos.json" + + def flag( + self, + flag_data: List[Any], + flag_option: str = "", + username: str | None = None, + ) -> str: + self.repo.git_pull(lfs=True) + + # Generate unique folder for the flagged sample + unique_name = self.get_unique_name() # unique name for folder + folder_name = ( + Path(self.dataset_dir) / unique_name + ) # unique folder for specific example + os.makedirs(folder_name) + + # Now uses the existence of `dataset_infos.json` to determine if new + is_new = not Path(self.infos_file).exists() + + # File previews for certain input and output types + infos, file_preview_types, _ = _get_dataset_features_info( + is_new, self.components + ) + + # Generate the row and header corresponding to the flagged sample + csv_data = [] + headers = [] + + for component, sample in zip(self.components, flag_data): + headers.append(component.label) + + try: + save_dir = Path(folder_name) / utils.strip_invalid_filename_characters( + component.label or "" + ) + filepath = component.deserialize(sample, save_dir, None) + except Exception: + # Could not parse 'sample' (mostly) because it was None and `component.save_flagged` + # does not handle None cases. + # for example: Label (line 3109 of components.py raises an error if data is None) + filepath = None + + if isinstance(component, tuple(file_preview_types)): + headers.append(component.label or "" + " file") + + csv_data.append( + "{}/resolve/main/{}/{}".format( + self.path_to_dataset_repo, unique_name, filepath + ) + if filepath is not None + else None + ) + + csv_data.append(filepath) + headers.append("flag") + csv_data.append(flag_option) + + # Creates metadata dict from row data and dumps it + metadata_dict = { + header: _csv_data for header, _csv_data in zip(headers, csv_data) + } + self.dump_json(metadata_dict, Path(folder_name) / "metadata.jsonl") + + if is_new: + json.dump(infos, open(self.infos_file, "w")) + + self.repo.push_to_hub(commit_message="Flagged sample {}".format(unique_name)) + return unique_name + + def get_unique_name(self): + id = uuid.uuid4() + return str(id) + + def dump_json(self, thing: dict, file_path: str | Path) -> None: + with open(file_path, "w+", encoding="utf8") as f: + json.dump(thing, f) + + +class FlagMethod: + """ + Helper class that contains the flagging options and calls the flagging method. Also + provides visual feedback to the user when flag is clicked. + """ + + def __init__( + self, + flagging_callback: FlaggingCallback, + label: str, + value: str, + visual_feedback: bool = True, + ): + self.flagging_callback = flagging_callback + self.label = label + self.value = value + self.__name__ = "Flag" + self.visual_feedback = visual_feedback + + def __call__(self, *flag_data): + try: + self.flagging_callback.flag(list(flag_data), flag_option=self.value) + except Exception as e: + print("Error while flagging: {}".format(e)) + if self.visual_feedback: + return "Error!" + if not self.visual_feedback: + return + time.sleep(0.8) # to provide enough time for the user to observe button change + return self.reset() + + def reset(self): + return gr.Button.update(value=self.label, interactive=True) diff --git a/gradio/helpers.py b/gradio/helpers.py new file mode 100644 index 0000000000000000000000000000000000000000..3619c40c69288611a2403bc1f5d389b3e80f6d80 --- /dev/null +++ b/gradio/helpers.py @@ -0,0 +1,839 @@ +""" +Defines helper methods useful for loading and caching Interface examples. +""" +from __future__ import annotations + +import ast +import csv +import inspect +import os +import subprocess +import tempfile +import threading +import warnings +from pathlib import Path +from typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, List, Tuple + +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +import PIL +import PIL.Image + +from gradio import processing_utils, routes, utils +from gradio.context import Context +from gradio.documentation import document, set_documentation_group +from gradio.flagging import CSVLogger + +if TYPE_CHECKING: # Only import for type checking (to avoid circular imports). + from gradio.blocks import Block + from gradio.components import IOComponent + +CACHED_FOLDER = "gradio_cached_examples" +LOG_FILE = "log.csv" + +set_documentation_group("helpers") + + +def create_examples( + examples: List[Any] | List[List[Any]] | str, + inputs: IOComponent | List[IOComponent], + outputs: IOComponent | List[IOComponent] | None = None, + fn: Callable | None = None, + cache_examples: bool = False, + examples_per_page: int = 10, + _api_mode: bool = False, + label: str | None = None, + elem_id: str | None = None, + run_on_click: bool = False, + preprocess: bool = True, + postprocess: bool = True, + batch: bool = False, +): + """Top-level synchronous function that creates Examples. Provided for backwards compatibility, i.e. so that gr.Examples(...) can be used to create the Examples component.""" + examples_obj = Examples( + examples=examples, + inputs=inputs, + outputs=outputs, + fn=fn, + cache_examples=cache_examples, + examples_per_page=examples_per_page, + _api_mode=_api_mode, + label=label, + elem_id=elem_id, + run_on_click=run_on_click, + preprocess=preprocess, + postprocess=postprocess, + batch=batch, + _initiated_directly=False, + ) + utils.synchronize_async(examples_obj.create) + return examples_obj + + +@document() +class Examples: + """ + This class is a wrapper over the Dataset component and can be used to create Examples + for Blocks / Interfaces. Populates the Dataset component with examples and + assigns event listener so that clicking on an example populates the input/output + components. Optionally handles example caching for fast inference. + + Demos: blocks_inputs, fake_gan + Guides: more_on_examples_and_flagging, using_hugging_face_integrations, image_classification_in_pytorch, image_classification_in_tensorflow, image_classification_with_vision_transformers, create_your_own_friends_with_a_gan + """ + + def __init__( + self, + examples: List[Any] | List[List[Any]] | str, + inputs: IOComponent | List[IOComponent], + outputs: IOComponent | List[IOComponent] | None = None, + fn: Callable | None = None, + cache_examples: bool = False, + examples_per_page: int = 10, + _api_mode: bool = False, + label: str | None = "Examples", + elem_id: str | None = None, + run_on_click: bool = False, + preprocess: bool = True, + postprocess: bool = True, + batch: bool = False, + _initiated_directly: bool = True, + ): + """ + Parameters: + examples: example inputs that can be clicked to populate specific components. Should be nested list, in which the outer list consists of samples and each inner list consists of an input corresponding to each input component. A string path to a directory of examples can also be provided but it should be within the directory with the python file running the gradio app. If there are multiple input components and a directory is provided, a log.csv file must be present in the directory to link corresponding inputs. + inputs: the component or list of components corresponding to the examples + outputs: optionally, provide the component or list of components corresponding to the output of the examples. Required if `cache` is True. + fn: optionally, provide the function to run to generate the outputs corresponding to the examples. Required if `cache` is True. + cache_examples: if True, caches examples for fast runtime. If True, then `fn` and `outputs` need to be provided + examples_per_page: how many examples to show per page. + label: the label to use for the examples component (by default, "Examples") + elem_id: an optional string that is assigned as the id of this component in the HTML DOM. + run_on_click: if cache_examples is False, clicking on an example does not run the function when an example is clicked. Set this to True to run the function when an example is clicked. Has no effect if cache_examples is True. + preprocess: if True, preprocesses the example input before running the prediction function and caching the output. Only applies if cache_examples is True. + postprocess: if True, postprocesses the example output after running the prediction function and before caching. Only applies if cache_examples is True. + batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. Used only if cache_examples is True. + """ + if _initiated_directly: + warnings.warn( + "Please use gr.Examples(...) instead of gr.examples.Examples(...) to create the Examples.", + ) + + if cache_examples and (fn is None or outputs is None): + raise ValueError("If caching examples, `fn` and `outputs` must be provided") + + if not isinstance(inputs, list): + inputs = [inputs] + if outputs and not isinstance(outputs, list): + outputs = [outputs] + + working_directory = Path().absolute() + + if examples is None: + raise ValueError("The parameter `examples` cannot be None") + elif isinstance(examples, list) and ( + len(examples) == 0 or isinstance(examples[0], list) + ): + pass + elif ( + isinstance(examples, list) and len(inputs) == 1 + ): # If there is only one input component, examples can be provided as a regular list instead of a list of lists + examples = [[e] for e in examples] + elif isinstance(examples, str): + if not Path(examples).exists(): + raise FileNotFoundError( + "Could not find examples directory: " + examples + ) + working_directory = examples + if not (Path(examples) / LOG_FILE).exists(): + if len(inputs) == 1: + examples = [[e] for e in os.listdir(examples)] + else: + raise FileNotFoundError( + "Could not find log file (required for multiple inputs): " + + LOG_FILE + ) + else: + with open(Path(examples) / LOG_FILE) as logs: + examples = list(csv.reader(logs)) + examples = [ + examples[i][: len(inputs)] for i in range(1, len(examples)) + ] # remove header and unnecessary columns + + else: + raise ValueError( + "The parameter `examples` must either be a string directory or a list" + "(if there is only 1 input component) or (more generally), a nested " + "list, where each sublist represents a set of inputs." + ) + + input_has_examples = [False] * len(inputs) + for example in examples: + for idx, example_for_input in enumerate(example): + if not (example_for_input is None): + try: + input_has_examples[idx] = True + except IndexError: + pass # If there are more example components than inputs, ignore. This can sometimes be intentional (e.g. loading from a log file where outputs and timestamps are also logged) + + inputs_with_examples = [ + inp for (inp, keep) in zip(inputs, input_has_examples) if keep + ] + non_none_examples = [ + [ex for (ex, keep) in zip(example, input_has_examples) if keep] + for example in examples + ] + + self.examples = examples + self.non_none_examples = non_none_examples + self.inputs = inputs + self.inputs_with_examples = inputs_with_examples + self.outputs = outputs + self.fn = fn + self.cache_examples = cache_examples + self._api_mode = _api_mode + self.preprocess = preprocess + self.postprocess = postprocess + self.batch = batch + + with utils.set_directory(working_directory): + self.processed_examples = [ + [ + component.postprocess(sample) + for component, sample in zip(inputs, example) + ] + for example in examples + ] + self.non_none_processed_examples = [ + [ex for (ex, keep) in zip(example, input_has_examples) if keep] + for example in self.processed_examples + ] + if cache_examples: + for example in self.examples: + if len([ex for ex in example if ex is not None]) != len(self.inputs): + warnings.warn( + "Examples are being cached but not all input components have " + "example values. This may result in an exception being thrown by " + "your function. If you do get an error while caching examples, make " + "sure all of your inputs have example values for all of your examples " + "or you provide default values for those particular parameters in your function." + ) + break + + from gradio import components + + with utils.set_directory(working_directory): + self.dataset = components.Dataset( + components=inputs_with_examples, + samples=non_none_examples, + type="index", + label=label, + samples_per_page=examples_per_page, + elem_id=elem_id, + ) + + self.cached_folder = Path(CACHED_FOLDER) / str(self.dataset._id) + self.cached_file = Path(self.cached_folder) / "log.csv" + self.cache_examples = cache_examples + self.run_on_click = run_on_click + + async def create(self) -> None: + """Caches the examples if self.cache_examples is True and creates the Dataset + component to hold the examples""" + + async def load_example(example_id): + if self.cache_examples: + processed_example = self.non_none_processed_examples[ + example_id + ] + await self.load_from_cache(example_id) + else: + processed_example = self.non_none_processed_examples[example_id] + return utils.resolve_singleton(processed_example) + + if Context.root_block: + if self.cache_examples and self.outputs: + targets = self.inputs_with_examples + self.outputs + else: + targets = self.inputs_with_examples + self.dataset.click( + load_example, + inputs=[self.dataset], + outputs=targets, # type: ignore + show_progress=False, + postprocess=False, + queue=False, + ) + if self.run_on_click and not self.cache_examples: + if self.fn is None: + raise ValueError("Cannot run_on_click if no function is provided") + self.dataset.click( + self.fn, + inputs=self.inputs, # type: ignore + outputs=self.outputs, # type: ignore + ) + + if self.cache_examples: + await self.cache() + + async def cache(self) -> None: + """ + Caches all of the examples so that their predictions can be shown immediately. + """ + if Path(self.cached_file).exists(): + print( + f"Using cache from '{utils.abspath(self.cached_folder)}' directory. If method or examples have changed since last caching, delete this folder to clear cache." + ) + else: + if Context.root_block is None: + raise ValueError("Cannot cache examples if not in a Blocks context") + + print(f"Caching examples at: '{utils.abspath(self.cached_folder)}'") + cache_logger = CSVLogger() + + # create a fake dependency to process the examples and get the predictions + dependency, fn_index = Context.root_block.set_event_trigger( + event_name="fake_event", + fn=self.fn, + inputs=self.inputs_with_examples, # type: ignore + outputs=self.outputs, # type: ignore + preprocess=self.preprocess and not self._api_mode, + postprocess=self.postprocess and not self._api_mode, + batch=self.batch, + ) + + assert self.outputs is not None + cache_logger.setup(self.outputs, self.cached_folder) + for example_id, _ in enumerate(self.examples): + processed_input = self.processed_examples[example_id] + if self.batch: + processed_input = [[value] for value in processed_input] + prediction = await Context.root_block.process_api( + fn_index=fn_index, inputs=processed_input, request=None, state={} + ) + output = prediction["data"] + if self.batch: + output = [value[0] for value in output] + cache_logger.flag(output) + # Remove the "fake_event" to prevent bugs in loading interfaces from spaces + Context.root_block.dependencies.remove(dependency) + Context.root_block.fns.pop(fn_index) + + async def load_from_cache(self, example_id: int) -> List[Any]: + """Loads a particular cached example for the interface. + Parameters: + example_id: The id of the example to process (zero-indexed). + """ + with open(self.cached_file, encoding="utf-8") as cache: + examples = list(csv.reader(cache)) + example = examples[example_id + 1] # +1 to adjust for header + output = [] + assert self.outputs is not None + for component, value in zip(self.outputs, example): + try: + value_as_dict = ast.literal_eval(value) + assert utils.is_update(value_as_dict) + output.append(value_as_dict) + except (ValueError, TypeError, SyntaxError, AssertionError): + output.append(component.serialize(value, self.cached_folder)) + return output + + +class TrackedIterable: + def __init__( + self, + iterable: Iterable | None, + index: int | None, + length: int | None, + desc: str | None, + unit: str | None, + _tqdm=None, + progress: float | None = None, + ) -> None: + self.iterable = iterable + self.index = index + self.length = length + self.desc = desc + self.unit = unit + self._tqdm = _tqdm + self.progress = progress + + +@document("__call__", "tqdm") +class Progress(Iterable): + """ + The Progress class provides a custom progress tracker that is used in a function signature. + To attach a Progress tracker to a function, simply add a parameter right after the input parameters that has a default value set to a `gradio.Progress()` instance. + The Progress tracker can then be updated in the function by calling the Progress object or using the `tqdm` method on an Iterable. + The Progress tracker is currently only available with `queue()`. + Example: + import gradio as gr + import time + def my_function(x, progress=gr.Progress()): + progress(0, desc="Starting...") + time.sleep(1) + for i in progress.tqdm(range(100)): + time.sleep(0.1) + return x + gr.Interface(my_function, gr.Textbox(), gr.Textbox()).queue().launch() + Demos: progress + """ + + def __init__( + self, + track_tqdm: bool = False, + _callback: Callable | None = None, # for internal use only + _event_id: str | None = None, + ): + """ + Parameters: + track_tqdm: If True, the Progress object will track any tqdm.tqdm iterations with the tqdm library in the function. + """ + self.track_tqdm = track_tqdm + self._callback = _callback + self._event_id = _event_id + self.iterables: List[TrackedIterable] = [] + + def __len__(self): + return self.iterables[-1].length + + def __iter__(self): + return self + + def __next__(self): + """ + Updates progress tracker with next item in iterable. + """ + if self._callback: + current_iterable = self.iterables[-1] + while ( + not hasattr(current_iterable.iterable, "__next__") + and len(self.iterables) > 0 + ): + current_iterable = self.iterables.pop() + self._callback( + event_id=self._event_id, + iterables=self.iterables, + ) + assert current_iterable.index is not None, "Index not set." + current_iterable.index += 1 + try: + return next(current_iterable.iterable) # type: ignore + except StopIteration: + self.iterables.pop() + raise StopIteration + else: + return self + + def __call__( + self, + progress: float | Tuple[int, int | None] | None, + desc: str | None = None, + total: int | None = None, + unit: str = "steps", + _tqdm=None, + ): + """ + Updates progress tracker with progress and message text. + Parameters: + progress: If float, should be between 0 and 1 representing completion. If Tuple, first number represents steps completed, and second value represents total steps or None if unknown. If None, hides progress bar. + desc: description to display. + total: estimated total number of steps. + unit: unit of iterations. + """ + if self._callback: + if isinstance(progress, tuple): + index, total = progress + progress = None + else: + index = None + self._callback( + event_id=self._event_id, + iterables=self.iterables + + [TrackedIterable(None, index, total, desc, unit, _tqdm, progress)], + ) + else: + return progress + + def tqdm( + self, + iterable: Iterable | None, + desc: str | None = None, + total: int | None = None, + unit: str = "steps", + _tqdm=None, + *args, + **kwargs, + ): + """ + Attaches progress tracker to iterable, like tqdm. + Parameters: + iterable: iterable to attach progress tracker to. + desc: description to display. + total: estimated total number of steps. + unit: unit of iterations. + """ + if self._callback: + if iterable is None: + new_iterable = TrackedIterable(None, 0, total, desc, unit, _tqdm) + self.iterables.append(new_iterable) + self._callback(event_id=self._event_id, iterables=self.iterables) + return self + length = len(iterable) if hasattr(iterable, "__len__") else None # type: ignore + self.iterables.append( + TrackedIterable(iter(iterable), 0, length, desc, unit, _tqdm) + ) + return self + + def update(self, n=1): + """ + Increases latest iterable with specified number of steps. + Parameters: + n: number of steps completed. + """ + if self._callback and len(self.iterables) > 0: + current_iterable = self.iterables[-1] + assert current_iterable.index is not None, "Index not set." + current_iterable.index += n + self._callback( + event_id=self._event_id, + iterables=self.iterables, + ) + else: + return + + def close(self, _tqdm): + """ + Removes iterable with given _tqdm. + """ + if self._callback: + for i in range(len(self.iterables)): + if id(self.iterables[i]._tqdm) == id(_tqdm): + self.iterables.pop(i) + break + self._callback( + event_id=self._event_id, + iterables=self.iterables, + ) + else: + return + + +def create_tracker(root_blocks, event_id, fn, track_tqdm): + + progress = Progress(_callback=root_blocks._queue.set_progress, _event_id=event_id) + if not track_tqdm: + return progress, fn + + try: + _tqdm = __import__("tqdm") + except ModuleNotFoundError: + return progress, fn + if not hasattr(root_blocks, "_progress_tracker_per_thread"): + root_blocks._progress_tracker_per_thread = {} + + def init_tqdm(self, iterable=None, desc=None, *args, **kwargs): + self._progress = root_blocks._progress_tracker_per_thread.get( + threading.get_ident() + ) + if self._progress is not None: + self._progress.event_id = event_id + self._progress.tqdm(iterable, desc, _tqdm=self, *args, **kwargs) + kwargs["file"] = open(os.devnull, "w") + self.__init__orig__(iterable, desc, *args, **kwargs) + + def iter_tqdm(self): + if self._progress is not None: + return self._progress + else: + return self.__iter__orig__() + + def update_tqdm(self, n=1): + if self._progress is not None: + self._progress.update(n) + return self.__update__orig__(n) + + def close_tqdm(self): + if self._progress is not None: + self._progress.close(self) + return self.__close__orig__() + + def exit_tqdm(self, exc_type, exc_value, traceback): + if self._progress is not None: + self._progress.close(self) + return self.__exit__orig__(exc_type, exc_value, traceback) + + if not hasattr(_tqdm.tqdm, "__init__orig__"): + _tqdm.tqdm.__init__orig__ = _tqdm.tqdm.__init__ + _tqdm.tqdm.__init__ = init_tqdm + if not hasattr(_tqdm.tqdm, "__update__orig__"): + _tqdm.tqdm.__update__orig__ = _tqdm.tqdm.update + _tqdm.tqdm.update = update_tqdm + if not hasattr(_tqdm.tqdm, "__close__orig__"): + _tqdm.tqdm.__close__orig__ = _tqdm.tqdm.close + _tqdm.tqdm.close = close_tqdm + if not hasattr(_tqdm.tqdm, "__exit__orig__"): + _tqdm.tqdm.__exit__orig__ = _tqdm.tqdm.__exit__ + _tqdm.tqdm.__exit__ = exit_tqdm + if not hasattr(_tqdm.tqdm, "__iter__orig__"): + _tqdm.tqdm.__iter__orig__ = _tqdm.tqdm.__iter__ + _tqdm.tqdm.__iter__ = iter_tqdm + if hasattr(_tqdm, "auto") and hasattr(_tqdm.auto, "tqdm"): + _tqdm.auto.tqdm = _tqdm.tqdm + + def tracked_fn(*args): + thread_id = threading.get_ident() + root_blocks._progress_tracker_per_thread[thread_id] = progress + response = fn(*args) + del root_blocks._progress_tracker_per_thread[thread_id] + return response + + return progress, tracked_fn + + +def special_args( + fn: Callable, + inputs: List[Any] | None = None, + request: routes.Request | None = None, + event_data: EventData | None = None, +): + """ + Checks if function has special arguments Request or EventData (via annotation) or Progress (via default value). + If inputs is provided, these values will be loaded into the inputs array. + Parameters: + block_fn: function to check. + inputs: array to load special arguments into. + request: request to load into inputs. + Returns: + updated inputs, progress index, event data index. + """ + signature = inspect.signature(fn) + positional_args = [] + for i, param in enumerate(signature.parameters.values()): + if param.kind not in (param.POSITIONAL_ONLY, param.POSITIONAL_OR_KEYWORD): + break + positional_args.append(param) + progress_index = None + event_data_index = None + for i, param in enumerate(positional_args): + if isinstance(param.default, Progress): + progress_index = i + if inputs is not None: + inputs.insert(i, param.default) + elif param.annotation == routes.Request: + if inputs is not None: + inputs.insert(i, request) + elif isinstance(param.annotation, type) and issubclass( + param.annotation, EventData + ): + event_data_index = i + if inputs is not None and event_data is not None: + inputs.insert(i, param.annotation(event_data.target, event_data._data)) + if inputs is not None: + while len(inputs) < len(positional_args): + i = len(inputs) + param = positional_args[i] + if param.default == param.empty: + warnings.warn("Unexpected argument. Filling with None.") + inputs.append(None) + else: + inputs.append(param.default) + return inputs or [], progress_index, event_data_index + + +@document() +def update(**kwargs) -> dict: + """ + Updates component properties. When a function passed into a Gradio Interface or a Blocks events returns a typical value, it updates the value of the output component. But it is also possible to update the properties of an output component (such as the number of lines of a `Textbox` or the visibility of an `Image`) by returning the component's `update()` function, which takes as parameters any of the constructor parameters for that component. + This is a shorthand for using the update method on a component. + For example, rather than using gr.Number.update(...) you can just use gr.update(...). + Note that your editor's autocompletion will suggest proper parameters + if you use the update method on the component. + Demos: blocks_essay, blocks_update, blocks_essay_update + + Parameters: + kwargs: Key-word arguments used to update the component's properties. + Example: + # Blocks Example + import gradio as gr + with gr.Blocks() as demo: + radio = gr.Radio([1, 2, 4], label="Set the value of the number") + number = gr.Number(value=2, interactive=True) + radio.change(fn=lambda value: gr.update(value=value), inputs=radio, outputs=number) + demo.launch() + + # Interface example + import gradio as gr + def change_textbox(choice): + if choice == "short": + return gr.Textbox.update(lines=2, visible=True) + elif choice == "long": + return gr.Textbox.update(lines=8, visible=True) + else: + return gr.Textbox.update(visible=False) + gr.Interface( + change_textbox, + gr.Radio( + ["short", "long", "none"], label="What kind of essay would you like to write?" + ), + gr.Textbox(lines=2), + live=True, + ).launch() + """ + kwargs["__type__"] = "generic_update" + return kwargs + + +def skip() -> dict: + return update() + + +@document() +def make_waveform( + audio: str | Tuple[int, np.ndarray], + *, + bg_color: str = "#f3f4f6", + bg_image: str | None = None, + fg_alpha: float = 0.75, + bars_color: str | Tuple[str, str] = ("#fbbf24", "#ea580c"), + bar_count: int = 50, + bar_width: float = 0.6, +): + """ + Generates a waveform video from an audio file. Useful for creating an easy to share audio visualization. The output should be passed into a `gr.Video` component. + Parameters: + audio: Audio file path or tuple of (sample_rate, audio_data) + bg_color: Background color of waveform (ignored if bg_image is provided) + bg_image: Background image of waveform + fg_alpha: Opacity of foreground waveform + bars_color: Color of waveform bars. Can be a single color or a tuple of (start_color, end_color) of gradient + bar_count: Number of bars in waveform + bar_width: Width of bars in waveform. 1 represents full width, 0.5 represents half width, etc. + Returns: + A filepath to the output video. + """ + if isinstance(audio, str): + audio_file = audio + audio = processing_utils.audio_from_file(audio) + else: + tmp_wav = tempfile.NamedTemporaryFile(suffix=".wav", delete=False) + processing_utils.audio_to_file(audio[0], audio[1], tmp_wav.name) + audio_file = tmp_wav.name + duration = round(len(audio[1]) / audio[0], 4) + + # Helper methods to create waveform + def hex_to_RGB(hex_str): + return [int(hex_str[i : i + 2], 16) for i in range(1, 6, 2)] + + def get_color_gradient(c1, c2, n): + assert n > 1 + c1_rgb = np.array(hex_to_RGB(c1)) / 255 + c2_rgb = np.array(hex_to_RGB(c2)) / 255 + mix_pcts = [x / (n - 1) for x in range(n)] + rgb_colors = [((1 - mix) * c1_rgb + (mix * c2_rgb)) for mix in mix_pcts] + return [ + "#" + "".join([format(int(round(val * 255)), "02x") for val in item]) + for item in rgb_colors + ] + + # Reshape audio to have a fixed number of bars + samples = audio[1] + if len(samples.shape) > 1: + samples = np.mean(samples, 1) + bins_to_pad = bar_count - (len(samples) % bar_count) + samples = np.pad(samples, [(0, bins_to_pad)]) + samples = np.reshape(samples, (bar_count, -1)) + samples = np.abs(samples) + samples = np.max(samples, 1) + + matplotlib.use("Agg") + plt.clf() + # Plot waveform + color = ( + bars_color + if isinstance(bars_color, str) + else get_color_gradient(bars_color[0], bars_color[1], bar_count) + ) + plt.bar( + np.arange(0, bar_count), + samples * 2, + bottom=(-1 * samples), + width=bar_width, + color=color, + ) + plt.axis("off") + plt.margins(x=0) + tmp_img = tempfile.NamedTemporaryFile(suffix=".png", delete=False) + savefig_kwargs: Dict[str, Any] = {"bbox_inches": "tight"} + if bg_image is not None: + savefig_kwargs["transparent"] = True + else: + savefig_kwargs["facecolor"] = bg_color + plt.savefig(tmp_img.name, **savefig_kwargs) + waveform_img = PIL.Image.open(tmp_img.name) + waveform_img = waveform_img.resize((1000, 200)) + + # Composite waveform with background image + if bg_image is not None: + waveform_array = np.array(waveform_img) + waveform_array[:, :, 3] = waveform_array[:, :, 3] * fg_alpha + waveform_img = PIL.Image.fromarray(waveform_array) + + bg_img = PIL.Image.open(bg_image) + waveform_width, waveform_height = waveform_img.size + bg_width, bg_height = bg_img.size + if waveform_width != bg_width: + bg_img = bg_img.resize( + (waveform_width, 2 * int(bg_height * waveform_width / bg_width / 2)) + ) + bg_width, bg_height = bg_img.size + composite_height = max(bg_height, waveform_height) + composite = PIL.Image.new("RGBA", (waveform_width, composite_height), "#FFFFFF") + composite.paste(bg_img, (0, composite_height - bg_height)) + composite.paste( + waveform_img, (0, composite_height - waveform_height), waveform_img + ) + composite.save(tmp_img.name) + img_width, img_height = composite.size + else: + img_width, img_height = waveform_img.size + waveform_img.save(tmp_img.name) + + # Convert waveform to video with ffmpeg + output_mp4 = tempfile.NamedTemporaryFile(suffix=".mp4", delete=False) + + ffmpeg_cmd = f"""ffmpeg -loop 1 -i {tmp_img.name} -i {audio_file} -vf "color=c=#FFFFFF77:s={img_width}x{img_height}[bar];[0][bar]overlay=-w+(w/{duration})*t:H-h:shortest=1" -t {duration} -y {output_mp4.name}""" + + subprocess.call(ffmpeg_cmd, shell=True) + return output_mp4.name + + +@document() +class EventData: + """ + When a subclass of EventData is added as a type hint to an argument of an event listener method, this object will be passed as that argument. + It contains information about the event that triggered the listener, such the target object, and other data related to the specific event that are attributes of the subclass. + + Example: + table = gr.Dataframe([[1, 2, 3], [4, 5, 6]]) + gallery = gr.Gallery([("cat.jpg", "Cat"), ("dog.jpg", "Dog")]) + textbox = gr.Textbox("Hello World!") + + statement = gr.Textbox() + + def on_select(evt: gr.SelectData): # SelectData is a subclass of EventData + return f"You selected {evt.value} at {evt.index} from {evt.target}" + + table.select(on_select, None, statement) + gallery.select(on_select, None, statement) + textbox.select(on_select, None, statement) + Demos: gallery_selections, tictactoe + """ + + def __init__(self, target: Block | None, _data: Any): + """ + Parameters: + target: The target object that triggered the event. Can be used to distinguish if multiple components are bound to the same listener. + """ + self.target = target + self._data = _data diff --git a/gradio/inputs.py b/gradio/inputs.py new file mode 100644 index 0000000000000000000000000000000000000000..ae7c6c25dbbce899551e8e4f1559e43823a7b028 --- /dev/null +++ b/gradio/inputs.py @@ -0,0 +1,473 @@ +# type: ignore +""" +This module defines various classes that can serve as the `input` to an interface. Each class must inherit from +`InputComponent`, and each class must define a path to its template. All of the subclasses of `InputComponent` are +automatically added to a registry, which allows them to be easily referenced in other parts of the code. +""" + +from __future__ import annotations + +import warnings +from typing import Any, List, Optional, Tuple + +from gradio import components + + +class Textbox(components.Textbox): + def __init__( + self, + lines: int = 1, + placeholder: Optional[str] = None, + default: str = "", + numeric: Optional[bool] = False, + type: Optional[str] = "text", + label: Optional[str] = None, + optional: bool = False, + ): + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__( + value=default, + lines=lines, + placeholder=placeholder, + label=label, + numeric=numeric, + type=type, + optional=optional, + ) + + +class Number(components.Number): + """ + Component creates a field for user to enter numeric input. Provides a number as an argument to the wrapped function. + Input type: float + """ + + def __init__( + self, + default: Optional[float] = None, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + default (float): default value. + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no value for this component. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__(value=default, label=label, optional=optional) + + +class Slider(components.Slider): + """ + Component creates a slider that ranges from `minimum` to `maximum`. Provides number as an argument to the wrapped function. + Input type: float + """ + + def __init__( + self, + minimum: float = 0, + maximum: float = 100, + step: Optional[float] = None, + default: Optional[float] = None, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + minimum (float): minimum value for slider. + maximum (float): maximum value for slider. + step (float): increment between slider values. + default (float): default value. + label (str): component name in interface. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + + super().__init__( + value=default, + minimum=minimum, + maximum=maximum, + step=step, + label=label, + optional=optional, + ) + + +class Checkbox(components.Checkbox): + """ + Component creates a checkbox that can be set to `True` or `False`. Provides a boolean as an argument to the wrapped function. + Input type: bool + """ + + def __init__( + self, + default: bool = False, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + label (str): component name in interface. + default (bool): if True, checked by default. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__(value=default, label=label, optional=optional) + + +class CheckboxGroup(components.CheckboxGroup): + """ + Component creates a set of checkboxes of which a subset can be selected. Provides a list of strings representing the selected choices as an argument to the wrapped function. + Input type: Union[List[str], List[int]] + """ + + def __init__( + self, + choices: List[str], + default: List[str] = [], + type: str = "value", + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + choices (List[str]): list of options to select from. + default (List[str]): default selected list of options. + type (str): Type of value to be returned by component. "value" returns the list of strings of the choices selected, "index" returns the list of indicies of the choices selected. + label (str): component name in interface. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__( + value=default, + choices=choices, + type=type, + label=label, + optional=optional, + ) + + +class Radio(components.Radio): + """ + Component creates a set of radio buttons of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. + Input type: Union[str, int] + """ + + def __init__( + self, + choices: List[str], + type: str = "value", + default: Optional[str] = None, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + choices (List[str]): list of options to select from. + type (str): Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. + default (str): the button selected by default. If None, no button is selected by default. + label (str): component name in interface. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__( + choices=choices, + type=type, + value=default, + label=label, + optional=optional, + ) + + +class Dropdown(components.Dropdown): + """ + Component creates a dropdown of which only one can be selected. Provides string representing selected choice as an argument to the wrapped function. + Input type: Union[str, int] + """ + + def __init__( + self, + choices: List[str], + type: str = "value", + default: Optional[str] = None, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + choices (List[str]): list of options to select from. + type (str): Type of value to be returned by component. "value" returns the string of the choice selected, "index" returns the index of the choice selected. + default (str): default value selected in dropdown. If None, no value is selected by default. + label (str): component name in interface. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__( + choices=choices, + type=type, + value=default, + label=label, + optional=optional, + ) + + +class Image(components.Image): + """ + Component creates an image upload box with editing capabilities. + Input type: Union[numpy.array, PIL.Image, file-object] + """ + + def __init__( + self, + shape: Tuple[int, int] = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "upload", + tool: str = "editor", + type: str = "numpy", + label: str = None, + optional: bool = False, + ): + """ + Parameters: + shape (Tuple[int, int]): (width, height) shape to crop and resize image to; if None, matches input image size. + image_mode (str): How to process the uploaded image. Accepts any of the PIL image modes, e.g. "RGB" for color images, "RGBA" to include the transparency mask, "L" for black-and-white images. + invert_colors (bool): whether to invert the image as a preprocessing step. + source (str): Source of image. "upload" creates a box where user can drop an image file, "webcam" allows user to take snapshot from their webcam, "canvas" defaults to a white image that can be edited and drawn upon with tools. + tool (str): Tools used for editing. "editor" allows a full screen editor, "select" provides a cropping and zoom tool. + type (str): Type of value to be returned by component. "numpy" returns a numpy array with shape (width, height, 3) and values from 0 to 255, "pil" returns a PIL image object, "file" returns a temporary file object whose path can be retrieved by file_obj.name, "filepath" returns the path directly. + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no uploaded image, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components", + ) + super().__init__( + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + optional=optional, + ) + + +class Video(components.Video): + """ + Component creates a video file upload that is converted to a file path. + + Input type: filepath + """ + + def __init__( + self, + type: Optional[str] = None, + source: str = "upload", + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + type (str): Type of video format to be returned by component, such as 'avi' or 'mp4'. If set to None, video will keep uploaded format. + source (str): Source of video. "upload" creates a box where user can drop an video file, "webcam" allows user to record a video from their webcam. + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no uploaded video, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(format=type, source=source, label=label, optional=optional) + + +class Audio(components.Audio): + """ + Component accepts audio input files. + Input type: Union[Tuple[int, numpy.array], file-object, numpy.array] + """ + + def __init__( + self, + source: str = "upload", + type: str = "numpy", + label: str = None, + optional: bool = False, + ): + """ + Parameters: + source (str): Source of audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. + type (str): Type of value to be returned by component. "numpy" returns a 2-set tuple with an integer sample_rate and the data numpy.array of shape (samples, 2), "file" returns a temporary file object whose path can be retrieved by file_obj.name, "filepath" returns the path directly. + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no uploaded audio, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(source=source, type=type, label=label, optional=optional) + + +class File(components.File): + """ + Component accepts generic file uploads. + Input type: Union[file-object, bytes, List[Union[file-object, bytes]]] + """ + + def __init__( + self, + file_count: str = "single", + type: str = "file", + label: Optional[str] = None, + keep_filename: bool = True, + optional: bool = False, + ): + """ + Parameters: + file_count (str): if single, allows user to upload one file. If "multiple", user uploads multiple files. If "directory", user uploads all files in selected directory. Return type will be list for each file in case of "multiple" or "directory". + type (str): Type of value to be returned by component. "file" returns a temporary file object whose path can be retrieved by file_obj.name, "binary" returns an bytes object. + label (str): component name in interface. + keep_filename (bool): DEPRECATED. Original filename always kept. + optional (bool): If True, the interface can be submitted with no uploaded image, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__( + file_count=file_count, + type=type, + label=label, + keep_filename=keep_filename, + optional=optional, + ) + + +class Dataframe(components.Dataframe): + """ + Component accepts 2D input through a spreadsheet interface. + Input type: Union[pandas.DataFrame, numpy.array, List[Union[str, float]], List[List[Union[str, float]]]] + """ + + def __init__( + self, + headers: Optional[List[str]] = None, + row_count: int = 3, + col_count: Optional[int] = 3, + datatype: str | List[str] = "str", + col_width: int | List[int] = None, + default: Optional[List[List[Any]]] = None, + type: str = "pandas", + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + headers (List[str]): Header names to dataframe. If None, no headers are shown. + row_count (int): Limit number of rows for input. + col_count (int): Limit number of columns for input. If equal to 1, return data will be one-dimensional. Ignored if `headers` is provided. + datatype (Union[str, List[str]]): Datatype of values in sheet. Can be provided per column as a list of strings, or for the entire sheet as a single string. Valid datatypes are "str", "number", "bool", and "date". + col_width (Union[int, List[int]]): Width of columns in pixels. Can be provided as single value or list of values per column. + default (List[List[Any]]): Default value + type (str): Type of value to be returned by component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for a Python array. + label (str): component name in interface. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__( + value=default, + headers=headers, + row_count=row_count, + col_count=col_count, + datatype=datatype, + col_width=col_width, + type=type, + label=label, + optional=optional, + ) + + +class Timeseries(components.Timeseries): + """ + Component accepts pandas.DataFrame uploaded as a timeseries csv file. + Input type: pandas.DataFrame + """ + + def __init__( + self, + x: Optional[str] = None, + y: str | List[str] = None, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + x (str): Column name of x (time) series. None if csv has no headers, in which case first column is x series. + y (Union[str, List[str]]): Column name of y series, or list of column names if multiple series. None if csv has no headers, in which case every column after first is a y series. + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no uploaded csv file, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(x=x, y=y, label=label, optional=optional) + + +class State(components.State): + """ + Special hidden component that stores state across runs of the interface. + Input type: Any + """ + + def __init__( + self, + label: str = None, + default: Any = None, + ): + """ + Parameters: + label (str): component name in interface (not used). + default (Any): the initial value of the state. + optional (bool): this parameter is ignored. + """ + warnings.warn( + "Usage of gradio.inputs is deprecated, and will not be supported in the future, please import this component as gr.State() from gradio.components", + ) + super().__init__(value=default, label=label) + + +class Image3D(components.Model3D): + """ + Used for 3D image model output. + Input type: File object of type (.obj, glb, or .gltf) + """ + + def __init__( + self, + label: Optional[str] = None, + optional: bool = False, + ): + """ + Parameters: + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no uploaded image, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(label=label, optional=optional) diff --git a/gradio/interface.py b/gradio/interface.py new file mode 100644 index 0000000000000000000000000000000000000000..28321641ba0054673314470bd36adbdfbd03e20f --- /dev/null +++ b/gradio/interface.py @@ -0,0 +1,888 @@ +""" +This is the core file in the `gradio` package, and defines the Interface class, +including various methods for constructing an interface and then launching it. +""" + +from __future__ import annotations + +import inspect +import json +import os +import re +import warnings +import weakref +from typing import TYPE_CHECKING, Any, Callable, List, Tuple + +from gradio import Examples, interpretation, utils +from gradio.blocks import Blocks +from gradio.components import ( + Button, + Interpretation, + IOComponent, + Markdown, + State, + get_component_instance, +) +from gradio.data_classes import InterfaceTypes +from gradio.documentation import document, set_documentation_group +from gradio.events import Changeable, Streamable +from gradio.flagging import CSVLogger, FlaggingCallback, FlagMethod +from gradio.layouts import Column, Row, Tab, Tabs +from gradio.pipelines import load_from_pipeline +from gradio.themes import ThemeClass as Theme +from gradio.utils import GRADIO_VERSION + +set_documentation_group("interface") + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + from transformers.pipelines.base import Pipeline + + +@document("launch", "load", "from_pipeline", "integrate", "queue") +class Interface(Blocks): + """ + Interface is Gradio's main high-level class, and allows you to create a web-based GUI / demo + around a machine learning model (or any Python function) in a few lines of code. + You must specify three parameters: (1) the function to create a GUI for (2) the desired input components and + (3) the desired output components. Additional parameters can be used to control the appearance + and behavior of the demo. + + Example: + import gradio as gr + + def image_classifier(inp): + return {'cat': 0.3, 'dog': 0.7} + + demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label") + demo.launch() + Demos: hello_world, hello_world_3, gpt_j + Guides: quickstart, key_features, sharing_your_app, interface_state, reactive_interfaces, advanced_interface_features, setting_up_a_gradio_demo_for_maximum_performance + """ + + # stores references to all currently existing Interface instances + instances: weakref.WeakSet = weakref.WeakSet() + + @classmethod + def get_instances(cls) -> List[Interface]: + """ + :return: list of all current instances. + """ + return list(Interface.instances) + + @classmethod + def load( + cls, + name: str, + src: str | None = None, + api_key: str | None = None, + alias: str | None = None, + **kwargs, + ) -> Interface: + """ + Class method that constructs an Interface from a Hugging Face repo. Can accept + model repos (if src is "models") or Space repos (if src is "spaces"). The input + and output components are automatically loaded from the repo. + Parameters: + name: the name of the model (e.g. "gpt2" or "facebook/bart-base") or space (e.g. "flax-community/spanish-gpt2"), can include the `src` as prefix (e.g. "models/facebook/bart-base") + src: the source of the model: `models` or `spaces` (or leave empty if source is provided as a prefix in `name`) + api_key: optional access token for loading private Hugging Face Hub models or spaces. Find your token here: https://huggingface.co/settings/tokens + alias: optional string used as the name of the loaded model instead of the default name (only applies if loading a Space running Gradio 2.x) + Returns: + a Gradio Interface object for the given model + Example: + import gradio as gr + description = "Story generation with GPT" + examples = [["An adventurer is approached by a mysterious stranger in the tavern for a new quest."]] + demo = gr.Interface.load("models/EleutherAI/gpt-neo-1.3B", description=description, examples=examples) + demo.launch() + """ + return super().load(name=name, src=src, api_key=api_key, alias=alias, **kwargs) + + @classmethod + def from_pipeline(cls, pipeline: Pipeline, **kwargs) -> Interface: + """ + Class method that constructs an Interface from a Hugging Face transformers.Pipeline object. + The input and output components are automatically determined from the pipeline. + Parameters: + pipeline: the pipeline object to use. + Returns: + a Gradio Interface object from the given Pipeline + Example: + import gradio as gr + from transformers import pipeline + pipe = pipeline("image-classification") + gr.Interface.from_pipeline(pipe).launch() + """ + interface_info = load_from_pipeline(pipeline) + kwargs = dict(interface_info, **kwargs) + interface = cls(**kwargs) + return interface + + def __init__( + self, + fn: Callable, + inputs: str | IOComponent | List[str | IOComponent] | None, + outputs: str | IOComponent | List[str | IOComponent] | None, + examples: List[Any] | List[List[Any]] | str | None = None, + cache_examples: bool | None = None, + examples_per_page: int = 10, + live: bool = False, + interpretation: Callable | str | None = None, + num_shap: float = 2.0, + title: str | None = None, + description: str | None = None, + article: str | None = None, + thumbnail: str | None = None, + theme: Theme | None = None, + css: str | None = None, + allow_flagging: str | None = None, + flagging_options: List[str] | List[Tuple[str, str]] | None = None, + flagging_dir: str = "flagged", + flagging_callback: FlaggingCallback = CSVLogger(), + analytics_enabled: bool | None = None, + batch: bool = False, + max_batch_size: int = 4, + _api_mode: bool = False, + **kwargs, + ): + """ + Parameters: + fn: the function to wrap an interface around. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component. + inputs: a single Gradio component, or list of Gradio components. Components can either be passed as instantiated objects, or referred to by their string shortcuts. The number of input components should match the number of parameters in fn. If set to None, then only the output components will be displayed. + outputs: a single Gradio component, or list of Gradio components. Components can either be passed as instantiated objects, or referred to by their string shortcuts. The number of output components should match the number of values returned by fn. If set to None, then only the input components will be displayed. + examples: sample inputs for the function; if provided, appear below the UI components and can be clicked to populate the interface. Should be nested list, in which the outer list consists of samples and each inner list consists of an input corresponding to each input component. A string path to a directory of examples can also be provided, but it should be within the directory with the python file running the gradio app. If there are multiple input components and a directory is provided, a log.csv file must be present in the directory to link corresponding inputs. + cache_examples: If True, caches examples in the server for fast runtime in examples. The default option in HuggingFace Spaces is True. The default option elsewhere is False. + examples_per_page: If examples are provided, how many to display per page. + live: whether the interface should automatically rerun if any of the inputs change. + interpretation: function that provides interpretation explaining prediction output. Pass "default" to use simple built-in interpreter, "shap" to use a built-in shapley-based interpreter, or your own custom interpretation function. For more information on the different interpretation methods, see the Advanced Interface Features guide. + num_shap: a multiplier that determines how many examples are computed for shap-based interpretation. Increasing this value will increase shap runtime, but improve results. Only applies if interpretation is "shap". + title: a title for the interface; if provided, appears above the input and output components in large font. Also used as the tab title when opened in a browser window. + description: a description for the interface; if provided, appears above the input and output components and beneath the title in regular font. Accepts Markdown and HTML content. + article: an expanded article explaining the interface; if provided, appears below the input and output components in regular font. Accepts Markdown and HTML content. + thumbnail: path or url to image to use as display image when the web demo is shared on social media. + theme: Theme to use, loaded from gradio.themes. + css: custom css or path to custom css file to use with interface. + allow_flagging: one of "never", "auto", or "manual". If "never" or "auto", users will not see a button to flag an input and output. If "manual", users will see a button to flag. If "auto", every input the user submits will be automatically flagged (outputs are not flagged). If "manual", both the input and outputs are flagged when the user clicks flag button. This parameter can be set with environmental variable GRADIO_ALLOW_FLAGGING; otherwise defaults to "manual". + flagging_options: if provided, allows user to select from the list of options when flagging. Only applies if allow_flagging is "manual". Can either be a list of tuples of the form (label, value), where label is the string that will be displayed on the button and value is the string that will be stored in the flagging CSV; or it can be a list of strings ["X", "Y"], in which case the values will be the list of strings and the labels will ["Flag as X", "Flag as Y"], etc. + flagging_dir: what to name the directory where flagged data is stored. + flagging_callback: An instance of a subclass of FlaggingCallback which will be called when a sample is flagged. By default logs to a local CSV file. + analytics_enabled: Whether to allow basic telemetry. If None, will use GRADIO_ANALYTICS_ENABLED environment variable if defined, or default to True. + batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component. + max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True) + """ + super().__init__( + analytics_enabled=analytics_enabled, + mode="interface", + css=css, + title=title or "Gradio", + theme=theme, + **kwargs, + ) + + if isinstance(fn, list): + raise DeprecationWarning( + "The `fn` parameter only accepts a single function, support for a list " + "of functions has been deprecated. Please use gradio.mix.Parallel " + "instead." + ) + + self.interface_type = InterfaceTypes.STANDARD + if (inputs is None or inputs == []) and (outputs is None or outputs == []): + raise ValueError("Must provide at least one of `inputs` or `outputs`") + elif outputs is None or outputs == []: + outputs = [] + self.interface_type = InterfaceTypes.INPUT_ONLY + elif inputs is None or inputs == []: + inputs = [] + self.interface_type = InterfaceTypes.OUTPUT_ONLY + + assert isinstance(inputs, (str, list, IOComponent)) + assert isinstance(outputs, (str, list, IOComponent)) + + if not isinstance(inputs, list): + inputs = [inputs] + if not isinstance(outputs, list): + outputs = [outputs] + + if self.is_space and cache_examples is None: + self.cache_examples = True + else: + self.cache_examples = cache_examples or False + + state_input_indexes = [ + idx for idx, i in enumerate(inputs) if i == "state" or isinstance(i, State) + ] + state_output_indexes = [ + idx for idx, o in enumerate(outputs) if o == "state" or isinstance(o, State) + ] + + if len(state_input_indexes) == 0 and len(state_output_indexes) == 0: + pass + elif len(state_input_indexes) != 1 or len(state_output_indexes) != 1: + raise ValueError( + "If using 'state', there must be exactly one state input and one state output." + ) + else: + state_input_index = state_input_indexes[0] + state_output_index = state_output_indexes[0] + if inputs[state_input_index] == "state": + default = utils.get_default_args(fn)[state_input_index] + state_variable = State(value=default) # type: ignore + else: + state_variable = inputs[state_input_index] + + inputs[state_input_index] = state_variable + outputs[state_output_index] = state_variable + + if cache_examples: + warnings.warn( + "Cache examples cannot be used with state inputs and outputs." + "Setting cache_examples to False." + ) + self.cache_examples = False + + self.input_components = [ + get_component_instance(i, render=False) for i in inputs + ] + self.output_components = [ + get_component_instance(o, render=False) for o in outputs + ] + + for component in self.input_components + self.output_components: + if not (isinstance(component, IOComponent)): + raise ValueError( + f"{component} is not a valid input/output component for Interface." + ) + + if len(self.input_components) == len(self.output_components): + same_components = [ + i is o for i, o in zip(self.input_components, self.output_components) + ] + if all(same_components): + self.interface_type = InterfaceTypes.UNIFIED + + if self.interface_type in [ + InterfaceTypes.STANDARD, + InterfaceTypes.OUTPUT_ONLY, + ]: + for o in self.output_components: + assert isinstance(o, IOComponent) + o.interactive = False # Force output components to be non-interactive + + if ( + interpretation is None + or isinstance(interpretation, list) + or callable(interpretation) + ): + self.interpretation = interpretation + elif isinstance(interpretation, str): + self.interpretation = [ + interpretation.lower() for _ in self.input_components + ] + else: + raise ValueError("Invalid value for parameter: interpretation") + + self.api_mode = _api_mode + self.fn = fn + self.fn_durations = [0, 0] + self.__name__ = getattr(fn, "__name__", "fn") + self.live = live + self.title = title + + CLEANER = re.compile("<.*?>") + + def clean_html(raw_html): + cleantext = re.sub(CLEANER, "", raw_html) + return cleantext + + md = utils.get_markdown_parser() + simple_description = None + if description is not None: + description = md.render(description) + simple_description = clean_html(description) + self.simple_description = simple_description + self.description = description + if article is not None: + article = utils.readme_to_html(article) + article = md.render(article) + self.article = article + + self.thumbnail = thumbnail + self.theme = theme + + self.examples = examples + self.num_shap = num_shap + self.examples_per_page = examples_per_page + + self.simple_server = None + + # For allow_flagging: (1) first check for parameter, + # (2) check for env variable, (3) default to True/"manual" + if allow_flagging is None: + allow_flagging = os.getenv("GRADIO_ALLOW_FLAGGING", "manual") + if allow_flagging is True: + warnings.warn( + "The `allow_flagging` parameter in `Interface` now" + "takes a string value ('auto', 'manual', or 'never')" + ", not a boolean. Setting parameter to: 'manual'." + ) + self.allow_flagging = "manual" + elif allow_flagging == "manual": + self.allow_flagging = "manual" + elif allow_flagging is False: + warnings.warn( + "The `allow_flagging` parameter in `Interface` now" + "takes a string value ('auto', 'manual', or 'never')" + ", not a boolean. Setting parameter to: 'never'." + ) + self.allow_flagging = "never" + elif allow_flagging == "never": + self.allow_flagging = "never" + elif allow_flagging == "auto": + self.allow_flagging = "auto" + else: + raise ValueError( + "Invalid value for `allow_flagging` parameter." + "Must be: 'auto', 'manual', or 'never'." + ) + + if flagging_options is None: + self.flagging_options = [("Flag", "")] + elif not (isinstance(flagging_options, list)): + raise ValueError( + "flagging_options must be a list of strings or list of (string, string) tuples." + ) + elif all([isinstance(x, str) for x in flagging_options]): + self.flagging_options = [(f"Flag as {x}", x) for x in flagging_options] + elif all([isinstance(x, tuple) for x in flagging_options]): + self.flagging_options = flagging_options + else: + raise ValueError( + "flagging_options must be a list of strings or list of (string, string) tuples." + ) + + self.flagging_callback = flagging_callback + self.flagging_dir = flagging_dir + self.batch = batch + self.max_batch_size = max_batch_size + + self.save_to = None # Used for selenium tests + self.share = None + self.share_url = None + self.local_url = None + + self.favicon_path = None + + if self.analytics_enabled: + data = { + "mode": self.mode, + "fn": fn, + "inputs": inputs, + "outputs": outputs, + "live": live, + "interpretation": interpretation, + "allow_flagging": allow_flagging, + "custom_css": self.css is not None, + "theme": self.theme, + "version": GRADIO_VERSION, + } + utils.initiated_analytics(data) + + utils.version_check() + Interface.instances.add(self) + + param_names = inspect.getfullargspec(self.fn)[0] + if len(param_names) > 0 and inspect.ismethod(self.fn): + param_names = param_names[1:] + for component, param_name in zip(self.input_components, param_names): + assert isinstance(component, IOComponent) + if component.label is None: + component.label = param_name + for i, component in enumerate(self.output_components): + assert isinstance(component, IOComponent) + if component.label is None: + if len(self.output_components) == 1: + component.label = "output" + else: + component.label = "output " + str(i) + + if self.allow_flagging != "never": + if ( + self.interface_type == InterfaceTypes.UNIFIED + or self.allow_flagging == "auto" + ): + self.flagging_callback.setup(self.input_components, self.flagging_dir) # type: ignore + elif self.interface_type == InterfaceTypes.INPUT_ONLY: + pass + else: + self.flagging_callback.setup( + self.input_components + self.output_components, self.flagging_dir # type: ignore + ) + + # Render the Gradio UI + with self: + self.render_title_description() + + submit_btn, clear_btn, stop_btn, flag_btns = None, None, None, None + interpretation_btn, interpretation_set = None, None + input_component_column, interpret_component_column = None, None + + with Row().style(equal_height=False): + if self.interface_type in [ + InterfaceTypes.STANDARD, + InterfaceTypes.INPUT_ONLY, + InterfaceTypes.UNIFIED, + ]: + ( + submit_btn, + clear_btn, + stop_btn, + flag_btns, + input_component_column, + interpret_component_column, + interpretation_set, + ) = self.render_input_column() + if self.interface_type in [ + InterfaceTypes.STANDARD, + InterfaceTypes.OUTPUT_ONLY, + ]: + ( + submit_btn_out, + clear_btn_2_out, + stop_btn_2_out, + flag_btns_out, + interpretation_btn, + ) = self.render_output_column(submit_btn) + submit_btn = submit_btn or submit_btn_out + clear_btn = clear_btn or clear_btn_2_out + stop_btn = stop_btn or stop_btn_2_out + flag_btns = flag_btns or flag_btns_out + + assert clear_btn is not None, "Clear button not rendered" + + self.attach_submit_events(submit_btn, stop_btn) + self.attach_clear_events( + clear_btn, input_component_column, interpret_component_column + ) + self.attach_interpretation_events( + interpretation_btn, + interpretation_set, + input_component_column, + interpret_component_column, + ) + + self.attach_flagging_events(flag_btns, clear_btn) + self.render_examples() + self.render_article() + + self.config = self.get_config_file() + + def render_title_description(self) -> None: + if self.title: + Markdown( + "

" + + self.title + + "

" + ) + if self.description: + Markdown(self.description) + + def render_flag_btns(self) -> List[Button]: + return [Button(label) for label, _ in self.flagging_options] + + def render_input_column( + self, + ) -> Tuple[ + Button | None, + Button | None, + Button | None, + List[Button] | None, + Column, + Column | None, + List[Interpretation] | None, + ]: + submit_btn, clear_btn, stop_btn, flag_btns = None, None, None, None + interpret_component_column, interpretation_set = None, None + + with Column(variant="panel"): + input_component_column = Column() + with input_component_column: + for component in self.input_components: + component.render() + if self.interpretation: + interpret_component_column = Column(visible=False) + interpretation_set = [] + with interpret_component_column: + for component in self.input_components: + interpretation_set.append(Interpretation(component)) + with Row(): + if self.interface_type in [ + InterfaceTypes.STANDARD, + InterfaceTypes.INPUT_ONLY, + ]: + clear_btn = Button("Clear") + if not self.live: + submit_btn = Button("Submit", variant="primary") + # Stopping jobs only works if the queue is enabled + # We don't know if the queue is enabled when the interface + # is created. We use whether a generator function is provided + # as a proxy of whether the queue will be enabled. + # Using a generator function without the queue will raise an error. + if inspect.isgeneratorfunction(self.fn): + stop_btn = Button("Stop", variant="stop", visible=False) + elif self.interface_type == InterfaceTypes.UNIFIED: + clear_btn = Button("Clear") + submit_btn = Button("Submit", variant="primary") + if inspect.isgeneratorfunction(self.fn) and not self.live: + stop_btn = Button("Stop", variant="stop") + if self.allow_flagging == "manual": + flag_btns = self.render_flag_btns() + elif self.allow_flagging == "auto": + flag_btns = [submit_btn] + return ( + submit_btn, + clear_btn, + stop_btn, + flag_btns, + input_component_column, + interpret_component_column, + interpretation_set, + ) + + def render_output_column( + self, + submit_btn_in: Button | None, + ) -> Tuple[Button | None, Button | None, Button | None, List | None, Button | None]: + submit_btn = submit_btn_in + interpretation_btn, clear_btn, flag_btns, stop_btn = None, None, None, None + + with Column(variant="panel"): + for component in self.output_components: + if not (isinstance(component, State)): + component.render() + with Row(): + if self.interface_type == InterfaceTypes.OUTPUT_ONLY: + clear_btn = Button("Clear") + submit_btn = Button("Generate", variant="primary") + if inspect.isgeneratorfunction(self.fn) and not self.live: + # Stopping jobs only works if the queue is enabled + # We don't know if the queue is enabled when the interface + # is created. We use whether a generator function is provided + # as a proxy of whether the queue will be enabled. + # Using a generator function without the queue will raise an error. + stop_btn = Button("Stop", variant="stop", visible=False) + if self.allow_flagging == "manual": + flag_btns = self.render_flag_btns() + elif self.allow_flagging == "auto": + assert submit_btn is not None, "Submit button not rendered" + flag_btns = [submit_btn] + if self.interpretation: + interpretation_btn = Button("Interpret") + + return submit_btn, clear_btn, stop_btn, flag_btns, interpretation_btn + + def render_article(self): + if self.article: + Markdown(self.article) + + def attach_submit_events(self, submit_btn: Button | None, stop_btn: Button | None): + if self.live: + if self.interface_type == InterfaceTypes.OUTPUT_ONLY: + assert submit_btn is not None, "Submit button not rendered" + super().load(self.fn, None, self.output_components) + # For output-only interfaces, the user probably still want a "generate" + # button even if the Interface is live + submit_btn.click( + self.fn, + None, + self.output_components, + api_name="predict", + preprocess=not (self.api_mode), + postprocess=not (self.api_mode), + batch=self.batch, + max_batch_size=self.max_batch_size, + ) + else: + for component in self.input_components: + if isinstance(component, Streamable) and component.streaming: + component.stream( + self.fn, + self.input_components, + self.output_components, + api_name="predict", + preprocess=not (self.api_mode), + postprocess=not (self.api_mode), + ) + continue + if isinstance(component, Changeable): + component.change( + self.fn, + self.input_components, + self.output_components, + api_name="predict", + preprocess=not (self.api_mode), + postprocess=not (self.api_mode), + ) + else: + assert submit_btn is not None, "Submit button not rendered" + fn = self.fn + extra_output = [] + if stop_btn: + + # Wrap the original function to show/hide the "Stop" button + def fn(*args): + # The main idea here is to call the original function + # and append some updates to keep the "Submit" button + # hidden and the "Stop" button visible + # The 'finally' block hides the "Stop" button and + # shows the "submit" button. Having a 'finally' block + # will make sure the UI is "reset" even if there is an exception + try: + for output in self.fn(*args): + if len(self.output_components) == 1 and not self.batch: + output = [output] + output = [o for o in output] + yield output + [ + Button.update(visible=False), + Button.update(visible=True), + ] + finally: + yield [ + {"__type__": "generic_update"} + for _ in self.output_components + ] + [Button.update(visible=True), Button.update(visible=False)] + + extra_output = [submit_btn, stop_btn] + pred = submit_btn.click( + fn, + self.input_components, + self.output_components + extra_output, + api_name="predict", + scroll_to_output=True, + preprocess=not (self.api_mode), + postprocess=not (self.api_mode), + batch=self.batch, + max_batch_size=self.max_batch_size, + ) + if stop_btn: + submit_btn.click( + lambda: ( + submit_btn.update(visible=False), + stop_btn.update(visible=True), + ), + inputs=None, + outputs=[submit_btn, stop_btn], + queue=False, + ) + stop_btn.click( + lambda: ( + submit_btn.update(visible=True), + stop_btn.update(visible=False), + ), + inputs=None, + outputs=[submit_btn, stop_btn], + cancels=[pred], + queue=False, + ) + + def attach_clear_events( + self, + clear_btn: Button, + input_component_column: Column | None, + interpret_component_column: Column | None, + ): + clear_btn.click( + None, + [], + ( + self.input_components + + self.output_components + + ([input_component_column] if input_component_column else []) + + ([interpret_component_column] if self.interpretation else []) + ), # type: ignore + _js=f"""() => {json.dumps( + [getattr(component, "cleared_value", None) + for component in self.input_components + self.output_components] + ( + [Column.update(visible=True)] + if self.interface_type + in [ + InterfaceTypes.STANDARD, + InterfaceTypes.INPUT_ONLY, + InterfaceTypes.UNIFIED, + ] + else [] + ) + + ([Column.update(visible=False)] if self.interpretation else []) + )} + """, + ) + + def attach_interpretation_events( + self, + interpretation_btn: Button | None, + interpretation_set: List[Interpretation] | None, + input_component_column: Column | None, + interpret_component_column: Column | None, + ): + if interpretation_btn: + interpretation_btn.click( + self.interpret_func, + inputs=self.input_components + self.output_components, + outputs=(interpretation_set or []) + [input_component_column, interpret_component_column], # type: ignore + preprocess=False, + ) + + def attach_flagging_events(self, flag_btns: List[Button] | None, clear_btn: Button): + if flag_btns: + if self.interface_type in [ + InterfaceTypes.STANDARD, + InterfaceTypes.OUTPUT_ONLY, + InterfaceTypes.UNIFIED, + ]: + if self.allow_flagging == "auto": + flag_method = FlagMethod( + self.flagging_callback, "", "", visual_feedback=False + ) + flag_btns[0].click( # flag_btns[0] is just the "Submit" button + flag_method, + inputs=self.input_components, + outputs=None, + preprocess=False, + queue=False, + ) + return + + if self.interface_type == InterfaceTypes.UNIFIED: + flag_components = self.input_components + else: + flag_components = self.input_components + self.output_components + + for flag_btn, (label, value) in zip(flag_btns, self.flagging_options): + assert isinstance(value, str) + flag_method = FlagMethod(self.flagging_callback, label, value) + flag_btn.click( + lambda: Button.update(value="Saving...", interactive=False), + None, + flag_btn, + queue=False, + ) + flag_btn.click( + flag_method, + inputs=flag_components, + outputs=flag_btn, + preprocess=False, + queue=False, + ) + clear_btn.click( + flag_method.reset, + None, + flag_btn, + queue=False, + ) + + def render_examples(self): + if self.examples: + non_state_inputs = [ + c for c in self.input_components if not isinstance(c, State) + ] + non_state_outputs = [ + c for c in self.output_components if not isinstance(c, State) + ] + self.examples_handler = Examples( + examples=self.examples, + inputs=non_state_inputs, # type: ignore + outputs=non_state_outputs, # type: ignore + fn=self.fn, + cache_examples=self.cache_examples, + examples_per_page=self.examples_per_page, + _api_mode=self.api_mode, + batch=self.batch, + ) + + def __str__(self): + return self.__repr__() + + def __repr__(self): + repr = f"Gradio Interface for: {self.__name__}" + repr += "\n" + "-" * len(repr) + repr += "\ninputs:" + for component in self.input_components: + repr += "\n|-{}".format(str(component)) + repr += "\noutputs:" + for component in self.output_components: + repr += "\n|-{}".format(str(component)) + return repr + + async def interpret_func(self, *args): + return await self.interpret(list(args)) + [ + Column.update(visible=False), + Column.update(visible=True), + ] + + async def interpret(self, raw_input: List[Any]) -> List[Any]: + return [ + {"original": raw_value, "interpretation": interpretation} + for interpretation, raw_value in zip( + (await interpretation.run_interpret(self, raw_input))[0], raw_input + ) + ] + + def test_launch(self) -> None: + """ + Deprecated. + """ + warnings.warn("The Interface.test_launch() function is deprecated.") + + +@document() +class TabbedInterface(Blocks): + """ + A TabbedInterface is created by providing a list of Interfaces, each of which gets + rendered in a separate tab. + Demos: stt_or_tts + """ + + def __init__( + self, + interface_list: List[Interface], + tab_names: List[str] | None = None, + title: str | None = None, + theme: Theme | None = None, + analytics_enabled: bool | None = None, + css: str | None = None, + ): + """ + Parameters: + interface_list: a list of interfaces to be rendered in tabs. + tab_names: a list of tab names. If None, the tab names will be "Tab 1", "Tab 2", etc. + title: a title for the interface; if provided, appears above the input and output components in large font. Also used as the tab title when opened in a browser window. + analytics_enabled: whether to allow basic telemetry. If None, will use GRADIO_ANALYTICS_ENABLED environment variable or default to True. + css: custom css or path to custom css file to apply to entire Blocks + Returns: + a Gradio Tabbed Interface for the given interfaces + """ + super().__init__( + title=title or "Gradio", + theme=theme, + analytics_enabled=analytics_enabled, + mode="tabbed_interface", + css=css, + ) + if tab_names is None: + tab_names = ["Tab {}".format(i) for i in range(len(interface_list))] + with self: + if title: + Markdown( + "

" + + title + + "

" + ) + with Tabs(): + for (interface, tab_name) in zip(interface_list, tab_names): + with Tab(label=tab_name): + interface.render() + + +def close_all(verbose: bool = True) -> None: + for io in Interface.get_instances(): + io.close(verbose) diff --git a/gradio/interpretation.py b/gradio/interpretation.py new file mode 100644 index 0000000000000000000000000000000000000000..f48feb379e71bc61d14ee30205ab860247a9099f --- /dev/null +++ b/gradio/interpretation.py @@ -0,0 +1,331 @@ +"""Contains classes and methods related to interpretation for components in Gradio.""" + +from __future__ import annotations + +import copy +import math +from abc import ABC, abstractmethod +from typing import TYPE_CHECKING, Any, Dict, List, Tuple + +import numpy as np + +from gradio import components, utils + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + from gradio import Interface + + +class Interpretable(ABC): + def __init__(self) -> None: + self.set_interpret_parameters() + + def set_interpret_parameters(self): + """ + Set any parameters for interpretation. Properties can be set here to be + used in get_interpretation_neighbors and get_interpretation_scores. + """ + pass + + def get_interpretation_scores( + self, x: Any, neighbors: List[Any] | None, scores: List[float], **kwargs + ) -> List: + """ + Arrange the output values from the neighbors into interpretation scores for the interface to render. + Parameters: + x: Input to interface + neighbors: Neighboring values to input x used for interpretation. + scores: Output value corresponding to each neighbor in neighbors + Returns: + Arrangement of interpretation scores for interfaces to render. + """ + return scores + + +class TokenInterpretable(Interpretable, ABC): + @abstractmethod + def tokenize(self, x: Any) -> Tuple[List, List, None]: + """ + Interprets an input data point x by splitting it into a list of tokens (e.g + a string into words or an image into super-pixels). + """ + return [], [], None + + @abstractmethod + def get_masked_inputs(self, tokens: List, binary_mask_matrix: List[List]) -> List: + return [] + + +class NeighborInterpretable(Interpretable, ABC): + @abstractmethod + def get_interpretation_neighbors(self, x: Any) -> Tuple[List, Dict]: + """ + Generates values similar to input to be used to interpret the significance of the input in the final output. + Parameters: + x: Input to interface + Returns: (neighbor_values, interpret_kwargs, interpret_by_removal) + neighbor_values: Neighboring values to input x to compute for interpretation + interpret_kwargs: Keyword arguments to be passed to get_interpretation_scores + """ + return [], {} + + +async def run_interpret(interface: Interface, raw_input: List): + """ + Runs the interpretation command for the machine learning model. Handles both the "default" out-of-the-box + interpretation for a certain set of UI component types, as well as the custom interpretation case. + Parameters: + raw_input: a list of raw inputs to apply the interpretation(s) on. + """ + if isinstance(interface.interpretation, list): # Either "default" or "shap" + processed_input = [ + input_component.preprocess(raw_input[i]) + for i, input_component in enumerate(interface.input_components) + ] + original_output = await interface.call_function(0, processed_input) + original_output = original_output["prediction"] + + if len(interface.output_components) == 1: + original_output = [original_output] + + scores, alternative_outputs = [], [] + + for i, (x, interp) in enumerate(zip(raw_input, interface.interpretation)): + if interp == "default": + input_component = interface.input_components[i] + neighbor_raw_input = list(raw_input) + if isinstance(input_component, TokenInterpretable): + tokens, neighbor_values, masks = input_component.tokenize(x) + interface_scores = [] + alternative_output = [] + for neighbor_input in neighbor_values: + neighbor_raw_input[i] = neighbor_input + processed_neighbor_input = [ + input_component.preprocess(neighbor_raw_input[i]) + for i, input_component in enumerate( + interface.input_components + ) + ] + + neighbor_output = await interface.call_function( + 0, processed_neighbor_input + ) + neighbor_output = neighbor_output["prediction"] + if len(interface.output_components) == 1: + neighbor_output = [neighbor_output] + processed_neighbor_output = [ + output_component.postprocess(neighbor_output[i]) + for i, output_component in enumerate( + interface.output_components + ) + ] + + alternative_output.append(processed_neighbor_output) + interface_scores.append( + quantify_difference_in_label( + interface, original_output, neighbor_output + ) + ) + alternative_outputs.append(alternative_output) + scores.append( + input_component.get_interpretation_scores( + raw_input[i], + neighbor_values, + interface_scores, + masks=masks, + tokens=tokens, + ) + ) + elif isinstance(input_component, NeighborInterpretable): + ( + neighbor_values, + interpret_kwargs, + ) = input_component.get_interpretation_neighbors(x) + interface_scores = [] + alternative_output = [] + for neighbor_input in neighbor_values: + neighbor_raw_input[i] = neighbor_input + processed_neighbor_input = [ + input_component.preprocess(neighbor_raw_input[i]) + for i, input_component in enumerate( + interface.input_components + ) + ] + neighbor_output = await interface.call_function( + 0, processed_neighbor_input + ) + neighbor_output = neighbor_output["prediction"] + if len(interface.output_components) == 1: + neighbor_output = [neighbor_output] + processed_neighbor_output = [ + output_component.postprocess(neighbor_output[i]) + for i, output_component in enumerate( + interface.output_components + ) + ] + + alternative_output.append(processed_neighbor_output) + interface_scores.append( + quantify_difference_in_label( + interface, original_output, neighbor_output + ) + ) + alternative_outputs.append(alternative_output) + interface_scores = [-score for score in interface_scores] + scores.append( + input_component.get_interpretation_scores( + raw_input[i], + neighbor_values, + interface_scores, + **interpret_kwargs, + ) + ) + else: + raise ValueError( + f"Component {input_component} does not support interpretation" + ) + elif interp == "shap" or interp == "shapley": + try: + import shap # type: ignore + except (ImportError, ModuleNotFoundError): + raise ValueError( + "The package `shap` is required for this interpretation method. Try: `pip install shap`" + ) + input_component = interface.input_components[i] + if not isinstance(input_component, TokenInterpretable): + raise ValueError( + "Input component {} does not support `shap` interpretation".format( + input_component + ) + ) + + tokens, _, masks = input_component.tokenize(x) + + # construct a masked version of the input + def get_masked_prediction(binary_mask): + assert isinstance(input_component, TokenInterpretable) + masked_xs = input_component.get_masked_inputs(tokens, binary_mask) + preds = [] + for masked_x in masked_xs: + processed_masked_input = copy.deepcopy(processed_input) + processed_masked_input[i] = input_component.preprocess(masked_x) + new_output = utils.synchronize_async( + interface.call_function, 0, processed_masked_input + ) + new_output = new_output["prediction"] + if len(interface.output_components) == 1: + new_output = [new_output] + pred = get_regression_or_classification_value( + interface, original_output, new_output + ) + preds.append(pred) + return np.array(preds) + + num_total_segments = len(tokens) + explainer = shap.KernelExplainer( + get_masked_prediction, np.zeros((1, num_total_segments)) + ) + shap_values = explainer.shap_values( + np.ones((1, num_total_segments)), + nsamples=int(interface.num_shap * num_total_segments), + silent=True, + ) + assert shap_values is not None, "SHAP values could not be calculated" + scores.append( + input_component.get_interpretation_scores( + raw_input[i], + None, + shap_values[0].tolist(), + masks=masks, + tokens=tokens, + ) + ) + alternative_outputs.append([]) + elif interp is None: + scores.append(None) + alternative_outputs.append([]) + else: + raise ValueError("Unknown intepretation method: {}".format(interp)) + return scores, alternative_outputs + elif interface.interpretation: # custom interpretation function + processed_input = [ + input_component.preprocess(raw_input[i]) + for i, input_component in enumerate(interface.input_components) + ] + interpreter = interface.interpretation + interpretation = interpreter(*processed_input) + if len(raw_input) == 1: + interpretation = [interpretation] + return interpretation, [] + else: + raise ValueError("No interpretation method specified.") + + +def diff(original: Any, perturbed: Any) -> int | float: + try: # try computing numerical difference + score = float(original) - float(perturbed) + except ValueError: # otherwise, look at strict difference in label + score = int(not (original == perturbed)) + return score + + +def quantify_difference_in_label( + interface: Interface, original_output: List, perturbed_output: List +) -> int | float: + output_component = interface.output_components[0] + post_original_output = output_component.postprocess(original_output[0]) + post_perturbed_output = output_component.postprocess(perturbed_output[0]) + + if isinstance(output_component, components.Label): + original_label = post_original_output["label"] + perturbed_label = post_perturbed_output["label"] + + # Handle different return types of Label interface + if "confidences" in post_original_output: + original_confidence = original_output[0][original_label] + perturbed_confidence = perturbed_output[0][original_label] + score = original_confidence - perturbed_confidence + else: + score = diff(original_label, perturbed_label) + return score + + elif isinstance(output_component, components.Number): + score = diff(post_original_output, post_perturbed_output) + return score + + else: + raise ValueError( + "This interpretation method doesn't support the Output component: {}".format( + output_component + ) + ) + + +def get_regression_or_classification_value( + interface: Interface, original_output: List, perturbed_output: List +) -> int | float: + """Used to combine regression/classification for Shap interpretation method.""" + output_component = interface.output_components[0] + post_original_output = output_component.postprocess(original_output[0]) + post_perturbed_output = output_component.postprocess(perturbed_output[0]) + + if isinstance(output_component, components.Label): + original_label = post_original_output["label"] + perturbed_label = post_perturbed_output["label"] + + # Handle different return types of Label interface + if "confidences" in post_original_output: + if math.isnan(perturbed_output[0][original_label]): + return 0 + return perturbed_output[0][original_label] + else: + score = diff( + perturbed_label, original_label + ) # Intentionally inverted order of arguments. + return score + + else: + raise ValueError( + "This interpretation method doesn't support the Output component: {}".format( + output_component + ) + ) diff --git a/gradio/ipython_ext.py b/gradio/ipython_ext.py new file mode 100644 index 0000000000000000000000000000000000000000..f31d0761c8f93ddc481a94174f59772616c1691b --- /dev/null +++ b/gradio/ipython_ext.py @@ -0,0 +1,21 @@ +try: + from IPython.core.magic import needs_local_scope, register_cell_magic +except ImportError: + pass + +import warnings + +import gradio + + +def load_ipython_extension(ipython): + __demo = gradio.Blocks() + + @register_cell_magic + @needs_local_scope + def blocks(line, cell, local_ns=None): + if "gr.Interface" in cell: + warnings.warn("Usage of gr.Interface with %%blocks may result in errors.") + with __demo.clear(): + exec(cell, None, local_ns) + __demo.launch(quiet=True) diff --git a/gradio/layouts.py b/gradio/layouts.py new file mode 100644 index 0000000000000000000000000000000000000000..daf3ecbb69ca30fdd0c554b959a01475c7ab1f41 --- /dev/null +++ b/gradio/layouts.py @@ -0,0 +1,358 @@ +from __future__ import annotations + +import warnings +from typing import Type + +from gradio.blocks import BlockContext +from gradio.documentation import document, set_documentation_group +from gradio.events import Changeable, Selectable + +set_documentation_group("layout") + + +@document() +class Row(BlockContext): + """ + Row is a layout element within Blocks that renders all children horizontally. + Example: + with gradio.Blocks() as demo: + with gradio.Row(): + gr.Image("lion.jpg") + gr.Image("tiger.jpg") + demo.launch() + Guides: controlling_layout + """ + + def __init__( + self, + *, + variant: str = "default", + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + variant: row type, 'default' (no background), 'panel' (gray background color and rounded corners), or 'compact' (rounded corners and no internal gap). + visible: If False, row will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.variant = variant + if variant == "compact": + self.allow_expected_parents = False + super().__init__(visible=visible, elem_id=elem_id, **kwargs) + + def get_config(self): + return {"type": "row", "variant": self.variant, **super().get_config()} + + @staticmethod + def update( + visible: bool | None = None, + ): + return { + "visible": visible, + "__type__": "update", + } + + def style( + self, + *, + equal_height: bool | None = None, + mobile_collapse: bool | None = None, + **kwargs, + ): + """ + Styles the Row. + Parameters: + equal_height: If True, makes every child element have equal height + mobile_collapse: DEPRECATED. + """ + if equal_height is not None: + self._style["equal_height"] = equal_height + if mobile_collapse is not None: + warnings.warn("mobile_collapse is no longer supported.") + return self + + +@document() +class Column(BlockContext): + """ + Column is a layout element within Blocks that renders all children vertically. The widths of columns can be set through the `scale` and `min_width` parameters. + If a certain scale results in a column narrower than min_width, the min_width parameter will win. + Example: + with gradio.Blocks() as demo: + with gradio.Row(): + with gradio.Column(scale=1): + text1 = gr.Textbox() + text2 = gr.Textbox() + with gradio.Column(scale=4): + btn1 = gr.Button("Button 1") + btn2 = gr.Button("Button 2") + Guides: controlling_layout + """ + + def __init__( + self, + *, + scale: int = 1, + min_width: int = 320, + variant: str = "default", + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + scale: relative width compared to adjacent Columns. For example, if Column A has scale=2, and Column B has scale=1, A will be twice as wide as B. + min_width: minimum pixel width of Column, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in a column narrower than min_width, the min_width parameter will be respected first. + variant: column type, 'default' (no background), 'panel' (gray background color and rounded corners), or 'compact' (rounded corners and no internal gap). + visible: If False, column will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.scale = scale + self.min_width = min_width + self.variant = variant + if variant == "compact": + self.allow_expected_parents = False + super().__init__(visible=visible, elem_id=elem_id, **kwargs) + + def get_config(self): + return { + "type": "column", + "variant": self.variant, + "scale": self.scale, + "min_width": self.min_width, + **super().get_config(), + } + + @staticmethod + def update( + variant: str | None = None, + visible: bool | None = None, + ): + return { + "variant": variant, + "visible": visible, + "__type__": "update", + } + + +class Tabs(BlockContext, Changeable, Selectable): + """ + Tabs is a layout element within Blocks that can contain multiple "Tab" Components. + """ + + def __init__( + self, + *, + selected: int | str | None = None, + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + selected: The currently selected tab. Must correspond to an id passed to the one of the child TabItems. Defaults to the first TabItem. + visible: If False, Tabs will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + BlockContext.__init__(self, visible=visible, elem_id=elem_id, **kwargs) + Changeable.__init__(self) + Selectable.__init__(self) + self.selected = selected + + def get_config(self): + return {"selected": self.selected, **super(BlockContext, self).get_config()} + + @staticmethod + def update( + selected: int | str | None = None, + ): + return { + "selected": selected, + "__type__": "update", + } + + +@document() +class Tab(BlockContext, Selectable): + """ + Tab (or its alias TabItem) is a layout element. Components defined within the Tab will be visible when this tab is selected tab. + Example: + with gradio.Blocks() as demo: + with gradio.Tab("Lion"): + gr.Image("lion.jpg") + gr.Button("New Lion") + with gradio.Tab("Tiger"): + gr.Image("tiger.jpg") + gr.Button("New Tiger") + Guides: controlling_layout + """ + + def __init__( + self, + label: str, + *, + id: int | str | None = None, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + label: The visual label for the tab + id: An optional identifier for the tab, required if you wish to control the selected tab from a predict function. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + BlockContext.__init__(self, elem_id=elem_id, **kwargs) + Selectable.__init__(self) + self.label = label + self.id = id + + def get_config(self): + return { + "label": self.label, + "id": self.id, + **super(BlockContext, self).get_config(), + } + + def get_expected_parent(self) -> Type[Tabs]: + return Tabs + + def get_block_name(self): + return "tabitem" + + +TabItem = Tab + + +class Group(BlockContext): + """ + Group is a layout element within Blocks which groups together children so that + they do not have any padding or margin between them. + Example: + with gradio.Group(): + gr.Textbox(label="First") + gr.Textbox(label="Last") + """ + + def __init__( + self, + *, + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + visible: If False, group will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + super().__init__(visible=visible, elem_id=elem_id, **kwargs) + + def get_config(self): + return {"type": "group", **super().get_config()} + + @staticmethod + def update( + visible: bool | None = None, + ): + return { + "visible": visible, + "__type__": "update", + } + + +@document() +class Box(BlockContext): + """ + Box is a a layout element which places children in a box with rounded corners and + some padding around them. + Example: + with gradio.Box(): + gr.Textbox(label="First") + gr.Textbox(label="Last") + """ + + def __init__( + self, + *, + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + visible: If False, box will be hidden. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + super().__init__(visible=visible, elem_id=elem_id, **kwargs) + + def get_config(self): + return {"type": "box", **super().get_config()} + + @staticmethod + def update( + visible: bool | None = None, + ): + return { + "visible": visible, + "__type__": "update", + } + + def style(self, **kwargs): + return self + + +class Form(BlockContext): + def get_config(self): + return {"type": "form", **super().get_config()} + + +@document() +class Accordion(BlockContext): + """ + Accordion is a layout element which can be toggled to show/hide the contained content. + Example: + with gradio.Accordion("See Details"): + gr.Markdown("lorem ipsum") + """ + + def __init__( + self, + label, + *, + open: bool = True, + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + """ + Parameters: + label: name of accordion section. + open: if True, accordion is open by default. + elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. + """ + self.label = label + self.open = open + super().__init__(visible=visible, elem_id=elem_id, **kwargs) + + def get_config(self): + return { + "type": "accordion", + "open": self.open, + "label": self.label, + **super().get_config(), + } + + @staticmethod + def update( + open: bool | None = None, + label: str | None = None, + visible: bool | None = None, + ): + return { + "visible": visible, + "label": label, + "open": open, + "__type__": "update", + } diff --git a/gradio/media_data.py b/gradio/media_data.py new file mode 100644 index 0000000000000000000000000000000000000000..ecbb7442a6c7c1a13f24418bea01e74aeee4d033 --- /dev/null +++ b/gradio/media_data.py @@ -0,0 +1,8655 @@ +BASE64_IMAGE = ( # test/test_files/bus.png + "data:image/png;base64," + "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" +) +BASE64_AUDIO = { + "name": "test/test_files/audio_sample.wav", + "data": "data:audio/wav;base64,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gwobAWwAoQTr+LgFs/1Q7/sCcPj0AJ72QQC9/Qr4NgOE+NYFt/hRABEDm/xzAH/9DQLyAyT/PwQVAiP/wwUdAtb/DAFnATn/owdP/1UJe/pSDFEGUPt/Ezz4GAVj/BX7nP+P9W0CB/ti8ogAp/OF/yr3e/hJ/5z4egiV/uQEswHyAaEEmPpMCMEDwQKBAlL/Ygc78fwCQwVN9sr+KAXbAMgEyPwOAuQB5fnZDOv3mQrbCSP7yAlg94MHpvVc+LIIr/izAcb+pgKMAY75vfz3/Lf30foJ/bj5k/vBBcvytARRBOcE4AMVAFoJzfnMAVYADwC7ABsDtgRCCB4CgwtoAmn/cAX+/0AAMgWiAdP9JQIF+oEDHPYZAaD6x/VCAWvwUQG88hcAIgFp+8oC5v63BKD9pgKI/a8ErvxHBx4DgwGnBF4EN/w3BQH8ff86ASj8qQdr9JgLz/mwCI74EgOvAtn+cwaw/o4GK/1eAZEJ8/diAAYDjfX4CInqdBIE87YBjwFu9A0H2/Y1/3b3M/nF+SgAH/nQCt787Qa3/68E7wQG/sQA8gSv/dYBsgsQ+ogLtABkBxwDSAcLBXADVP4LBDcA6vPZBQr1NwLV+zn8IwKt9Kz88PzO7QsHa/wz/r0HqPi/Cn35yASb/7MBuv0cDPsCYQMiAD75GwVk830GfflZ/3MI3wFH+MkH0/xpBT37ZQadBgv8DAlO+7gDCPyTBrr3awvc+AMDDP+n+gcF0/fj/Mn7cwFM//787fTeA0/z3wLn9HX/uQSb/dwDcf1QAMsEDAKL/oAJO/vBB9cFuf5D/1EDZAEBBs7+qQof/hgNAwO4/dcDm/zUBw/4Gv+m9nX9wvbl9RT22//D/HwCPfnF/7/7oQJXA6D5ywdRAUIHMgA+Ayf9FwQBBi39M/6YAxX97ACJ/Zb73QAsAaMF2v/8AnADgwMpAj//SvyNB2UBl/tMBGT8ggVD+4MHQPzC/2gDCv1p+ov9Zv9x85cF/PJt+p4BCP1n/eb8x/ypCiXzgAqT/xX7jAhq+tYFN/tACMAA3QL8BDAK+P6LBuIE6ATBBL8DegTMBOT6WQbx/ED1UQS07z3/cvdE/Ib76fppAfj4jfdMSVNUYgAAAElORk9JTkFNEAAAAEltcGFjdCBNb2RlcmF0bwBJUFJEFgAAAFlvdVR1YmUgQXVkaW8gTGlicmFyeQBJQVJUDgAAAEtldmluIE1hY0xlb2QASUdOUgoAAABDaW5lbWF0aWMAaWQzIHAAAABJRDMDAAAAAABmVElUMgAAABAAAABJbXBhY3QgTW9kZXJhdG9UQUxCAAAAFgAAAFlvdVR1YmUgQXVkaW8gTGlicmFyeVRQRTEAAAAOAAAAS2V2aW4gTWFjTGVvZFRDT04AAAAKAAAAQ2luZW1hdGlj", +} + +BASE64_AUDIO_DUPLICATE = { + "name": "test/test_files/audio_sample.wav", + "data": "data:audio/wav;base64,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gwobAWwAoQTr+LgFs/1Q7/sCcPj0AJ72QQC9/Qr4NgOE+NYFt/hRABEDm/xzAH/9DQLyAyT/PwQVAiP/wwUdAtb/DAFnATn/owdP/1UJe/pSDFEGUPt/Ezz4GAVj/BX7nP+P9W0CB/ti8ogAp/OF/yr3e/hJ/5z4egiV/uQEswHyAaEEmPpMCMEDwQKBAlL/Ygc78fwCQwVN9sr+KAXbAMgEyPwOAuQB5fnZDOv3mQrbCSP7yAlg94MHpvVc+LIIr/izAcb+pgKMAY75vfz3/Lf30foJ/bj5k/vBBcvytARRBOcE4AMVAFoJzfnMAVYADwC7ABsDtgRCCB4CgwtoAmn/cAX+/0AAMgWiAdP9JQIF+oEDHPYZAaD6x/VCAWvwUQG88hcAIgFp+8oC5v63BKD9pgKI/a8ErvxHBx4DgwGnBF4EN/w3BQH8ff86ASj8qQdr9JgLz/mwCI74EgOvAtn+cwaw/o4GK/1eAZEJ8/diAAYDjfX4CInqdBIE87YBjwFu9A0H2/Y1/3b3M/nF+SgAH/nQCt787Qa3/68E7wQG/sQA8gSv/dYBsgsQ+ogLtABkBxwDSAcLBXADVP4LBDcA6vPZBQr1NwLV+zn8IwKt9Kz88PzO7QsHa/wz/r0HqPi/Cn35yASb/7MBuv0cDPsCYQMiAD75GwVk830GfflZ/3MI3wFH+MkH0/xpBT37ZQadBgv8DAlO+7gDCPyTBrr3awvc+AMDDP+n+gcF0/fj/Mn7cwFM//787fTeA0/z3wLn9HX/uQSb/dwDcf1QAMsEDAKL/oAJO/vBB9cFuf5D/1EDZAEBBs7+qQof/hgNAwO4/dcDm/zUBw/4Gv+m9nX9wvbl9RT22//D/HwCPfnF/7/7oQJXA6D5ywdRAUIHMgA+Ayf9FwQBBi39M/6YAxX97ACJ/Zb73QAsAaMF2v/8AnADgwMpAj//SvyNB2UBl/tMBGT8ggVD+4MHQPzC/2gDCv1p+ov9Zv9x85cF/PJt+p4BCP1n/eb8x/ypCiXzgAqT/xX7jAhq+tYFN/tACMAA3QL8BDAK+P6LBuIE6ATBBL8DegTMBOT6WQbx/ED1UQS07z3/cvdE/Ib76fppAfj4jfdMSVNUYgAAAElORk9JTkFNEAAAAEltcGFjdCBNb2RlcmF0bwBJUFJEFgAAAFlvdVR1YmUgQXVkaW8gTGlicmFyeQBJQVJUDgAAAEtldmluIE1hY0xlb2QASUdOUgoAAABDaW5lbWF0aWMAaWQzIHAAAABJRDMDAAAAAABmVElUMgAAABAAAABJbXBhY3QgTW9kZXJhdG9UQUxCAAAAFgAAAFlvdVR1YmUgQXVkaW8gTGlicmFyeVRQRTEAAAAOAAAAS2V2aW4gTWFjTGVvZFRDT04AAAAKAAAAQ2luZW1hdGlj", +} +BASE64_VIDEO = { + "is_file": True, + "name": "test/test_files/video_sample.mp4", + "data": "data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAWlzb21tcDQxbXA0MgAAAAFtZGF0AAAAAAAD8BohEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8AAAC4gYF///e3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0NiByMTFNIDEyMTM5NmMgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE1IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4MTExIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9NDggbG9va2FoZWFkX3RocmVhZHM9MiBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIHN0aXRjaGFibGU9MSBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PWluZmluaXRlIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz0ycGFzcyBtYnRyZWU9MSBiaXRyYXRlPTMwMCByYXRldG9sPTEuMCBxY29tcD0wLjYwIHFwbWluPTUgcXBtYXg9NjkgcXBzdGVwPTQgY3BseGJsdXI9MjAuMCBxYmx1cj0wLjUgdmJ2X21heHJhdGU9MzMwIHZi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PcnL10/Cvr6+kSq/FeyoRHS4/u8MZclfrWoI+7zQyT+v/Vf30X/SJ9WLDgsz4EeAIRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0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WTvfBNyaQO5hYw6x0WPO5hLvd7+T3wrkgo7vbLO61+CLe8XW7363d/666KmR39iUCK7u/ZPTT+pgQ3dp5fIzjGfcLrr6ybr19fS+b6cN+SrX+HvjYCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8AAACikGbz0pAK+CvzDs1pfN40Wnza3vfNx9xq+Xbthj0RKpf/sXLJmSb3FH6nRNn/wqWcCpsRFPp7v8v3vbLCBnw3EZ3Dt0eatetoFrbUvD8tD7cJHqfpy5yz3P6k2vxdN9ByxeX/6fhpfF8s/mMliFPFDOE3xWhePCdl/u3GRlewuE2LpvQJElJqtwf2n3eT3Utz6D2+4KvRuC/7vhzV3jHf4jaH97B3Dy6buEi3Ve8od+EtBFQQzLnE+qxMEk4KvPayfy96tAolg/d3On5CnFQy9/vy5CfmCXDtya2i9deX/dr6mX8KPfG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WlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa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ClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpa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4hx2Hyks/Td+yUnQff4T56bv6cKF838hnvvlk7E9dSmE8nS/21k9NGufPSiu73ffXC2SMhCpnK/Oa7O0ab5h5HGJXpXy+XPJ3Xspdmrk9pRMi/X5io5ojcRWZiIi7uXHb39Qtk/oh0rJVIksVyFW019z4/Xw98XAIRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa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4kAna7SgYQIeh8uUdvH6PYUf4yN1fjd32rR/fL8E5N07rb1QtF5eXLr67GwREl+UGvSe69if0JK++rVeZip/uHbJf5MLLbwmIu7yZ3q+tpKnrQIT7uRPMyFS3tVckVu7gSIhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gYhS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeBiFLS0tLS0tLS0tLS0tLS0tLwhEUUAFFABRv/xClpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl3gghS0tLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4GIUtLS0tLS0tLS0tLS0tLS0vCERRQAUUAFG//EKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXeCCFLS0tLS0tLS0tLS0tLS0tLS8IRFFABRQAUb/8QpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpd4IIUtLS0tLS0tLS0tLS0tLS0tLwAADdCZYiCAV8mKAAOKMnJycnJycnJycnJycnJycnJycnJycnJycnJycnJ11111111111///wXeAAmFEcIGm63wChQOU1oQEeEj84Ba2lPP/u7vw6IgATyCOF2cOKFpqPMANIgQwqMkPMjTYR88zMDUXZnDIT/2wMBVFRFyQ8o8AmLIC7aUBdUP35c9jxADMgEdpYBJkHUp2iKlZXx94+K8ARMxEOpH4OpLDpP8aQdXIO5Ma+G8bVvsdADZ7iv8LXiuvHTinnkOOSBqz8zMW1xGr/eFB8gIenZ4C5x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AAAGAAAAIQAAAAEAAAAHAAAADgAAAAEAAAAIAAAAIQAAAAEAAAAJAAAADgAAAAEAAAAKAAAAAQAAAAEAAAPEc3RzegAAAAAAAAAAAAAA7AAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAABKwAAASsAAAEqAAAAOHN0Y28AAAAAAAAACgAAACwAADXXAABrgQAAwYwAARKNAAFhWwABztsAAiToAAKY1gADEjk=", +} +BASE64_FILE = { + "name": "test/test_files/sample_file.pdf", + "data": "data:@file/pdf;base64,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", +} +BINARY_IMAGE = ( + b'GIF89a=\x00D\x00\xf7\xa8\x00\x9a,3\xff\xc0\xc0\xef\xc0\xc0uXg\xfc\xf9\xf7\x993\x00\xff\xec\xec\xff\xa0\xa0\xe5\xcc\xbf\xcf\x9f\x87\x0f\xef\xef\x7f\x7f\x7f\xef\x0f\x0f\xdf\x1f\x1f\xff&&_\x9f\x9f\xffYY\xbf??5\xa5\xc2\xff\xff\xff\xac\x16\x19\xb2&\x00\xf8\x13\x10\xc2& \xdf`PP\x84\x9b\xf8\x03\x00\xb5\x0b\x0c\xdf\x0f\x00>\x9a\xb5\x87BM\x7f`P\xd2\xa5\x8f\xcc\x19\x00\xa5,\x00\xec\xd9\xcf\xe5\x0c\x00\xeb\t\x00\xff\xd9\xd9\xc7\x0c\x0c\x0f\x0f\x0f\xffyy~MZ\xfb\t\x08\xe5M@\xfb__\xff33\xcf\x90x\xf2\xe5\xdf\xc3\x06\x06\xbf\t\x08\xff\xb3\xb3\xd9\xb2\x9f\xff\x06\x06\xac)\x00\xff\xc6\xc6\x0c\t\x08\xf9\xf2\xef\xc9s`\xb8#\x00\x9f/\x00\xff__\xff\x8c\x8c\xc5\x1c\x00\xdf33\xffpp\xcf\x19\x19\xc0\x13\x10\xbf\x90x\xf7YY\xff\xf6\xf6\xe7??\xd7&&\xefLL2& \xdf\xbf\xaf\xbf\xbf\xbf???\xc5M@cn\x81_\x00\x00___\xcb00\xd8\x13\x00YC8\x80\x80\x80\xf3RRsVH\xc490\x10\x10\x10\x917@\xf2\x06\x00\xcf@@\xca\x86pooo\xa3!&\xc1\x1d\x18\xcf//\x1f\x1f\x1f\xdf\x00\x00\xd2\x16\x00\xcb\x90x\xbf\x1f\x00\x19\x13\x10\xf3\xd0\xd0\xe399&\x1d\x18Yy\x8e\x8f\x8f\x8f\xff\xa9\xa9\xcb\x13\x13\xbf00SF@\xb6& >\x1d\x18\xfb\xdd\xdd@@@\x99\x93\x90\xff\xbc\xbc\x7fPP\xaf\xaf\xaf\xc6VHzsp\x93& \xb7pp\xb3\x86ptPP|pp\xafOO\xd0\xd0\xd0\xef\xef\xefL90\xbc\xa9\xa0o0(\xeb\xb0\xb0\xff\xe0\xe0\xff\xd0\xd0\x870(K0(\xc9|h\x9f__lct\xebFF\xcf\xcf\xcf\xe0\xe0\xe0b& \xff },(@0(\xa9\x93\x88\xa6|h\x1f\xdf\xdf\xd5\xac\x97\xe2\xc5\xb7\xc7`POOO\x9cyhppp\xff\x80\x80\xff\x96\x96\xd7``\xcc\x99\x7f,\xb0\xcf\xbf\x00\x00\x00\x00\x00\x00\xff\xff\xff\x00\x00\xffff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\xa8\x00,\x00\x00\x00\x00=\x00D\x00\x00\x08\xff\x00Q\t\x1cH\xb0\xa0\xc1\x83\x08\x13*\\\xc8\xb0\xa1\xc0\x1b\x07\x0c8\x9cHq\xa1\x89\x14\xa72F\xac\xc8\xb1\xa2\t\x1f\x19Cj\x94\xd8\xb1$B\x03\x07D\xaa\x1ci\xb2%*#3V\xcad\xe9\xb2\xa2\x9d 3s\x9e\xdaX\x93!"\x8c:\x83\xf2\xeci\xf0c\xd0\xa3!\x87\x12E\x89\xb4iR\x92.a:\x9d\xfa\xb4\xe5\x0c\x9cT\xb3\xee\x84:\xf1\x06P\xad`\x95*4\n\xb6l\xd5\x84\x06>\x99]\x1b\xb2\xc5\x9c\x83F\xda\xb0\x9d{\xe4\x84\x00\x83W\xe7\xaeM\xe2f\xd4\xa8\xbb\x03\xbd\xea5kE\x88_\xbf\x80\x0fy\x1a\\\xb6\x08\x92\xc3\x87\x01\x070\xe5\x00\x02\xe3\xa9-\x80\xc4\x80\x1cY\xe0dS\x94-_\x0ezd3\xe7\xce\xa8>\x83\x0e=Zf\x92\x13\xa7Gm\x18 \xe1\xaf\xe7\xd5\xb8+\xb7\xceX8\xf6(\xda\xa2D\xd9N\x8d\xbb\xb8n\xc6\x8e}\x8f\xfa\x12<\xf8\xf0\xcf\x11\x1a\x14\x07}|mf\xdf\x00\x9elP\xd1\\\xb8dSaJ\x95\xffz }zu\xadiLs\xa6\xb0&8\x80\x01\xdd\x9f\x9b\x8a ^<\xf9\xe9\xac\xa9:\x82\x1d{\x83\x84\xe6\xef\xc5\xf7\x1d}\xf5\xd9W\x9eq\xa2\x1d\x95\x84a\xb1\xa9\xb0\x01\x00\xdd\x05\xd8\x9c|\x04\x16X\x8a\x02\x0b0\x80\x9f\x0b=\xe8\x94\\l\x1et \n\x00\x10\x02\x08\xdf\x84\x03ZX \x86\x1a\x16W\x03\x87+]\xe7[\x06\x00\x96\xe8\xde\x89\xce\xa5\xa8\xe2\x8a\x19N\xf7b\x87\x19\xa5\x17\x1b\x05\xa3P\x10\xa1\x8d#\xe2X\x9b\x8e;\xf2\xd8"n/\xd6\xd5\xdf\x13\xa2x\x80$\x89\x11\x9e\xd8\x81\x16\x146\xb9#\x8b\xd3\xf9\xe6\xc1\x7f\xa2\x0cp\xe5\x99\x12\xa8\x80\xdad\x15zi!\x98\xab\xf9Ff\x99gvG$g\xdf1\xa0\x80\x9bM\xc2\t\x19\x00\x19p\xd9\x9d\x99G6\xd7Hl\xdf\x99\xc2\xc8\x9e|~\t\x88)~Q@c\x99\xa3\x0cZg\x06\x00\xf8\x96\xa8)\x0c,\xc0h\xa3\x05^\x02\xe9(\x93Rji\x84\xcb)\'\x1fn\x9d~\nj)\xa3\x0e\xffZis\x84\x06\xd7\x81\xaak\xae\xc6\x01\x07\xa0\xb5\xfa*\xac~\xc9z\xaa\x04\x03l\x80+b\xb7\x81V@\x01$\xac\xd6\xe9\xab\xb1\xd2:kpj\x0ep\xe7\xb1\xab\x9aRA\x01!\x14\xd7\xc0\x03\x8dF\x1b\xdc\x00\xd3\x8ar-\xb6\xc8\x12\x07Z\t\x15\xf0:\xdd\xb7n\x8ak\xaa(\x1ddz\xac\x14\x86\x80\x92+~\xf8\xc1\xbb\xa3\xbc\xe4\xae\xe1\x01\xbaR\xfcAG\'\\\xa4\xab\x1a\xbf\xef\x82k\xa1\xbc\x03\xa3\xeb\xd7\x1d\xa4T\xcc\x87\xc2\xc5qP\x02\xc3\xab\xf9+\x9e\xb8OH\xec\xd7\x1bYTL\x8a\x1f~\xa1\x91\xecj"\xd8\xc01n\xfe\x8e\xdaA\x06\xe7\xa2;\t)Q\xb0AJ\x15\\\xa8\xbc2h!\x14\xe0\xee\xcb\xa05\x10\xc6\xa8"s&\x07\n\x13L\xb0sA\x0b\x9b\xa2\x81\x08"h\xf02\x0f\x15\xe0\x964g2\xa8\xd1D\xd3\xa4\xe8\x01\xf5t\x1c\x14`\xc6\xcb\xcbN\x11\xe7\xd6\x87]@\xca\xd7\x8f\x90\xf2\x01\x08#\x10t\x80$\xc5\x99\xc1-\xc7?\x14\xff@\xc6\xdal\x8f\xe2\x04)b0\xb1\t)}\x84\x12J&\x04\x05\x02\xc5\x18\xb8\xd9P\xc0\x0f\x1c\x93`5h\x81_\xb0H(j\x98\xacD( \xc0`P\xc5\x8f\x83\xa6\xc1\xb6;l1\x9d\x06\x1bk\x9d4\x18:(\x1e\n\x15&sR\xb7A9\xc0Q\xf1 \x18X\x00Z\xdf<\x84\xa0:h$H^\x1cgC\\\xa0\xdc\x10\x9a\xc8\xae8\x11gdQ\x07\x01\x07!\x10\n\x11W| {\xef\xa6\x90\xb0m\x01"T B\x01<\xa8\xed\xba_X|pE\x1e\xa7\xc9\xe0D\x19\xce\xcb\xbe\x04\xf5\x08\x11\x80@\x02\xf1+\xce}\t!\xecP\xc1\x0ed\xb8\xdc\xf9\x86\xa0\x88\x8aQA\x06\x90\xc1\x02\xfc\xf2G\x83\x1c4\xc4~\xf8\xcb\x1f\xf7^v\x98D\x98\x0c\x07\xca\x1b\xc5\x05\xba\x90\xbfP`Bt\x14\x81`\x07\'\xc8/\xbf\xc8@\toC\x01)\x9c\x00\xbb\x0e\xd2\xcd$"\x94\xa0\xef\xf0\xe3\x978\xe0l\x02^ \x05\x07\xf3\x97\x00\x04\xd0\xaf%1t\xde\x0b|X\xb0\x820\x8db\x0f\xa4`\xc2\x04\x16@\x8a\x0e\xce\x8f(\x02\t\xa2\xec\x86X\xc4\xb5\x15"\x898\xc4A\xfc\x1a\x08\xc5\x82HQqT\xc4\xdc("A\n<\x08\x02\x05\x94\x90\x1d\r@\xd8E\x83|1\x14T\xbc\x80\x0e>@\n\x14\x88An\xa0\xbb]\x1b\x13\xf2F\xd9Y\xc2dg\xe8\xe1\x1e\x1d\xd2\xc7P\xa0\x10\x07\x84\xf8\xe1 \x1fx\xbf\xfc\x11\xa1\x12\x90XdG\x82\xb8FI\x02q\t/\xb4\xa4&[\x12\x10\x00;', + "png", +) +ARRAY_TO_BASE64_IMAGE = ( + "data:image/png;base64," + "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" +) +BASE64_MODEL3D = { + "name": "Box.gltf", + "data": "data:;base64,ewogICAgImFzc2V0IjogewogICAgICAgICJnZW5lcmF0b3IiOiAiQ09MTEFEQTJHTFRGIiwKICAgICAgICAidmVyc2lvbiI6ICIyLjAiCiAgICB9LAogICAgInNjZW5lIjogMCwKICAgICJzY2VuZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibm9kZXMiOiBbCiAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgIF0KICAgICAgICB9CiAgICBdLAogICAgIm5vZGVzIjogWwogICAgICAgIHsKICAgICAgICAgICAgImNoaWxkcmVuIjogWwogICAgICAgICAgICAgICAgMQogICAgICAgICAgICBdLAogICAgICAgICAgICAibWF0cml4IjogWwogICAgICAgICAgICAgICAgMS4wLAogICAgICAgICAgICAgICAgMC4wLAogICAgICAgICAgICAgICAgMC4wLAogICAgICAgICAgICAgICAgMC4wLAogICAgICAgICAgICAgICAgMC4wLAogICAgICAgICAgICAgICAgMC4wLAogICAgICAgICAgICAgICAgLTEuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDEuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDAuMCwKICAgICAgICAgICAgICAgIDEuMAogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJtZXNoIjogMAogICAgICAgIH0KICAgIF0sCiAgICAibWVzaGVzIjogWwogICAgICAgIHsKICAgICAgICAgICAgInByaW1pdGl2ZXMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJOT1JNQUwiOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAiUE9TSVRJT04iOiAyCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiaW5kaWNlcyI6IDAsCiAgICAgICAgICAgICAgICAgICAgIm1vZGUiOiA0LAogICAgICAgICAgICAgICAgICAgICJtYXRlcmlhbCI6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm5hbWUiOiAiTWVzaCIKICAgICAgICB9CiAgICBdLAogICAgImFjY2Vzc29ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJidWZmZXJWaWV3IjogMCwKICAgICAgICAgICAgImJ5dGVPZmZzZXQiOiAwLAogICAgICAgICAgICAiY29tcG9uZW50VHlwZSI6IDUxMjMsCiAgICAgICAgICAgICJjb3VudCI6IDM2LAogICAgICAgICAgICAibWF4IjogWwogICAgICAgICAgICAgICAgMjMKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1pbiI6IFsKICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInR5cGUiOiAiU0NBTEFSIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAiYnVmZmVyVmlldyI6IDEsCiAgICAgICAgICAgICJieXRlT2Zmc2V0IjogMCwKICAgICAgICAgICAgImNvbXBvbmVudFR5cGUiOiA1MTI2LAogICAgICAgICAgICAiY291bnQiOiAyNCwKICAgICAgICAgICAgIm1heCI6IFsKICAgICAgICAgICAgICAgIDEuMCwKICAgICAgICAgICAgICAgIDEuMCwKICAgICAgICAgICAgICAgIDEuMAogICAgICAgICAgICBdLAogICAgICAgICAgICAibWluIjogWwogICAgICAgICAgICAgICAgLTEuMCwKICAgICAgICAgICAgICAgIC0xLjAsCiAgICAgICAgICAgICAgICAtMS4wCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0eXBlIjogIlZFQzMiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJidWZmZXJWaWV3IjogMSwKICAgICAgICAgICAgImJ5dGVPZmZzZXQiOiAyODgsCiAgICAgICAgICAgICJjb21wb25lbnRUeXBlIjogNTEyNiwKICAgICAgICAgICAgImNvdW50IjogMjQsCiAgICAgICAgICAgICJtYXgiOiBbCiAgICAgICAgICAgICAgICAwLjUsCiAgICAgICAgICAgICAgICAwLjUsCiAgICAgICAgICAgICAgICAwLjUKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1pbiI6IFsKICAgICAgICAgICAgICAgIC0wLjUsCiAgICAgICAgICAgICAgICAtMC41LAogICAgICAgICAgICAgICAgLTAuNQogICAgICAgICAgICBdLAogICAgICAgICAgICAidHlwZSI6ICJWRUMzIgogICAgICAgIH0KICAgIF0sCiAgICAibWF0ZXJpYWxzIjogWwogICAgICAgIHsKICAgICAgICAgICAgInBick1ldGFsbGljUm91Z2huZXNzIjogewogICAgICAgICAgICAgICAgImJhc2VDb2xvckZhY3RvciI6IFsKICAgICAgICAgICAgICAgICAgICAwLjgwMDAwMDAxMTkyMDkyOSwKICAgICAgICAgICAgICAgICAgICAwLjAsCiAgICAgICAgICAgICAgICAgICAgMC4wLAogICAgICAgICAgICAgICAgICAgIDEuMAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtZXRhbGxpY0ZhY3RvciI6IDAuMAogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJSZWQiCiAgICAgICAgfQogICAgXSwKICAgICJidWZmZXJWaWV3cyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJidWZmZXIiOiAwLAogICAgICAgICAgICAiYnl0ZU9mZnNldCI6IDU3NiwKICAgICAgICAgICAgImJ5dGVMZW5ndGgiOiA3MiwKICAgICAgICAgICAgInRhcmdldCI6IDM0OTYzCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJidWZmZXIiOiAwLAogICAgICAgICAgICAiYnl0ZU9mZnNldCI6IDAsCiAgICAgICAgICAgICJieXRlTGVuZ3RoIjogNTc2LAogICAgICAgICAgICAiYnl0ZVN0cmlkZSI6IDEyLAogICAgICAgICAgICAidGFyZ2V0IjogMzQ5NjIKICAgICAgICB9CiAgICBdLAogICAgImJ1ZmZlcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAiYnl0ZUxlbmd0aCI6IDY0OCwKICAgICAgICAgICAgInVyaSI6ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUFBQUFBQUFBQUFBQUlBL0FBQUFBQUFBQUFBQUFJQS9BQUFBQUFBQUFBQUFBSUEvQUFBQUFBQUFBQUFBQUlBL0FBQUFBQUFBZ0w4QUFBQUFBQUFBQUFBQWdMOEFBQUFBQUFBQUFBQUFnTDhBQUFBQUFBQUFBQUFBZ0w4QUFBQUFBQUNBUHdBQUFBQUFBQUFBQUFDQVB3QUFBQUFBQUFBQUFBQ0FQd0FBQUFBQUFBQUFBQUNBUHdBQUFBQUFBQUFBQUFBQUFBQUFnRDhBQUFBQUFBQUFBQUFBZ0Q4QUFBQUFBQUFBQUFBQWdEOEFBQUFBQUFBQUFBQUFnRDhBQUFBQUFBQ0F2d0FBQUFBQUFBQUFBQUNBdndBQUFBQUFBQUFBQUFDQXZ3QUFBQUFBQUFBQUFBQ0F2d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUMvQUFBQUFBQUFBQUFBQUlDL0FBQUFBQUFBQUFBQUFJQy9BQUFBQUFBQUFBQUFBSUMvQUFBQXZ3QUFBTDhBQUFBL0FBQUFQd0FBQUw4QUFBQS9BQUFBdndBQUFEOEFBQUEvQUFBQVB3QUFBRDhBQUFBL0FBQUFQd0FBQUw4QUFBQS9BQUFBdndBQUFMOEFBQUEvQUFBQVB3QUFBTDhBQUFDL0FBQUF2d0FBQUw4QUFBQy9BQUFBUHdBQUFEOEFBQUEvQUFBQVB3QUFBTDhBQUFBL0FBQUFQd0FBQUQ4QUFBQy9BQUFBUHdBQUFMOEFBQUMvQUFBQXZ3QUFBRDhBQUFBL0FBQUFQd0FBQUQ4QUFBQS9BQUFBdndBQUFEOEFBQUMvQUFBQVB3QUFBRDhBQUFDL0FBQUF2d0FBQUw4QUFBQS9BQUFBdndBQUFEOEFBQUEvQUFBQXZ3QUFBTDhBQUFDL0FBQUF2d0FBQUQ4QUFBQy9BQUFBdndBQUFMOEFBQUMvQUFBQXZ3QUFBRDhBQUFDL0FBQUFQd0FBQUw4QUFBQy9BQUFBUHdBQUFEOEFBQUMvQUFBQkFBSUFBd0FDQUFFQUJBQUZBQVlBQndBR0FBVUFDQUFKQUFvQUN3QUtBQWtBREFBTkFBNEFEd0FPQUEwQUVBQVJBQklBRXdBU0FCRUFGQUFWQUJZQUZ3QVdBQlVBIgogICAgICAgIH0KICAgIF0KfQo=", +} +SUM_PIXELS_INTERPRETATION = { + "scores": [ + [ + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.9217332561281606, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.8478093032233159, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + 0.7775525960239336, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.28228141285466124, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.7110596409959468, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.5717043041883806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.17004439297432927, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.6232387569967188, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.349160393746381, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + 0.37415556842308434, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + [ + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.4147847905809689, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.21617448369040726, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.4393939393939394, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + 0.8667245705462266, + ], + ] + ], + "alternative_outputs": [ + [ + [1793106], + [1795539], + [1797837], + [1800021], + [1815417], + [1802088], + [1806420], + [1824192], + [1818906], + [1804818], + [1813338], + [1812561], + [1811298], + [1817472], + [1810533], + [1797249], + ] + ], +} +SUM_PIXELS_SHAP_INTERPRETATION = { + "scores": [ + [ + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.36599426908032084, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.9044030984144017, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.5780729041010304, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.03706410007949775, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.4724172299368354, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + 0.5148839775509372, + ], + ] + ], + "alternative_outputs": [[]], +} + +FILE_TEMPLATE_CONTEXT = { + "file_count": "single", + "value": { + "name": "sample_file.pdf", + "size": 10558, + "data": "data:application/pdf;base64,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", + }, + "name": "file", + "label": None, + "show_label": True, + "style": {}, + "elem_id": None, + "interactive": None, + "visible": True, +} +BASE64_MICROPHONE = { + "name": "/var/folders/t1/j7cmtcgd0mx43jh9nj_r9mmw0000gn/T/audiovb4gqjpc.wav", + "data": "data:audio/wav;base64,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", +} diff --git a/gradio/mix.py b/gradio/mix.py new file mode 100644 index 0000000000000000000000000000000000000000..aba81eb83a870d713f00ab776537537265975039 --- /dev/null +++ b/gradio/mix.py @@ -0,0 +1,128 @@ +""" +Ways to transform interfaces to produce new interfaces +""" +import asyncio +import warnings + +import gradio +from gradio.documentation import document, set_documentation_group + +set_documentation_group("mix_interface") + + +@document() +class Parallel(gradio.Interface): + """ + Creates a new Interface consisting of multiple Interfaces in parallel (comparing their outputs). + The Interfaces to put in Parallel must share the same input components (but can have different output components). + + Demos: interface_parallel, interface_parallel_load + Guides: advanced_interface_features + """ + + def __init__(self, *interfaces: gradio.Interface, **options): + """ + Parameters: + interfaces: any number of Interface objects that are to be compared in parallel + options: additional kwargs that are passed into the new Interface object to customize it + Returns: + an Interface object comparing the given models + """ + outputs = [] + + for interface in interfaces: + if not (isinstance(interface, gradio.Interface)): + warnings.warn( + "Parallel requires all inputs to be of type Interface. " + "May not work as expected." + ) + outputs.extend(interface.output_components) + + async def parallel_fn(*args): + return_values_with_durations = await asyncio.gather( + *[interface.call_function(0, list(args)) for interface in interfaces] + ) + return_values = [rv["prediction"] for rv in return_values_with_durations] + combined_list = [] + for interface, return_value in zip(interfaces, return_values): + if len(interface.output_components) == 1: + combined_list.append(return_value) + else: + combined_list.extend(return_value) + if len(outputs) == 1: + return combined_list[0] + return combined_list + + parallel_fn.__name__ = " | ".join([io.__name__ for io in interfaces]) + + kwargs = { + "fn": parallel_fn, + "inputs": interfaces[0].input_components, + "outputs": outputs, + } + kwargs.update(options) + super().__init__(**kwargs) + + +@document() +class Series(gradio.Interface): + """ + Creates a new Interface from multiple Interfaces in series (the output of one is fed as the input to the next, + and so the input and output components must agree between the interfaces). + + Demos: interface_series, interface_series_load + Guides: advanced_interface_features + """ + + def __init__(self, *interfaces: gradio.Interface, **options): + """ + Parameters: + interfaces: any number of Interface objects that are to be connected in series + options: additional kwargs that are passed into the new Interface object to customize it + Returns: + an Interface object connecting the given models + """ + + async def connected_fn(*data): + for idx, interface in enumerate(interfaces): + # skip preprocessing for first interface since the Series interface will include it + if idx > 0 and not (interface.api_mode): + data = [ + input_component.preprocess(data[i]) + for i, input_component in enumerate(interface.input_components) + ] + + # run all of predictions sequentially + data = (await interface.call_function(0, list(data)))["prediction"] + if len(interface.output_components) == 1: + data = [data] + + # skip postprocessing for final interface since the Series interface will include it + if idx < len(interfaces) - 1 and not (interface.api_mode): + data = [ + output_component.postprocess(data[i]) + for i, output_component in enumerate( + interface.output_components + ) + ] + + if len(interface.output_components) == 1: # type: ignore + return data[0] + return data + + for interface in interfaces: + if not (isinstance(interface, gradio.Interface)): + warnings.warn( + "Series requires all inputs to be of type Interface. May " + "not work as expected." + ) + connected_fn.__name__ = " => ".join([io.__name__ for io in interfaces]) + + kwargs = { + "fn": connected_fn, + "inputs": interfaces[0].input_components, + "outputs": interfaces[-1].output_components, + "_api_mode": interfaces[0].api_mode, # TODO: set api_mode per-interface + } + kwargs.update(options) + super().__init__(**kwargs) diff --git a/gradio/networking.py b/gradio/networking.py new file mode 100644 index 0000000000000000000000000000000000000000..6d675d633af29bc17bfcb69e82efb3219e985f44 --- /dev/null +++ b/gradio/networking.py @@ -0,0 +1,187 @@ +""" +Defines helper methods useful for setting up ports, launching servers, and +creating tunnels. +""" +from __future__ import annotations + +import os +import socket +import threading +import time +import warnings +from typing import TYPE_CHECKING, Tuple + +import requests +import uvicorn + +from gradio.routes import App +from gradio.tunneling import Tunnel + +if TYPE_CHECKING: # Only import for type checking (to avoid circular imports). + from gradio.blocks import Blocks + +# By default, the local server will try to open on localhost, port 7860. +# If that is not available, then it will try 7861, 7862, ... 7959. +INITIAL_PORT_VALUE = int(os.getenv("GRADIO_SERVER_PORT", "7860")) +TRY_NUM_PORTS = int(os.getenv("GRADIO_NUM_PORTS", "100")) +LOCALHOST_NAME = os.getenv("GRADIO_SERVER_NAME", "127.0.0.1") +GRADIO_API_SERVER = "https://api.gradio.app/v2/tunnel-request" + + +class Server(uvicorn.Server): + def install_signal_handlers(self): + pass + + def run_in_thread(self): + self.thread = threading.Thread(target=self.run, daemon=True) + self.thread.start() + while not self.started: + time.sleep(1e-3) + + def close(self): + self.should_exit = True + self.thread.join() + + +def get_first_available_port(initial: int, final: int) -> int: + """ + Gets the first open port in a specified range of port numbers + Parameters: + initial: the initial value in the range of port numbers + final: final (exclusive) value in the range of port numbers, should be greater than `initial` + Returns: + port: the first open port in the range + """ + for port in range(initial, final): + try: + s = socket.socket() # create a socket object + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind((LOCALHOST_NAME, port)) # Bind to the port + s.close() + return port + except OSError: + pass + raise OSError( + "All ports from {} to {} are in use. Please close a port.".format( + initial, final - 1 + ) + ) + + +def configure_app(app: App, blocks: Blocks) -> App: + auth = blocks.auth + if auth is not None: + if not callable(auth): + app.auth = {account[0]: account[1] for account in auth} + else: + app.auth = auth + else: + app.auth = None + app.blocks = blocks + app.cwd = os.getcwd() + app.favicon_path = blocks.favicon_path + app.tokens = {} + return app + + +def start_server( + blocks: Blocks, + server_name: str | None = None, + server_port: int | None = None, + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_keyfile_password: str | None = None, +) -> Tuple[str, int, str, App, Server]: + """Launches a local server running the provided Interface + Parameters: + blocks: The Blocks object to run on the server + server_name: to make app accessible on local network, set this to "0.0.0.0". Can be set by environment variable GRADIO_SERVER_NAME. + server_port: will start gradio app on this port (if available). Can be set by environment variable GRADIO_SERVER_PORT. + auth: If provided, username and password (or list of username-password tuples) required to access the Blocks. Can also provide function that takes username and password and returns True if valid login. + ssl_keyfile: If a path to a file is provided, will use this as the private key file to create a local server running on https. + ssl_certfile: If a path to a file is provided, will use this as the signed certificate for https. Needs to be provided if ssl_keyfile is provided. + ssl_keyfile_password: If a password is provided, will use this with the ssl certificate for https. + Returns: + port: the port number the server is running on + path_to_local_server: the complete address that the local server can be accessed at + app: the FastAPI app object + server: the server object that is a subclass of uvicorn.Server (used to close the server) + """ + server_name = server_name or LOCALHOST_NAME + # if port is not specified, search for first available port + if server_port is None: + port = get_first_available_port( + INITIAL_PORT_VALUE, INITIAL_PORT_VALUE + TRY_NUM_PORTS + ) + else: + try: + s = socket.socket() + s.bind((LOCALHOST_NAME, server_port)) + s.close() + except OSError: + raise OSError( + "Port {} is in use. If a gradio.Blocks is running on the port, you can close() it or gradio.close_all().".format( + server_port + ) + ) + port = server_port + + url_host_name = "localhost" if server_name == "0.0.0.0" else server_name + + if ssl_keyfile is not None: + if ssl_certfile is None: + raise ValueError( + "ssl_certfile must be provided if ssl_keyfile is provided." + ) + path_to_local_server = "https://{}:{}/".format(url_host_name, port) + else: + path_to_local_server = "http://{}:{}/".format(url_host_name, port) + + app = App.create_app(blocks) + + if blocks.save_to is not None: # Used for selenium tests + blocks.save_to["port"] = port + config = uvicorn.Config( + app=app, + port=port, + host=server_name, + log_level="warning", + ssl_keyfile=ssl_keyfile, + ssl_certfile=ssl_certfile, + ssl_keyfile_password=ssl_keyfile_password, + ws_max_size=1024 * 1024 * 1024, # Setting max websocket size to be 1 GB + ) + server = Server(config=config) + server.run_in_thread() + return server_name, port, path_to_local_server, app, server + + +def setup_tunnel(local_host: str, local_port: int, share_token: str) -> str: + response = requests.get(GRADIO_API_SERVER) + if response and response.status_code == 200: + try: + payload = response.json()[0] + remote_host, remote_port = payload["host"], int(payload["port"]) + tunnel = Tunnel( + remote_host, remote_port, local_host, local_port, share_token + ) + address = tunnel.start_tunnel() + return address + except Exception as e: + raise RuntimeError(str(e)) + else: + raise RuntimeError("Could not get share link from Gradio API Server.") + + +def url_ok(url: str) -> bool: + try: + for _ in range(5): + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + r = requests.head(url, timeout=3, verify=False) + if r.status_code in (200, 401, 302): # 401 or 302 if auth is set + return True + time.sleep(0.500) + except (ConnectionError, requests.exceptions.ConnectionError): + return False + return False diff --git a/gradio/outputs.py b/gradio/outputs.py new file mode 100644 index 0000000000000000000000000000000000000000..2995fdcac85d750490df9b86d548aed452c876ec --- /dev/null +++ b/gradio/outputs.py @@ -0,0 +1,334 @@ +# type: ignore +""" +This module defines various classes that can serve as the `output` to an interface. Each class must inherit from +`OutputComponent`, and each class must define a path to its template. All of the subclasses of `OutputComponent` are +automatically added to a registry, which allows them to be easily referenced in other parts of the code. +""" + +from __future__ import annotations + +import warnings +from typing import Dict, List, Optional + +from gradio import components + + +class Textbox(components.Textbox): + def __init__( + self, + type: str = "text", + label: Optional[str] = None, + ): + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(label=label, type=type) + + +class Image(components.Image): + """ + Component displays an output image. + Output type: Union[numpy.array, PIL.Image, str, matplotlib.pyplot, Tuple[Union[numpy.array, PIL.Image, str], List[Tuple[str, float, float, float, float]]]] + """ + + def __init__( + self, type: str = "auto", plot: bool = False, label: Optional[str] = None + ): + """ + Parameters: + type (str): Type of value to be passed to component. "numpy" expects a numpy array with shape (width, height, 3), "pil" expects a PIL image object, "file" expects a file path to the saved image or a remote URL, "plot" expects a matplotlib.pyplot object, "auto" detects return type. + plot (bool): DEPRECATED. Whether to expect a plot to be returned by the function. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + if plot: + type = "plot" + super().__init__(type=type, label=label) + + +class Video(components.Video): + """ + Used for video output. + Output type: filepath + """ + + def __init__(self, type: Optional[str] = None, label: Optional[str] = None): + """ + Parameters: + type (str): Type of video format to be passed to component, such as 'avi' or 'mp4'. Use 'mp4' to ensure browser playability. If set to None, video will keep returned format. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(format=type, label=label) + + +class Audio(components.Audio): + """ + Creates an audio player that plays the output audio. + Output type: Union[Tuple[int, numpy.array], str] + """ + + def __init__(self, type: str = "auto", label: Optional[str] = None): + """ + Parameters: + type (str): Type of value to be passed to component. "numpy" returns a 2-set tuple with an integer sample_rate and the data as 16-bit int numpy.array of shape (samples, 2), "file" returns a temporary file path to the saved wav audio file, "auto" detects return type. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(type=type, label=label) + + +class File(components.File): + """ + Used for file output. + Output type: Union[file-like, str] + """ + + def __init__(self, label: Optional[str] = None): + """ + Parameters: + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(label=label) + + +class Dataframe(components.Dataframe): + """ + Component displays 2D output through a spreadsheet interface. + Output type: Union[pandas.DataFrame, numpy.array, List[Union[str, float]], List[List[Union[str, float]]]] + """ + + def __init__( + self, + headers: Optional[List[str]] = None, + max_rows: Optional[int] = 20, + max_cols: Optional[int] = None, + overflow_row_behaviour: str = "paginate", + type: str = "auto", + label: Optional[str] = None, + ): + """ + Parameters: + headers (List[str]): Header names to dataframe. Only applicable if type is "numpy" or "array". + max_rows (int): Maximum number of rows to display at once. Set to None for infinite. + max_cols (int): Maximum number of columns to display at once. Set to None for infinite. + overflow_row_behaviour (str): If set to "paginate", will create pages for overflow rows. If set to "show_ends", will show initial and final rows and truncate middle rows. + type (str): Type of value to be passed to component. "pandas" for pandas dataframe, "numpy" for numpy array, or "array" for Python array, "auto" detects return type. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__( + headers=headers, + type=type, + label=label, + max_rows=max_rows, + max_cols=max_cols, + overflow_row_behaviour=overflow_row_behaviour, + ) + + +class Timeseries(components.Timeseries): + """ + Component accepts pandas.DataFrame. + Output type: pandas.DataFrame + """ + + def __init__( + self, x: str = None, y: str | List[str] = None, label: Optional[str] = None + ): + """ + Parameters: + x (str): Column name of x (time) series. None if csv has no headers, in which case first column is x series. + y (Union[str, List[str]]): Column name of y series, or list of column names if multiple series. None if csv has no headers, in which case every column after first is a y series. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(x=x, y=y, label=label) + + +class State(components.State): + """ + Special hidden component that stores state across runs of the interface. + Output type: Any + """ + + def __init__(self, label: Optional[str] = None): + """ + Parameters: + label (str): component name in interface (not used). + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import this component as gr.State() from gradio.components", + ) + super().__init__(label=label) + + +class Label(components.Label): + """ + Component outputs a classification label, along with confidence scores of top categories if provided. Confidence scores are represented as a dictionary mapping labels to scores between 0 and 1. + Output type: Union[Dict[str, float], str, int, float] + """ + + def __init__( + self, + num_top_classes: Optional[int] = None, + type: str = "auto", + label: Optional[str] = None, + ): + """ + Parameters: + num_top_classes (int): number of most confident classes to show. + type (str): Type of value to be passed to component. "value" expects a single out label, "confidences" expects a dictionary mapping labels to confidence scores, "auto" detects return type. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(num_top_classes=num_top_classes, type=type, label=label) + + +class KeyValues: + """ + Component displays a table representing values for multiple fields. + Output type: Union[Dict, List[Tuple[str, Union[str, int, float]]]] + """ + + def __init__(self, value: str = " ", *, label: Optional[str] = None, **kwargs): + """ + Parameters: + value (str): IGNORED + label (str): component name in interface. + """ + raise DeprecationWarning( + "The KeyValues component is deprecated. Please use the DataFrame or JSON " + "components instead." + ) + + +class HighlightedText(components.HighlightedText): + """ + Component creates text that contains spans that are highlighted by category or numerical value. + Output is represent as a list of Tuple pairs, where the first element represents the span of text represented by the tuple, and the second element represents the category or value of the text. + Output type: List[Tuple[str, Union[float, str]]] + """ + + def __init__( + self, + color_map: Dict[str, str] = None, + label: Optional[str] = None, + show_legend: bool = False, + ): + """ + Parameters: + color_map (Dict[str, str]): Map between category and respective colors + label (str): component name in interface. + show_legend (bool): whether to show span categories in a separate legend or inline. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(color_map=color_map, label=label, show_legend=show_legend) + + +class JSON(components.JSON): + """ + Used for JSON output. Expects a JSON string or a Python object that is JSON serializable. + Output type: Union[str, Any] + """ + + def __init__(self, label: Optional[str] = None): + """ + Parameters: + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(label=label) + + +class HTML(components.HTML): + """ + Used for HTML output. Expects an HTML valid string. + Output type: str + """ + + def __init__(self, label: Optional[str] = None): + """ + Parameters: + label (str): component name in interface. + """ + super().__init__(label=label) + + +class Carousel(components.Carousel): + """ + Component displays a set of output components that can be scrolled through. + """ + + def __init__( + self, + components: components.Component | List[components.Component], + label: Optional[str] = None, + ): + """ + Parameters: + components (Union[List[Component], Component]): Classes of component(s) that will be scrolled through. + label (str): component name in interface. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(components=components, label=label) + + +class Chatbot(components.Chatbot): + """ + Component displays a chatbot output showing both user submitted messages and responses + Output type: List[Tuple[str, str]] + """ + + def __init__(self, label: Optional[str] = None): + """ + Parameters: + label (str): component name in interface (not used). + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(label=label) + + +class Image3D(components.Model3D): + """ + Used for 3D image model output. + Input type: File object of type (.obj, glb, or .gltf) + """ + + def __init__( + self, + clear_color=None, + label: Optional[str] = None, + ): + """ + Parameters: + label (str): component name in interface. + optional (bool): If True, the interface can be submitted with no uploaded image, in which case the input value is None. + """ + warnings.warn( + "Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components", + ) + super().__init__(clear_color=clear_color, label=label) diff --git a/gradio/pipelines.py b/gradio/pipelines.py new file mode 100644 index 0000000000000000000000000000000000000000..f974ed6d393a72c22db28451f38e0e5e6fafe377 --- /dev/null +++ b/gradio/pipelines.py @@ -0,0 +1,191 @@ +"""This module should not be used directly as its API is subject to change. Instead, +please use the `gr.Interface.from_pipeline()` function.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +from gradio import components + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + from transformers import pipelines + + +def load_from_pipeline(pipeline: pipelines.base.Pipeline) -> Dict: + """ + Gets the appropriate Interface kwargs for a given Hugging Face transformers.Pipeline. + pipeline (transformers.Pipeline): the transformers.Pipeline from which to create an interface + Returns: + (dict): a dictionary of kwargs that can be used to construct an Interface object + """ + try: + import transformers + from transformers import pipelines + except ImportError: + raise ImportError( + "transformers not installed. Please try `pip install transformers`" + ) + if not isinstance(pipeline, pipelines.base.Pipeline): + raise ValueError("pipeline must be a transformers.Pipeline") + + # Handle the different pipelines. The has_attr() checks to make sure the pipeline exists in the + # version of the transformers library that the user has installed. + if hasattr(transformers, "AudioClassificationPipeline") and isinstance( + pipeline, pipelines.audio_classification.AudioClassificationPipeline + ): + pipeline_info = { + "inputs": components.Audio( + source="microphone", type="filepath", label="Input" + ), + "outputs": components.Label(label="Class"), + "preprocess": lambda i: {"inputs": i}, + "postprocess": lambda r: {i["label"].split(", ")[0]: i["score"] for i in r}, + } + elif hasattr(transformers, "AutomaticSpeechRecognitionPipeline") and isinstance( + pipeline, + pipelines.automatic_speech_recognition.AutomaticSpeechRecognitionPipeline, + ): + pipeline_info = { + "inputs": components.Audio( + source="microphone", type="filepath", label="Input" + ), + "outputs": components.Textbox(label="Output"), + "preprocess": lambda i: {"inputs": i}, + "postprocess": lambda r: r["text"], + } + elif hasattr(transformers, "FeatureExtractionPipeline") and isinstance( + pipeline, pipelines.feature_extraction.FeatureExtractionPipeline + ): + pipeline_info = { + "inputs": components.Textbox(label="Input"), + "outputs": components.Dataframe(label="Output"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r[0], + } + elif hasattr(transformers, "FillMaskPipeline") and isinstance( + pipeline, pipelines.fill_mask.FillMaskPipeline + ): + pipeline_info = { + "inputs": components.Textbox(label="Input"), + "outputs": components.Label(label="Classification"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: {i["token_str"]: i["score"] for i in r}, + } + elif hasattr(transformers, "ImageClassificationPipeline") and isinstance( + pipeline, pipelines.image_classification.ImageClassificationPipeline + ): + pipeline_info = { + "inputs": components.Image(type="filepath", label="Input Image"), + "outputs": components.Label(type="confidences", label="Classification"), + "preprocess": lambda i: {"images": i}, + "postprocess": lambda r: {i["label"].split(", ")[0]: i["score"] for i in r}, + } + elif hasattr(transformers, "QuestionAnsweringPipeline") and isinstance( + pipeline, pipelines.question_answering.QuestionAnsweringPipeline + ): + pipeline_info = { + "inputs": [ + components.Textbox(lines=7, label="Context"), + components.Textbox(label="Question"), + ], + "outputs": [ + components.Textbox(label="Answer"), + components.Label(label="Score"), + ], + "preprocess": lambda c, q: {"context": c, "question": q}, + "postprocess": lambda r: (r["answer"], r["score"]), + } + elif hasattr(transformers, "SummarizationPipeline") and isinstance( + pipeline, pipelines.text2text_generation.SummarizationPipeline + ): + pipeline_info = { + "inputs": components.Textbox(lines=7, label="Input"), + "outputs": components.Textbox(label="Summary"), + "preprocess": lambda x: {"inputs": x}, + "postprocess": lambda r: r[0]["summary_text"], + } + elif hasattr(transformers, "TextClassificationPipeline") and isinstance( + pipeline, pipelines.text_classification.TextClassificationPipeline + ): + pipeline_info = { + "inputs": components.Textbox(label="Input"), + "outputs": components.Label(label="Classification"), + "preprocess": lambda x: [x], + "postprocess": lambda r: {i["label"].split(", ")[0]: i["score"] for i in r}, + } + elif hasattr(transformers, "TextGenerationPipeline") and isinstance( + pipeline, pipelines.text_generation.TextGenerationPipeline + ): + pipeline_info = { + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Output"), + "preprocess": lambda x: {"text_inputs": x}, + "postprocess": lambda r: r[0]["generated_text"], + } + elif hasattr(transformers, "TranslationPipeline") and isinstance( + pipeline, pipelines.text2text_generation.TranslationPipeline + ): + pipeline_info = { + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Translation"), + "preprocess": lambda x: [x], + "postprocess": lambda r: r[0]["translation_text"], + } + elif hasattr(transformers, "Text2TextGenerationPipeline") and isinstance( + pipeline, pipelines.text2text_generation.Text2TextGenerationPipeline + ): + pipeline_info = { + "inputs": components.Textbox(label="Input"), + "outputs": components.Textbox(label="Generated Text"), + "preprocess": lambda x: [x], + "postprocess": lambda r: r[0]["generated_text"], + } + elif hasattr(transformers, "ZeroShotClassificationPipeline") and isinstance( + pipeline, pipelines.zero_shot_classification.ZeroShotClassificationPipeline + ): + pipeline_info = { + "inputs": [ + components.Textbox(label="Input"), + components.Textbox(label="Possible class names (" "comma-separated)"), + components.Checkbox(label="Allow multiple true classes"), + ], + "outputs": components.Label(label="Classification"), + "preprocess": lambda i, c, m: { + "sequences": i, + "candidate_labels": c, + "multi_label": m, + }, + "postprocess": lambda r: { + r["labels"][i]: r["scores"][i] for i in range(len(r["labels"])) + }, + } + else: + raise ValueError("Unsupported pipeline type: {}".format(type(pipeline))) + + # define the function that will be called by the Interface + def fn(*params): + data = pipeline_info["preprocess"](*params) + # special cases that needs to be handled differently + if isinstance( + pipeline, + ( + pipelines.text_classification.TextClassificationPipeline, + pipelines.text2text_generation.Text2TextGenerationPipeline, + pipelines.text2text_generation.TranslationPipeline, + ), + ): + data = pipeline(*data) + else: + data = pipeline(**data) + output = pipeline_info["postprocess"](data) + return output + + interface_info = pipeline_info.copy() + interface_info["fn"] = fn + del interface_info["preprocess"] + del interface_info["postprocess"] + + # define the title/description of the Interface + interface_info["title"] = pipeline.model.__class__.__name__ + + return interface_info diff --git a/gradio/processing_utils.py b/gradio/processing_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..a7e27a20288101c7849e6ef28aa4ddbd86ebcba3 --- /dev/null +++ b/gradio/processing_utils.py @@ -0,0 +1,812 @@ +from __future__ import annotations + +import base64 +import hashlib +import json +import mimetypes +import os +import secrets +import shutil +import subprocess +import tempfile +import urllib.request +import warnings +from io import BytesIO +from pathlib import Path +from typing import Dict, Set, Tuple + +import aiofiles +import numpy as np +import requests +from fastapi import UploadFile +from ffmpy import FFmpeg, FFprobe, FFRuntimeError +from PIL import Image, ImageOps, PngImagePlugin + +from gradio import utils + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") # Ignore pydub warning if ffmpeg is not installed + from pydub import AudioSegment + + +######################### +# GENERAL +######################### + + +def to_binary(x: str | Dict) -> bytes: + """Converts a base64 string or dictionary to a binary string that can be sent in a POST.""" + if isinstance(x, dict): + if x.get("data"): + base64str = x["data"] + else: + base64str = encode_url_or_file_to_base64(x["name"]) + else: + base64str = x + return base64.b64decode(base64str.split(",")[1]) + + +######################### +# IMAGE PRE-PROCESSING +######################### + + +def decode_base64_to_image(encoding: str) -> Image.Image: + content = encoding.split(";")[1] + image_encoded = content.split(",")[1] + img = Image.open(BytesIO(base64.b64decode(image_encoded))) + exif = img.getexif() + # 274 is the code for image rotation and 1 means "correct orientation" + if exif.get(274, 1) != 1 and hasattr(ImageOps, "exif_transpose"): + img = ImageOps.exif_transpose(img) + return img + + +def encode_url_or_file_to_base64(path: str | Path): + path = str(path) + if utils.validate_url(path): + return encode_url_to_base64(path) + else: + return encode_file_to_base64(path) + + +def get_mimetype(filename: str) -> str | None: + mimetype = mimetypes.guess_type(filename)[0] + if mimetype is not None: + mimetype = mimetype.replace("x-wav", "wav").replace("x-flac", "flac") + return mimetype + + +def get_extension(encoding: str) -> str | None: + encoding = encoding.replace("audio/wav", "audio/x-wav") + type = mimetypes.guess_type(encoding)[0] + if type == "audio/flac": # flac is not supported by mimetypes + return "flac" + elif type is None: + return None + extension = mimetypes.guess_extension(type) + if extension is not None and extension.startswith("."): + extension = extension[1:] + return extension + + +def encode_file_to_base64(f): + with open(f, "rb") as file: + encoded_string = base64.b64encode(file.read()) + base64_str = str(encoded_string, "utf-8") + mimetype = get_mimetype(f) + return ( + "data:" + + (mimetype if mimetype is not None else "") + + ";base64," + + base64_str + ) + + +def encode_url_to_base64(url): + encoded_string = base64.b64encode(requests.get(url).content) + base64_str = str(encoded_string, "utf-8") + mimetype = get_mimetype(url) + return ( + "data:" + (mimetype if mimetype is not None else "") + ";base64," + base64_str + ) + + +def encode_plot_to_base64(plt): + with BytesIO() as output_bytes: + plt.savefig(output_bytes, format="png") + bytes_data = output_bytes.getvalue() + base64_str = str(base64.b64encode(bytes_data), "utf-8") + return "data:image/png;base64," + base64_str + + +def save_array_to_file(image_array, dir=None): + pil_image = Image.fromarray(_convert(image_array, np.uint8, force_copy=False)) + file_obj = tempfile.NamedTemporaryFile(delete=False, suffix=".png", dir=dir) + pil_image.save(file_obj) + return file_obj + + +def get_pil_metadata(pil_image): + # Copy any text-only metadata + metadata = PngImagePlugin.PngInfo() + for key, value in pil_image.info.items(): + if isinstance(key, str) and isinstance(value, str): + metadata.add_text(key, value) + + return metadata + + +def save_pil_to_file(pil_image, dir=None): + file_obj = tempfile.NamedTemporaryFile(delete=False, suffix=".png", dir=dir) + pil_image.save(file_obj, pnginfo=get_pil_metadata(pil_image)) + return file_obj + + +def encode_pil_to_base64(pil_image): + with BytesIO() as output_bytes: + pil_image.save(output_bytes, "PNG", pnginfo=get_pil_metadata(pil_image)) + bytes_data = output_bytes.getvalue() + base64_str = str(base64.b64encode(bytes_data), "utf-8") + return "data:image/png;base64," + base64_str + + +def encode_array_to_base64(image_array): + with BytesIO() as output_bytes: + pil_image = Image.fromarray(_convert(image_array, np.uint8, force_copy=False)) + pil_image.save(output_bytes, "PNG") + bytes_data = output_bytes.getvalue() + base64_str = str(base64.b64encode(bytes_data), "utf-8") + return "data:image/png;base64," + base64_str + + +def resize_and_crop(img, size, crop_type="center"): + """ + Resize and crop an image to fit the specified size. + args: + size: `(width, height)` tuple. Pass `None` for either width or height + to only crop and resize the other. + crop_type: can be 'top', 'middle' or 'bottom', depending on this + value, the image will cropped getting the 'top/left', 'middle' or + 'bottom/right' of the image to fit the size. + raises: + ValueError: if an invalid `crop_type` is provided. + """ + if crop_type == "top": + center = (0, 0) + elif crop_type == "center": + center = (0.5, 0.5) + else: + raise ValueError + + resize = list(size) + if size[0] is None: + resize[0] = img.size[0] + if size[1] is None: + resize[1] = img.size[1] + return ImageOps.fit(img, resize, centering=center) # type: ignore + + +################## +# Audio +################## + + +def audio_from_file(filename, crop_min=0, crop_max=100): + try: + audio = AudioSegment.from_file(filename) + except FileNotFoundError as e: + isfile = Path(filename).is_file() + msg = ( + f"Cannot load audio from file: `{'ffprobe' if isfile else filename}` not found." + + " Please install `ffmpeg` in your system to use non-WAV audio file formats" + " and make sure `ffprobe` is in your PATH." + if isfile + else "" + ) + raise RuntimeError(msg) from e + if crop_min != 0 or crop_max != 100: + audio_start = len(audio) * crop_min / 100 + audio_end = len(audio) * crop_max / 100 + audio = audio[audio_start:audio_end] + data = np.array(audio.get_array_of_samples()) + if audio.channels > 1: + data = data.reshape(-1, audio.channels) + return audio.frame_rate, data + + +def audio_to_file(sample_rate, data, filename): + data = convert_to_16_bit_wav(data) + audio = AudioSegment( + data.tobytes(), + frame_rate=sample_rate, + sample_width=data.dtype.itemsize, + channels=(1 if len(data.shape) == 1 else data.shape[1]), + ) + file = audio.export(filename, format="wav") + file.close() # type: ignore + + +def convert_to_16_bit_wav(data): + # Based on: https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.wavfile.write.html + warning = "Trying to convert audio automatically from {} to 16-bit int format." + if data.dtype in [np.float64, np.float32, np.float16]: + warnings.warn(warning.format(data.dtype)) + data = data / np.abs(data).max() + data = data * 32767 + data = data.astype(np.int16) + elif data.dtype == np.int32: + warnings.warn(warning.format(data.dtype)) + data = data / 65538 + data = data.astype(np.int16) + elif data.dtype == np.int16: + pass + elif data.dtype == np.uint16: + warnings.warn(warning.format(data.dtype)) + data = data - 32768 + data = data.astype(np.int16) + elif data.dtype == np.uint8: + warnings.warn(warning.format(data.dtype)) + data = data * 257 - 32768 + data = data.astype(np.int16) + else: + raise ValueError( + "Audio data cannot be converted automatically from " + f"{data.dtype} to 16-bit int format." + ) + return data + + +################## +# OUTPUT +################## + + +def decode_base64_to_binary(encoding) -> Tuple[bytes, str | None]: + extension = get_extension(encoding) + try: + data = encoding.split(",")[1] + except IndexError: + data = "" + return base64.b64decode(data), extension + + +def decode_base64_to_file(encoding, file_path=None, dir=None, prefix=None): + if dir is not None: + os.makedirs(dir, exist_ok=True) + data, extension = decode_base64_to_binary(encoding) + if file_path is not None and prefix is None: + filename = Path(file_path).name + prefix = filename + if "." in filename: + prefix = filename[0 : filename.index(".")] + extension = filename[filename.index(".") + 1 :] + + if prefix is not None: + prefix = utils.strip_invalid_filename_characters(prefix) + + if extension is None: + file_obj = tempfile.NamedTemporaryFile(delete=False, prefix=prefix, dir=dir) + else: + file_obj = tempfile.NamedTemporaryFile( + delete=False, + prefix=prefix, + suffix="." + extension, + dir=dir, + ) + file_obj.write(data) + file_obj.flush() + return file_obj + + +def dict_or_str_to_json_file(jsn, dir=None): + if dir is not None: + os.makedirs(dir, exist_ok=True) + + file_obj = tempfile.NamedTemporaryFile( + delete=False, suffix=".json", dir=dir, mode="w+" + ) + if isinstance(jsn, str): + jsn = json.loads(jsn) + json.dump(jsn, file_obj) + file_obj.flush() + return file_obj + + +def file_to_json(file_path: str | Path) -> Dict: + with open(file_path) as f: + return json.load(f) + + +class TempFileManager: + """ + A class that should be inherited by any Component that needs to manage temporary files. + It should be instantiated in the __init__ method of the component. + """ + + def __init__(self) -> None: + # Set stores all the temporary files created by this component. + self.temp_files: Set[str] = set() + self.DEFAULT_TEMP_DIR = tempfile.gettempdir() + + def hash_file(self, file_path: str, chunk_num_blocks: int = 128) -> str: + sha1 = hashlib.sha1() + with open(file_path, "rb") as f: + for chunk in iter(lambda: f.read(chunk_num_blocks * sha1.block_size), b""): + sha1.update(chunk) + return sha1.hexdigest() + + def hash_url(self, url: str, chunk_num_blocks: int = 128) -> str: + sha1 = hashlib.sha1() + remote = urllib.request.urlopen(url) + max_file_size = 100 * 1024 * 1024 # 100MB + total_read = 0 + while True: + data = remote.read(chunk_num_blocks * sha1.block_size) + total_read += chunk_num_blocks * sha1.block_size + if not data or total_read > max_file_size: + break + sha1.update(data) + return sha1.hexdigest() + + def hash_base64(self, base64_encoding: str, chunk_num_blocks: int = 128) -> str: + sha1 = hashlib.sha1() + for i in range(0, len(base64_encoding), chunk_num_blocks * sha1.block_size): + data = base64_encoding[i : i + chunk_num_blocks * sha1.block_size] + sha1.update(data.encode("utf-8")) + return sha1.hexdigest() + + def make_temp_copy_if_needed(self, file_path: str) -> str: + """Returns a temporary file path for a copy of the given file path if it does + not already exist. Otherwise returns the path to the existing temp file.""" + temp_dir = self.hash_file(file_path) + temp_dir = Path(self.DEFAULT_TEMP_DIR) / temp_dir + temp_dir.mkdir(exist_ok=True, parents=True) + + f = tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) + f.name = utils.strip_invalid_filename_characters(Path(file_path).name) + full_temp_file_path = str(utils.abspath(temp_dir / f.name)) + + if not Path(full_temp_file_path).exists(): + shutil.copy2(file_path, full_temp_file_path) + + self.temp_files.add(full_temp_file_path) + return full_temp_file_path + + async def save_uploaded_file(self, file: UploadFile, upload_dir: str) -> str: + temp_dir = secrets.token_hex( + 20 + ) # Since the full file is being uploaded anyways, there is no benefit to hashing the file. + temp_dir = Path(upload_dir) / temp_dir + temp_dir.mkdir(exist_ok=True, parents=True) + output_file_obj = tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) + + if file.filename: + file_name = Path(file.filename).name + output_file_obj.name = utils.strip_invalid_filename_characters(file_name) + + full_temp_file_path = str(utils.abspath(temp_dir / output_file_obj.name)) + + async with aiofiles.open(full_temp_file_path, "wb") as output_file: + while True: + content = await file.read(100 * 1024 * 1024) + if not content: + break + await output_file.write(content) + + return full_temp_file_path + + def download_temp_copy_if_needed(self, url: str) -> str: + """Downloads a file and makes a temporary file path for a copy if does not already + exist. Otherwise returns the path to the existing temp file.""" + temp_dir = self.hash_url(url) + temp_dir = Path(self.DEFAULT_TEMP_DIR) / temp_dir + temp_dir.mkdir(exist_ok=True, parents=True) + f = tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) + + f.name = utils.strip_invalid_filename_characters(Path(url).name) + full_temp_file_path = str(utils.abspath(temp_dir / f.name)) + + if not Path(full_temp_file_path).exists(): + with requests.get(url, stream=True) as r: + with open(full_temp_file_path, "wb") as f: + shutil.copyfileobj(r.raw, f) + + self.temp_files.add(full_temp_file_path) + return full_temp_file_path + + def base64_to_temp_file_if_needed( + self, base64_encoding: str, file_name: str | None = None + ) -> str: + """Converts a base64 encoding to a file and returns the path to the file if + the file doesn't already exist. Otherwise returns the path to the existing file.""" + temp_dir = self.hash_base64(base64_encoding) + temp_dir = Path(self.DEFAULT_TEMP_DIR) / temp_dir + temp_dir.mkdir(exist_ok=True, parents=True) + + guess_extension = get_extension(base64_encoding) + if file_name: + file_name = utils.strip_invalid_filename_characters(file_name) + elif guess_extension: + file_name = "file." + guess_extension + else: + file_name = "file" + f = tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) + f.name = file_name + full_temp_file_path = str(utils.abspath(temp_dir / f.name)) + + if not Path(full_temp_file_path).exists(): + data, _ = decode_base64_to_binary(base64_encoding) + with open(full_temp_file_path, "wb") as fb: + fb.write(data) + + self.temp_files.add(full_temp_file_path) + return full_temp_file_path + + +def download_tmp_copy_of_file( + url_path: str, access_token: str | None = None, dir: str | None = None +) -> tempfile._TemporaryFileWrapper: + if dir is not None: + os.makedirs(dir, exist_ok=True) + headers = {"Authorization": "Bearer " + access_token} if access_token else {} + prefix = Path(url_path).stem + suffix = Path(url_path).suffix + file_obj = tempfile.NamedTemporaryFile( + delete=False, + prefix=prefix, + suffix=suffix, + dir=dir, + ) + with requests.get(url_path, headers=headers, stream=True) as r: + with open(file_obj.name, "wb") as f: + shutil.copyfileobj(r.raw, f) + return file_obj + + +def create_tmp_copy_of_file( + file_path: str, dir: str | None = None +) -> tempfile._TemporaryFileWrapper: + if dir is not None: + os.makedirs(dir, exist_ok=True) + prefix = Path(file_path).stem + suffix = Path(file_path).suffix + file_obj = tempfile.NamedTemporaryFile( + delete=False, + prefix=prefix, + suffix=suffix, + dir=dir, + ) + shutil.copy2(file_path, file_obj.name) + return file_obj + + +def _convert(image, dtype, force_copy=False, uniform=False): + """ + Adapted from: https://github.com/scikit-image/scikit-image/blob/main/skimage/util/dtype.py#L510-L531 + + Convert an image to the requested data-type. + Warnings are issued in case of precision loss, or when negative values + are clipped during conversion to unsigned integer types (sign loss). + Floating point values are expected to be normalized and will be clipped + to the range [0.0, 1.0] or [-1.0, 1.0] when converting to unsigned or + signed integers respectively. + Numbers are not shifted to the negative side when converting from + unsigned to signed integer types. Negative values will be clipped when + converting to unsigned integers. + Parameters + ---------- + image : ndarray + Input image. + dtype : dtype + Target data-type. + force_copy : bool, optional + Force a copy of the data, irrespective of its current dtype. + uniform : bool, optional + Uniformly quantize the floating point range to the integer range. + By default (uniform=False) floating point values are scaled and + rounded to the nearest integers, which minimizes back and forth + conversion errors. + .. versionchanged :: 0.15 + ``_convert`` no longer warns about possible precision or sign + information loss. See discussions on these warnings at: + https://github.com/scikit-image/scikit-image/issues/2602 + https://github.com/scikit-image/scikit-image/issues/543#issuecomment-208202228 + https://github.com/scikit-image/scikit-image/pull/3575 + References + ---------- + .. [1] DirectX data conversion rules. + https://msdn.microsoft.com/en-us/library/windows/desktop/dd607323%28v=vs.85%29.aspx + .. [2] Data Conversions. In "OpenGL ES 2.0 Specification v2.0.25", + pp 7-8. Khronos Group, 2010. + .. [3] Proper treatment of pixels as integers. A.W. Paeth. + In "Graphics Gems I", pp 249-256. Morgan Kaufmann, 1990. + .. [4] Dirty Pixels. J. Blinn. In "Jim Blinn's corner: Dirty Pixels", + pp 47-57. Morgan Kaufmann, 1998. + """ + dtype_range = { + bool: (False, True), + np.bool_: (False, True), + np.bool8: (False, True), + float: (-1, 1), + np.float_: (-1, 1), + np.float16: (-1, 1), + np.float32: (-1, 1), + np.float64: (-1, 1), + } + + def _dtype_itemsize(itemsize, *dtypes): + """Return first of `dtypes` with itemsize greater than `itemsize` + Parameters + ---------- + itemsize: int + The data type object element size. + Other Parameters + ---------------- + *dtypes: + Any Object accepted by `np.dtype` to be converted to a data + type object + Returns + ------- + dtype: data type object + First of `dtypes` with itemsize greater than `itemsize`. + """ + return next(dt for dt in dtypes if np.dtype(dt).itemsize >= itemsize) + + def _dtype_bits(kind, bits, itemsize=1): + """Return dtype of `kind` that can store a `bits` wide unsigned int + Parameters: + kind: str + Data type kind. + bits: int + Desired number of bits. + itemsize: int + The data type object element size. + Returns + ------- + dtype: data type object + Data type of `kind` that can store a `bits` wide unsigned int + """ + + s = next( + i + for i in (itemsize,) + (2, 4, 8) + if bits < (i * 8) or (bits == (i * 8) and kind == "u") + ) + + return np.dtype(kind + str(s)) + + def _scale(a, n, m, copy=True): + """Scale an array of unsigned/positive integers from `n` to `m` bits. + Numbers can be represented exactly only if `m` is a multiple of `n`. + Parameters + ---------- + a : ndarray + Input image array. + n : int + Number of bits currently used to encode the values in `a`. + m : int + Desired number of bits to encode the values in `out`. + copy : bool, optional + If True, allocates and returns new array. Otherwise, modifies + `a` in place. + Returns + ------- + out : array + Output image array. Has the same kind as `a`. + """ + kind = a.dtype.kind + if n > m and a.max() < 2**m: + return a.astype(_dtype_bits(kind, m)) + elif n == m: + return a.copy() if copy else a + elif n > m: + # downscale with precision loss + if copy: + b = np.empty(a.shape, _dtype_bits(kind, m)) + np.floor_divide(a, 2 ** (n - m), out=b, dtype=a.dtype, casting="unsafe") + return b + else: + a //= 2 ** (n - m) + return a + elif m % n == 0: + # exact upscale to a multiple of `n` bits + if copy: + b = np.empty(a.shape, _dtype_bits(kind, m)) + np.multiply(a, (2**m - 1) // (2**n - 1), out=b, dtype=b.dtype) + return b + else: + a = a.astype(_dtype_bits(kind, m, a.dtype.itemsize), copy=False) + a *= (2**m - 1) // (2**n - 1) + return a + else: + # upscale to a multiple of `n` bits, + # then downscale with precision loss + o = (m // n + 1) * n + if copy: + b = np.empty(a.shape, _dtype_bits(kind, o)) + np.multiply(a, (2**o - 1) // (2**n - 1), out=b, dtype=b.dtype) + b //= 2 ** (o - m) + return b + else: + a = a.astype(_dtype_bits(kind, o, a.dtype.itemsize), copy=False) + a *= (2**o - 1) // (2**n - 1) + a //= 2 ** (o - m) + return a + + image = np.asarray(image) + dtypeobj_in = image.dtype + if dtype is np.floating: + dtypeobj_out = np.dtype("float64") + else: + dtypeobj_out = np.dtype(dtype) + dtype_in = dtypeobj_in.type + dtype_out = dtypeobj_out.type + kind_in = dtypeobj_in.kind + kind_out = dtypeobj_out.kind + itemsize_in = dtypeobj_in.itemsize + itemsize_out = dtypeobj_out.itemsize + + # Below, we do an `issubdtype` check. Its purpose is to find out + # whether we can get away without doing any image conversion. This happens + # when: + # + # - the output and input dtypes are the same or + # - when the output is specified as a type, and the input dtype + # is a subclass of that type (e.g. `np.floating` will allow + # `float32` and `float64` arrays through) + + if np.issubdtype(dtype_in, np.obj2sctype(dtype)): + if force_copy: + image = image.copy() + return image + + if kind_in in "ui": + imin_in = np.iinfo(dtype_in).min + imax_in = np.iinfo(dtype_in).max + if kind_out in "ui": + imin_out = np.iinfo(dtype_out).min # type: ignore + imax_out = np.iinfo(dtype_out).max # type: ignore + + # any -> binary + if kind_out == "b": + return image > dtype_in(dtype_range[dtype_in][1] / 2) + + # binary -> any + if kind_in == "b": + result = image.astype(dtype_out) + if kind_out != "f": + result *= dtype_out(dtype_range[dtype_out][1]) + return result + + # float -> any + if kind_in == "f": + if kind_out == "f": + # float -> float + return image.astype(dtype_out) + + if np.min(image) < -1.0 or np.max(image) > 1.0: + raise ValueError("Images of type float must be between -1 and 1.") + # floating point -> integer + # use float type that can represent output integer type + computation_type = _dtype_itemsize( + itemsize_out, dtype_in, np.float32, np.float64 + ) + + if not uniform: + if kind_out == "u": + image_out = np.multiply(image, imax_out, dtype=computation_type) # type: ignore + else: + image_out = np.multiply( + image, (imax_out - imin_out) / 2, dtype=computation_type # type: ignore + ) + image_out -= 1.0 / 2.0 + np.rint(image_out, out=image_out) + np.clip(image_out, imin_out, imax_out, out=image_out) # type: ignore + elif kind_out == "u": + image_out = np.multiply(image, imax_out + 1, dtype=computation_type) # type: ignore + np.clip(image_out, 0, imax_out, out=image_out) # type: ignore + else: + image_out = np.multiply( + image, (imax_out - imin_out + 1.0) / 2.0, dtype=computation_type # type: ignore + ) + np.floor(image_out, out=image_out) + np.clip(image_out, imin_out, imax_out, out=image_out) # type: ignore + return image_out.astype(dtype_out) + + # signed/unsigned int -> float + if kind_out == "f": + # use float type that can exactly represent input integers + computation_type = _dtype_itemsize( + itemsize_in, dtype_out, np.float32, np.float64 + ) + + if kind_in == "u": + # using np.divide or np.multiply doesn't copy the data + # until the computation time + image = np.multiply(image, 1.0 / imax_in, dtype=computation_type) # type: ignore + # DirectX uses this conversion also for signed ints + # if imin_in: + # np.maximum(image, -1.0, out=image) + else: + image = np.add(image, 0.5, dtype=computation_type) + image *= 2 / (imax_in - imin_in) # type: ignore + + return np.asarray(image, dtype_out) + + # unsigned int -> signed/unsigned int + if kind_in == "u": + if kind_out == "i": + # unsigned int -> signed int + image = _scale(image, 8 * itemsize_in, 8 * itemsize_out - 1) + return image.view(dtype_out) + else: + # unsigned int -> unsigned int + return _scale(image, 8 * itemsize_in, 8 * itemsize_out) + + # signed int -> unsigned int + if kind_out == "u": + image = _scale(image, 8 * itemsize_in - 1, 8 * itemsize_out) + result = np.empty(image.shape, dtype_out) + np.maximum(image, 0, out=result, dtype=image.dtype, casting="unsafe") + return result + + # signed int -> signed int + if itemsize_in > itemsize_out: + return _scale(image, 8 * itemsize_in - 1, 8 * itemsize_out - 1) + + image = image.astype(_dtype_bits("i", itemsize_out * 8)) + image -= imin_in # type: ignore + image = _scale(image, 8 * itemsize_in, 8 * itemsize_out, copy=False) + image += imin_out # type: ignore + return image.astype(dtype_out) + + +def ffmpeg_installed() -> bool: + return shutil.which("ffmpeg") is not None + + +def video_is_playable(video_filepath: str) -> bool: + """Determines if a video is playable in the browser. + + A video is playable if it has a playable container and codec. + .mp4 -> h264 + .webm -> vp9 + .ogg -> theora + """ + try: + container = Path(video_filepath).suffix.lower() + probe = FFprobe( + global_options="-show_format -show_streams -select_streams v -print_format json", + inputs={video_filepath: None}, + ) + output = probe.run(stderr=subprocess.PIPE, stdout=subprocess.PIPE) + output = json.loads(output[0]) + video_codec = output["streams"][0]["codec_name"] + return (container, video_codec) in [ + (".mp4", "h264"), + (".ogg", "theora"), + (".webm", "vp9"), + ] + # If anything goes wrong, assume the video can be played to not convert downstream + except (FFRuntimeError, IndexError, KeyError): + return True + + +def convert_video_to_playable_mp4(video_path: str) -> str: + """Convert the video to mp4. If something goes wrong return the original video.""" + try: + output_path = Path(video_path).with_suffix(".mp4") + with tempfile.NamedTemporaryFile(delete=False) as tmp_file: + shutil.copy2(video_path, tmp_file.name) + # ffmpeg will automatically use h264 codec (playable in browser) when converting to mp4 + ff = FFmpeg( + inputs={str(tmp_file.name): None}, + outputs={str(output_path): None}, + global_options="-y -loglevel quiet", + ) + ff.run() + except FFRuntimeError as e: + print(f"Error converting video to browser-playable format {str(e)}") + output_path = video_path + return str(output_path) diff --git a/gradio/queueing.py b/gradio/queueing.py new file mode 100644 index 0000000000000000000000000000000000000000..dbc8514ceb62668dd45558afe195cbe0c0ef9822 --- /dev/null +++ b/gradio/queueing.py @@ -0,0 +1,470 @@ +from __future__ import annotations + +import asyncio +import copy +import sys +import time +from asyncio import TimeoutError as AsyncTimeOutError +from collections import deque +from typing import Any, Deque, Dict, List, Tuple + +import fastapi +import httpx + +from gradio.data_classes import Estimation, PredictBody, Progress, ProgressUnit +from gradio.helpers import TrackedIterable +from gradio.utils import AsyncRequest, run_coro_in_background, set_task_name + + +class Event: + def __init__( + self, + websocket: fastapi.WebSocket, + session_hash: str, + fn_index: int, + ): + self.websocket = websocket + self.session_hash: str = session_hash + self.fn_index: int = fn_index + self._id = f"{self.session_hash}_{self.fn_index}" + self.data: PredictBody | None = None + self.lost_connection_time: float | None = None + self.token: str | None = None + self.progress: Progress | None = None + self.progress_pending: bool = False + + async def disconnect(self, code: int = 1000): + await self.websocket.close(code=code) + + +class Queue: + def __init__( + self, + live_updates: bool, + concurrency_count: int, + update_intervals: float, + max_size: int | None, + blocks_dependencies: List, + ): + self.event_queue: Deque[Event] = deque() + self.events_pending_reconnection = [] + self.stopped = False + self.max_thread_count = concurrency_count + self.update_intervals = update_intervals + self.active_jobs: List[None | List[Event]] = [None] * concurrency_count + self.delete_lock = asyncio.Lock() + self.server_path = None + self.duration_history_total = 0 + self.duration_history_count = 0 + self.avg_process_time = 0 + self.avg_concurrent_process_time = None + self.queue_duration = 1 + self.live_updates = live_updates + self.sleep_when_free = 0.05 + self.progress_update_sleep_when_free = 0.1 + self.max_size = max_size + self.blocks_dependencies = blocks_dependencies + self.access_token = "" + self.queue_client = None + + async def start(self, progress_tracking=False): + # So that the client is attached to the running event loop + self.queue_client = httpx.AsyncClient() + + run_coro_in_background(self.start_processing) + if progress_tracking: + run_coro_in_background(self.start_progress_tracking) + if not self.live_updates: + run_coro_in_background(self.notify_clients) + + def close(self): + self.stopped = True + + def resume(self): + self.stopped = False + + def set_url(self, url: str): + self.server_path = url + + def set_access_token(self, token: str): + self.access_token = token + + def get_active_worker_count(self) -> int: + count = 0 + for worker in self.active_jobs: + if worker is not None: + count += 1 + return count + + def get_events_in_batch(self) -> Tuple[List[Event] | None, bool]: + if not (self.event_queue): + return None, False + + first_event = self.event_queue.popleft() + events = [first_event] + + event_fn_index = first_event.fn_index + batch = self.blocks_dependencies[event_fn_index]["batch"] + + if batch: + batch_size = self.blocks_dependencies[event_fn_index]["max_batch_size"] + rest_of_batch = [ + event for event in self.event_queue if event.fn_index == event_fn_index + ][: batch_size - 1] + events.extend(rest_of_batch) + [self.event_queue.remove(event) for event in rest_of_batch] + + return events, batch + + async def start_processing(self) -> None: + while not self.stopped: + if not self.event_queue: + await asyncio.sleep(self.sleep_when_free) + continue + + if not (None in self.active_jobs): + await asyncio.sleep(self.sleep_when_free) + continue + # Using mutex to avoid editing a list in use + async with self.delete_lock: + events, batch = self.get_events_in_batch() + + if events: + self.active_jobs[self.active_jobs.index(None)] = events + task = run_coro_in_background(self.process_events, events, batch) + run_coro_in_background(self.broadcast_live_estimations) + set_task_name(task, events[0].session_hash, events[0].fn_index, batch) + + async def start_progress_tracking(self) -> None: + while not self.stopped: + if not any(self.active_jobs): + await asyncio.sleep(self.progress_update_sleep_when_free) + continue + + for job in self.active_jobs: + if job is None: + continue + for event in job: + if event.progress_pending and event.progress: + event.progress_pending = False + client_awake = await self.send_message( + event, event.progress.dict() + ) + if not client_awake: + await self.clean_event(event) + + await asyncio.sleep(self.progress_update_sleep_when_free) + + def set_progress( + self, + event_id: str, + iterables: List[TrackedIterable] | None, + ): + if iterables is None: + return + for job in self.active_jobs: + if job is None: + continue + for evt in job: + if evt._id == event_id: + progress_data: List[ProgressUnit] = [] + for iterable in iterables: + progress_unit = ProgressUnit( + index=iterable.index, + length=iterable.length, + unit=iterable.unit, + progress=iterable.progress, + desc=iterable.desc, + ) + progress_data.append(progress_unit) + evt.progress = Progress(progress_data=progress_data) + evt.progress_pending = True + + def push(self, event: Event) -> int | None: + """ + Add event to queue, or return None if Queue is full + Parameters: + event: Event to add to Queue + Returns: + rank of submitted Event + """ + queue_len = len(self.event_queue) + if self.max_size is not None and queue_len >= self.max_size: + return None + self.event_queue.append(event) + return queue_len + + async def clean_event(self, event: Event) -> None: + if event in self.event_queue: + async with self.delete_lock: + self.event_queue.remove(event) + + async def broadcast_live_estimations(self) -> None: + """ + Runs 2 functions sequentially instead of concurrently. Otherwise dced clients are tried to get deleted twice. + """ + if self.live_updates: + await self.broadcast_estimations() + + async def gather_event_data(self, event: Event, receive_timeout=60) -> bool: + """ + Gather data for the event + + Parameters: + event: + """ + if not event.data: + client_awake = await self.send_message(event, {"msg": "send_data"}) + if not client_awake: + return False + data, client_awake = await self.get_message(event, timeout=receive_timeout) + if not client_awake: + # In the event, we timeout due to large data size + # Let the client know, otherwise will hang + await self.send_message( + event, + { + "msg": "process_completed", + "output": {"error": "Time out uploading data to server"}, + "success": False, + }, + ) + return False + event.data = data + return True + + async def notify_clients(self) -> None: + """ + Notify clients about events statuses in the queue periodically. + """ + while not self.stopped: + await asyncio.sleep(self.update_intervals) + if self.event_queue: + await self.broadcast_estimations() + + async def broadcast_estimations(self) -> None: + estimation = self.get_estimation() + # Send all messages concurrently + await asyncio.gather( + *[ + self.send_estimation(event, estimation, rank) + for rank, event in enumerate(self.event_queue) + ] + ) + + async def send_estimation( + self, event: Event, estimation: Estimation, rank: int + ) -> Estimation: + """ + Send estimation about ETA to the client. + + Parameters: + event: + estimation: + rank: + """ + estimation.rank = rank + + if self.avg_concurrent_process_time is not None: + estimation.rank_eta = ( + estimation.rank * self.avg_concurrent_process_time + + self.avg_process_time + ) + if None not in self.active_jobs: + # Add estimated amount of time for a thread to get empty + estimation.rank_eta += self.avg_concurrent_process_time + client_awake = await self.send_message(event, estimation.dict()) + if not client_awake: + await self.clean_event(event) + return estimation + + def update_estimation(self, duration: float) -> None: + """ + Update estimation by last x element's average duration. + + Parameters: + duration: + """ + self.duration_history_total += duration + self.duration_history_count += 1 + self.avg_process_time = ( + self.duration_history_total / self.duration_history_count + ) + self.avg_concurrent_process_time = self.avg_process_time / min( + self.max_thread_count, self.duration_history_count + ) + self.queue_duration = self.avg_concurrent_process_time * len(self.event_queue) + + def get_estimation(self) -> Estimation: + return Estimation( + queue_size=len(self.event_queue), + avg_event_process_time=self.avg_process_time, + avg_event_concurrent_process_time=self.avg_concurrent_process_time, + queue_eta=self.queue_duration, + ) + + def get_request_params(self, websocket: fastapi.WebSocket) -> Dict[str, Any]: + return { + "url": str(websocket.url), + "headers": dict(websocket.headers), + "query_params": dict(websocket.query_params), + "path_params": dict(websocket.path_params), + "client": dict(host=websocket.client.host, port=websocket.client.port), # type: ignore + } + + async def call_prediction(self, events: List[Event], batch: bool): + data = events[0].data + assert data is not None, "No event data" + token = events[0].token + data.event_id = events[0]._id if not batch else None + try: + data.request = self.get_request_params(events[0].websocket) + except ValueError: + pass + + if batch: + data.data = list(zip(*[event.data.data for event in events if event.data])) + data.request = [ + self.get_request_params(event.websocket) + for event in events + if event.data + ] + data.batched = True + response = await AsyncRequest( + method=AsyncRequest.Method.POST, + url=f"{self.server_path}api/predict", + json=dict(data), + headers={"Authorization": f"Bearer {self.access_token}"}, + cookies={"access-token": token} if token is not None else None, + client=self.queue_client, + ) + return response + + async def process_events(self, events: List[Event], batch: bool) -> None: + awake_events: List[Event] = [] + try: + for event in events: + client_awake = await self.gather_event_data(event) + if client_awake: + client_awake = await self.send_message( + event, {"msg": "process_starts"} + ) + if client_awake: + awake_events.append(event) + if not awake_events: + return + begin_time = time.time() + response = await self.call_prediction(awake_events, batch) + if response.has_exception: + for event in awake_events: + await self.send_message( + event, + { + "msg": "process_completed", + "output": {"error": str(response.exception)}, + "success": False, + }, + ) + elif response.json.get("is_generating", False): + old_response = response + while response.json.get("is_generating", False): + # Python 3.7 doesn't have named tasks. + # In order to determine if a task was cancelled, we + # ping the websocket to see if it was closed mid-iteration. + if sys.version_info < (3, 8): + is_alive = await self.send_message(event, {"msg": "alive?"}) + if not is_alive: + return + old_response = response + open_ws = [] + for event in awake_events: + open = await self.send_message( + event, + { + "msg": "process_generating", + "output": old_response.json, + "success": old_response.status == 200, + }, + ) + open_ws.append(open) + awake_events = [ + e for e, is_open in zip(awake_events, open_ws) if is_open + ] + if not awake_events: + return + response = await self.call_prediction(awake_events, batch) + for event in awake_events: + if response.status != 200: + relevant_response = response + else: + relevant_response = old_response + + await self.send_message( + event, + { + "msg": "process_completed", + "output": relevant_response.json, + "success": relevant_response.status == 200, + }, + ) + else: + output = copy.deepcopy(response.json) + for e, event in enumerate(awake_events): + if batch and "data" in output: + output["data"] = list(zip(*response.json.get("data")))[e] + await self.send_message( + event, + { + "msg": "process_completed", + "output": output, + "success": response.status == 200, + }, + ) + end_time = time.time() + if response.status == 200: + self.update_estimation(end_time - begin_time) + finally: + for event in awake_events: + try: + await event.disconnect() + except Exception: + pass + self.active_jobs[self.active_jobs.index(events)] = None + for event in awake_events: + await self.clean_event(event) + # Always reset the state of the iterator + # If the job finished successfully, this has no effect + # If the job is cancelled, this will enable future runs + # to start "from scratch" + await self.reset_iterators(event.session_hash, event.fn_index) + + async def send_message(self, event, data: Dict, timeout: float | int = 1) -> bool: + try: + await asyncio.wait_for( + event.websocket.send_json(data=data), timeout=timeout + ) + return True + except: + await self.clean_event(event) + return False + + async def get_message(self, event, timeout=5) -> Tuple[PredictBody | None, bool]: + try: + data = await asyncio.wait_for( + event.websocket.receive_json(), timeout=timeout + ) + return PredictBody(**data), True + except AsyncTimeOutError: + await self.clean_event(event) + return None, False + + async def reset_iterators(self, session_hash: str, fn_index: int): + await AsyncRequest( + method=AsyncRequest.Method.POST, + url=f"{self.server_path}reset", + json={ + "session_hash": session_hash, + "fn_index": fn_index, + }, + client=self.queue_client, + ) diff --git a/gradio/ranged_response.py b/gradio/ranged_response.py new file mode 100644 index 0000000000000000000000000000000000000000..a84f888564a1896dee8254fa340f3768da803f72 --- /dev/null +++ b/gradio/ranged_response.py @@ -0,0 +1,183 @@ +# Taken from https://gist.github.com/kevinastone/a6a62db57577b3f24e8a6865ed311463 +# Context: https://github.com/encode/starlette/pull/1090 +from __future__ import annotations + +import os +import re +import stat +from typing import Dict, NamedTuple +from urllib.parse import quote + +import aiofiles +from aiofiles.os import stat as aio_stat +from starlette.datastructures import Headers +from starlette.exceptions import HTTPException +from starlette.responses import Response, guess_type +from starlette.staticfiles import StaticFiles +from starlette.types import Receive, Scope, Send + +RANGE_REGEX = re.compile(r"^bytes=(?P\d+)-(?P\d*)$") + + +class ClosedRange(NamedTuple): + start: int + end: int + + def __len__(self) -> int: + return self.end - self.start + 1 + + def __bool__(self) -> bool: + return len(self) > 0 + + +class OpenRange(NamedTuple): + start: int + end: int | None = None + + def clamp(self, start: int, end: int) -> ClosedRange: + begin = max(self.start, start) + end = min((x for x in (self.end, end) if x)) + + begin = min(begin, end) + end = max(begin, end) + + return ClosedRange(begin, end) + + +class RangedFileResponse(Response): + chunk_size = 4096 + + def __init__( + self, + path: str | os.PathLike, + range: OpenRange, + headers: Dict[str, str] | None = None, + media_type: str | None = None, + filename: str | None = None, + stat_result: os.stat_result | None = None, + method: str | None = None, + ) -> None: + assert aiofiles is not None, "'aiofiles' must be installed to use FileResponse" + self.path = path + self.range = range + self.filename = filename + self.background = None + self.send_header_only = method is not None and method.upper() == "HEAD" + if media_type is None: + media_type = guess_type(filename or path)[0] or "text/plain" + self.media_type = media_type + self.init_headers(headers or {}) + if self.filename is not None: + content_disposition_filename = quote(self.filename) + if content_disposition_filename != self.filename: + content_disposition = ( + f"attachment; filename*=utf-8''{content_disposition_filename}" + ) + else: + content_disposition = f'attachment; filename="{self.filename}"' + self.headers.setdefault("content-disposition", content_disposition) + self.stat_result = stat_result + + def set_range_headers(self, range: ClosedRange) -> None: + assert self.stat_result + total_length = self.stat_result.st_size + content_length = len(range) + self.headers[ + "content-range" + ] = f"bytes {range.start}-{range.end}/{total_length}" + self.headers["content-length"] = str(content_length) + pass + + async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: + if self.stat_result is None: + try: + stat_result = await aio_stat(self.path) + self.stat_result = stat_result + except FileNotFoundError: + raise RuntimeError(f"File at path {self.path} does not exist.") + else: + mode = stat_result.st_mode + if not stat.S_ISREG(mode): + raise RuntimeError(f"File at path {self.path} is not a file.") + + byte_range = self.range.clamp(0, self.stat_result.st_size) + self.set_range_headers(byte_range) + + async with aiofiles.open(self.path, mode="rb") as file: + await file.seek(byte_range.start) + await send( + { + "type": "http.response.start", + "status": 206, + "headers": self.raw_headers, + } + ) + if self.send_header_only: + await send( + {"type": "http.response.body", "body": b"", "more_body": False} + ) + else: + remaining_bytes = len(byte_range) + + if not byte_range: + await send( + {"type": "http.response.body", "body": b"", "more_body": False} + ) + return + + while remaining_bytes > 0: + chunk_size = min(self.chunk_size, remaining_bytes) + chunk = await file.read(chunk_size) + remaining_bytes -= len(chunk) + await send( + { + "type": "http.response.body", + "body": chunk, + "more_body": remaining_bytes > 0, + } + ) + + +class RangedStaticFiles(StaticFiles): + def file_response( + self, + full_path: str | os.PathLike, + stat_result: os.stat_result, + scope: Scope, + status_code: int = 200, + ) -> Response: + request_headers = Headers(scope=scope) + + if request_headers.get("range"): + response = self.ranged_file_response( + full_path, stat_result=stat_result, scope=scope + ) + else: + response = super().file_response( + full_path, stat_result=stat_result, scope=scope, status_code=status_code + ) + response.headers["accept-ranges"] = "bytes" + return response + + def ranged_file_response( + self, + full_path: str | os.PathLike, + stat_result: os.stat_result, + scope: Scope, + ) -> Response: + method = scope["method"] + request_headers = Headers(scope=scope) + + range_header = request_headers["range"] + + match = RANGE_REGEX.search(range_header) + if not match: + raise HTTPException(400) + + start, end = match.group("start"), match.group("end") + + range = OpenRange(int(start), int(end) if end else None) + + return RangedFileResponse( + full_path, range, stat_result=stat_result, method=method + ) diff --git a/gradio/reload.py b/gradio/reload.py new file mode 100644 index 0000000000000000000000000000000000000000..adbb3ce9b9e1d1118283aa7e258ddb33879b500c --- /dev/null +++ b/gradio/reload.py @@ -0,0 +1,59 @@ +""" + +Contains the functions that run when `gradio` is called from the command line. Specifically, allows + +$ gradio app.py, to run app.py in reload mode where any changes in the app.py file or Gradio library reloads the demo. +$ gradio app.py my_demo, to use variable names other than "demo" +""" +import inspect +import os +import sys +from pathlib import Path + +import gradio +from gradio import networking, utils + + +def run_in_reload_mode(): + args = sys.argv[1:] + if len(args) == 0: + raise ValueError("No file specified.") + if len(args) == 1: + demo_name = "demo" + else: + demo_name = args[1] + + original_path = args[0] + abs_original_path = utils.abspath(original_path) + path = os.path.normpath(original_path) + path = path.replace("/", ".") + path = path.replace("\\", ".") + filename = os.path.splitext(path)[0] + + gradio_folder = Path(inspect.getfile(gradio)).parent + + port = networking.get_first_available_port( + networking.INITIAL_PORT_VALUE, + networking.INITIAL_PORT_VALUE + networking.TRY_NUM_PORTS, + ) + print( + f"\nLaunching in *reload mode* on: http://{networking.LOCALHOST_NAME}:{port} (Press CTRL+C to quit)\n" + ) + command = f"uvicorn {filename}:{demo_name}.app --reload --port {port} --log-level warning " + message = "Watching:" + + message_change_count = 0 + if str(gradio_folder).strip(): + command += f'--reload-dir "{gradio_folder}" ' + message += f" '{gradio_folder}'" + message_change_count += 1 + + abs_parent = abs_original_path.parent + if str(abs_parent).strip(): + command += f'--reload-dir "{abs_parent}"' + if message_change_count == 1: + message += "," + message += f" '{abs_parent}'" + + print(message + "\n") + os.system(command) diff --git a/gradio/routes.py b/gradio/routes.py new file mode 100644 index 0000000000000000000000000000000000000000..044b62445e2296df303779bb38e34a1bf032e523 --- /dev/null +++ b/gradio/routes.py @@ -0,0 +1,771 @@ +"""Implements a FastAPI server to run the gradio interface. Note that some types in this +module use the Optional/Union notation so that they work correctly with pydantic.""" + +from __future__ import annotations + +import asyncio +import inspect +import json +import mimetypes +import os +import posixpath +import secrets +import tempfile +import traceback +from asyncio import TimeoutError as AsyncTimeOutError +from collections import defaultdict +from copy import deepcopy +from typing import Any, Dict, List, Optional, Type +from urllib.parse import urlparse + +import fastapi +import httpx +import markupsafe +import orjson +import pkg_resources +from fastapi import Depends, FastAPI, File, HTTPException, UploadFile, WebSocket, status +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import ( + FileResponse, + HTMLResponse, + JSONResponse, + PlainTextResponse, +) +from fastapi.security import OAuth2PasswordRequestForm +from fastapi.templating import Jinja2Templates +from jinja2.exceptions import TemplateNotFound +from starlette.background import BackgroundTask +from starlette.responses import RedirectResponse, StreamingResponse +from starlette.websockets import WebSocketState + +import gradio +import gradio.ranged_response as ranged_response +from gradio import utils +from gradio.context import Context +from gradio.data_classes import PredictBody, ResetBody +from gradio.documentation import document, set_documentation_group +from gradio.exceptions import Error +from gradio.helpers import EventData +from gradio.processing_utils import TempFileManager +from gradio.queueing import Estimation, Event +from gradio.utils import cancel_tasks, run_coro_in_background, set_task_name + +mimetypes.init() + +STATIC_TEMPLATE_LIB = pkg_resources.resource_filename("gradio", "templates/") +STATIC_PATH_LIB = pkg_resources.resource_filename("gradio", "templates/frontend/static") +BUILD_PATH_LIB = pkg_resources.resource_filename("gradio", "templates/frontend/assets") +VERSION_FILE = pkg_resources.resource_filename("gradio", "version.txt") +with open(VERSION_FILE) as version_file: + VERSION = version_file.read() + + +class ORJSONResponse(JSONResponse): + media_type = "application/json" + + @staticmethod + def _render(content: Any) -> bytes: + return orjson.dumps( + content, + option=orjson.OPT_SERIALIZE_NUMPY | orjson.OPT_PASSTHROUGH_DATETIME, + default=str, + ) + + def render(self, content: Any) -> bytes: + return ORJSONResponse._render(content) + + @staticmethod + def _render_str(content: Any) -> str: + return ORJSONResponse._render(content).decode("utf-8") + + +def toorjson(value): + return markupsafe.Markup( + ORJSONResponse._render_str(value) + .replace("<", "\\u003c") + .replace(">", "\\u003e") + .replace("&", "\\u0026") + .replace("'", "\\u0027") + ) + + +templates = Jinja2Templates(directory=STATIC_TEMPLATE_LIB) +templates.env.filters["toorjson"] = toorjson + +client = httpx.AsyncClient() + +########### +# Auth +########### + + +class App(FastAPI): + """ + FastAPI App Wrapper + """ + + def __init__(self, **kwargs): + self.tokens = {} + self.auth = None + self.blocks: gradio.Blocks | None = None + self.state_holder = {} + self.iterators = defaultdict(dict) + self.lock = asyncio.Lock() + self.queue_token = secrets.token_urlsafe(32) + self.startup_events_triggered = False + self.uploaded_file_dir = str(utils.abspath(tempfile.mkdtemp())) + super().__init__(**kwargs) + + def configure_app(self, blocks: gradio.Blocks) -> None: + auth = blocks.auth + if auth is not None: + if not callable(auth): + self.auth = {account[0]: account[1] for account in auth} + else: + self.auth = auth + else: + self.auth = None + + self.blocks = blocks + if hasattr(self.blocks, "_queue"): + self.blocks._queue.set_access_token(self.queue_token) + self.cwd = os.getcwd() + self.favicon_path = blocks.favicon_path + self.tokens = {} + + def get_blocks(self) -> gradio.Blocks: + if self.blocks is None: + raise ValueError("No Blocks has been configured for this app.") + return self.blocks + + @staticmethod + def create_app(blocks: gradio.Blocks) -> App: + app = App(default_response_class=ORJSONResponse) + app.configure_app(blocks) + + app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"], + ) + + @app.get("/user") + @app.get("/user/") + def get_current_user(request: fastapi.Request) -> Optional[str]: + token = request.cookies.get("access-token") or request.cookies.get( + "access-token-unsecure" + ) + return app.tokens.get(token) + + @app.get("/login_check") + @app.get("/login_check/") + def login_check(user: str = Depends(get_current_user)): + if app.auth is None or not (user is None): + return + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated" + ) + + async def ws_login_check(websocket: WebSocket) -> Optional[str]: + token = websocket.cookies.get("access-token") + return token # token is returned to allow request in queue + + @app.get("/token") + @app.get("/token/") + def get_token(request: fastapi.Request) -> dict: + token = request.cookies.get("access-token") + return {"token": token, "user": app.tokens.get(token)} + + @app.get("/app_id") + @app.get("/app_id/") + def app_id(request: fastapi.Request) -> dict: + return {"app_id": app.get_blocks().app_id} + + @app.post("/login") + @app.post("/login/") + def login(form_data: OAuth2PasswordRequestForm = Depends()): + username, password = form_data.username, form_data.password + if app.auth is None: + return RedirectResponse(url="/", status_code=status.HTTP_302_FOUND) + if ( + not callable(app.auth) + and username in app.auth + and app.auth[username] == password + ) or (callable(app.auth) and app.auth.__call__(username, password)): + token = secrets.token_urlsafe(16) + app.tokens[token] = username + response = JSONResponse(content={"success": True}) + response.set_cookie( + key="access-token", + value=token, + httponly=True, + samesite="none", + secure=True, + ) + response.set_cookie( + key="access-token-unsecure", value=token, httponly=True + ) + return response + else: + raise HTTPException(status_code=400, detail="Incorrect credentials.") + + ############### + # Main Routes + ############### + + @app.head("/", response_class=HTMLResponse) + @app.get("/", response_class=HTMLResponse) + def main(request: fastapi.Request, user: str = Depends(get_current_user)): + mimetypes.add_type("application/javascript", ".js") + blocks = app.get_blocks() + + if app.auth is None or not (user is None): + config = app.get_blocks().config + else: + config = { + "auth_required": True, + "auth_message": blocks.auth_message, + "is_space": app.get_blocks().is_space, + "root": app.get_blocks().root, + } + + try: + template = ( + "frontend/share.html" if blocks.share else "frontend/index.html" + ) + return templates.TemplateResponse( + template, + {"request": request, "config": config}, + ) + except TemplateNotFound: + if blocks.share: + raise ValueError( + "Did you install Gradio from source files? Share mode only " + "works when Gradio is installed through the pip package." + ) + else: + raise ValueError( + "Did you install Gradio from source files? You need to build " + "the frontend by running /scripts/build_frontend.sh" + ) + + @app.get("/config/", dependencies=[Depends(login_check)]) + @app.get("/config", dependencies=[Depends(login_check)]) + def get_config(): + return app.get_blocks().config + + @app.get("/static/{path:path}") + def static_resource(path: str): + static_file = safe_join(STATIC_PATH_LIB, path) + if static_file is not None: + return FileResponse(static_file) + raise HTTPException(status_code=404, detail="Static file not found") + + @app.get("/assets/{path:path}") + def build_resource(path: str): + build_file = safe_join(BUILD_PATH_LIB, path) + if build_file is not None: + return FileResponse(build_file) + raise HTTPException(status_code=404, detail="Build file not found") + + @app.get("/favicon.ico") + async def favicon(): + blocks = app.get_blocks() + if blocks.favicon_path is None: + return static_resource("img/logo.svg") + else: + return FileResponse(blocks.favicon_path) + + @app.head("/proxy={url_path:path}", dependencies=[Depends(login_check)]) + @app.get("/proxy={url_path:path}", dependencies=[Depends(login_check)]) + async def reverse_proxy(url_path: str): + # Adapted from: https://github.com/tiangolo/fastapi/issues/1788 + url = httpx.URL(url_path) + headers = {} + if Context.access_token is not None: + headers["Authorization"] = f"Bearer {Context.access_token}" + rp_req = client.build_request("GET", url, headers=headers) + rp_resp = await client.send(rp_req, stream=True) + return StreamingResponse( + rp_resp.aiter_raw(), + status_code=rp_resp.status_code, + headers=rp_resp.headers, # type: ignore + background=BackgroundTask(rp_resp.aclose), + ) + + @app.head("/file={path_or_url:path}", dependencies=[Depends(login_check)]) + @app.get("/file={path_or_url:path}", dependencies=[Depends(login_check)]) + async def file(path_or_url: str, request: fastapi.Request): + blocks = app.get_blocks() + if utils.validate_url(path_or_url): + return RedirectResponse( + url=path_or_url, status_code=status.HTTP_302_FOUND + ) + abs_path = str(utils.abspath(path_or_url)) + in_app_dir = utils.abspath(app.cwd) in utils.abspath(path_or_url).parents + created_by_app = abs_path in set().union(*blocks.temp_file_sets) + in_file_dir = any( + ( + utils.abspath(dir) in utils.abspath(path_or_url).parents + for dir in blocks.file_directories + ) + ) + was_uploaded = ( + utils.abspath(app.uploaded_file_dir) + in utils.abspath(path_or_url).parents + ) + + if in_app_dir or created_by_app or in_file_dir or was_uploaded: + range_val = request.headers.get("Range", "").strip() + if range_val.startswith("bytes=") and "-" in range_val: + range_val = range_val[6:] + start, end = range_val.split("-") + if start.isnumeric() and end.isnumeric(): + start = int(start) + end = int(end) + response = ranged_response.RangedFileResponse( + abs_path, + ranged_response.OpenRange(start, end), + dict(request.headers), + stat_result=os.stat(abs_path), + ) + return response + return FileResponse(abs_path, headers={"Accept-Ranges": "bytes"}) + + else: + raise ValueError( + f"File cannot be fetched: {path_or_url}. All files must contained within the Gradio python app working directory, or be a temp file created by the Gradio python app." + ) + + @app.get("/file/{path:path}", dependencies=[Depends(login_check)]) + async def file_deprecated(path: str, request: fastapi.Request): + return await file(path, request) + + @app.post("/reset/") + @app.post("/reset") + async def reset_iterator(body: ResetBody): + if body.session_hash not in app.iterators: + return {"success": False} + async with app.lock: + app.iterators[body.session_hash][body.fn_index] = None + app.iterators[body.session_hash]["should_reset"].add(body.fn_index) + return {"success": True} + + async def run_predict( + body: PredictBody, + request: Request | List[Request], + fn_index_inferred: int, + ): + if hasattr(body, "session_hash"): + if body.session_hash not in app.state_holder: + app.state_holder[body.session_hash] = { + _id: deepcopy(getattr(block, "value", None)) + for _id, block in app.get_blocks().blocks.items() + if getattr(block, "stateful", False) + } + session_state = app.state_holder[body.session_hash] + iterators = app.iterators[body.session_hash] + # The should_reset set keeps track of the fn_indices + # that have been cancelled. When a job is cancelled, + # the /reset route will mark the jobs as having been reset. + # That way if the cancel job finishes BEFORE the job being cancelled + # the job being cancelled will not overwrite the state of the iterator. + # In all cases, should_reset will be the empty set the next time + # the fn_index is run. + app.iterators[body.session_hash]["should_reset"] = set([]) + else: + session_state = {} + iterators = {} + event_id = getattr(body, "event_id", None) + raw_input = body.data + fn_index = body.fn_index + + dependency = app.get_blocks().dependencies[fn_index_inferred] + target = dependency["targets"][0] if len(dependency["targets"]) else None + event_data = EventData( + app.get_blocks().blocks[target] if target else None, + body.event_data, + ) + batch = dependency["batch"] + if not (body.batched) and batch: + raw_input = [raw_input] + try: + output = await app.get_blocks().process_api( + fn_index=fn_index_inferred, + inputs=raw_input, + request=request, + state=session_state, + iterators=iterators, + event_id=event_id, + event_data=event_data, + ) + iterator = output.pop("iterator", None) + if hasattr(body, "session_hash"): + if fn_index in app.iterators[body.session_hash]["should_reset"]: + app.iterators[body.session_hash][fn_index] = None + else: + app.iterators[body.session_hash][fn_index] = iterator + if isinstance(output, Error): + raise output + except BaseException as error: + show_error = app.get_blocks().show_error or isinstance(error, Error) + traceback.print_exc() + return JSONResponse( + content={"error": str(error) if show_error else None}, + status_code=500, + ) + + if not (body.batched) and batch: + output["data"] = output["data"][0] + return output + + # had to use '/run' endpoint for Colab compatibility, '/api' supported for backwards compatibility + @app.post("/run/{api_name}", dependencies=[Depends(login_check)]) + @app.post("/run/{api_name}/", dependencies=[Depends(login_check)]) + @app.post("/api/{api_name}", dependencies=[Depends(login_check)]) + @app.post("/api/{api_name}/", dependencies=[Depends(login_check)]) + async def predict( + api_name: str, + body: PredictBody, + request: fastapi.Request, + username: str = Depends(get_current_user), + ): + fn_index_inferred = None + if body.fn_index is None: + for i, fn in enumerate(app.get_blocks().dependencies): + if fn["api_name"] == api_name: + fn_index_inferred = i + break + if fn_index_inferred is None: + return JSONResponse( + content={ + "error": f"This app has no endpoint /api/{api_name}/." + }, + status_code=500, + ) + else: + fn_index_inferred = body.fn_index + if not app.get_blocks().api_open and app.get_blocks().queue_enabled_for_fn( + fn_index_inferred + ): + if f"Bearer {app.queue_token}" != request.headers.get("Authorization"): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Not authorized to skip the queue", + ) + + # If this fn_index cancels jobs, then the only input we need is the + # current session hash + if app.get_blocks().dependencies[fn_index_inferred]["cancels"]: + body.data = [body.session_hash] + if body.request: + if body.batched: + gr_request = [ + Request(username=username, **req) for req in body.request + ] + else: + assert isinstance(body.request, dict) + gr_request = Request(username=username, **body.request) + else: + gr_request = Request(username=username, request=request) + result = await run_predict( + body=body, + fn_index_inferred=fn_index_inferred, + request=gr_request, + ) + return result + + @app.websocket("/queue/join") + async def join_queue( + websocket: WebSocket, + token: Optional[str] = Depends(ws_login_check), + ): + blocks = app.get_blocks() + if app.auth is not None and token is None: + await websocket.close(code=status.WS_1008_POLICY_VIOLATION) + return + if blocks._queue.server_path is None: + app_url = get_server_url_from_ws_url(str(websocket.url)) + blocks._queue.set_url(app_url) + await websocket.accept() + # In order to cancel jobs, we need the session_hash and fn_index + # to create a unique id for each job + try: + await asyncio.wait_for( + websocket.send_json({"msg": "send_hash"}), timeout=1 + ) + except AsyncTimeOutError: + return + + try: + session_info = await asyncio.wait_for( + websocket.receive_json(), timeout=1 + ) + except AsyncTimeOutError: + return + + event = Event( + websocket, session_info["session_hash"], session_info["fn_index"] + ) + # set the token into Event to allow using the same token for call_prediction + event.token = token + event.session_hash = session_info["session_hash"] + + # Continuous events are not put in the queue so that they do not + # occupy the queue's resource as they are expected to run forever + if blocks.dependencies[event.fn_index].get("every", 0): + await cancel_tasks(set([f"{event.session_hash}_{event.fn_index}"])) + await blocks._queue.reset_iterators(event.session_hash, event.fn_index) + task = run_coro_in_background( + blocks._queue.process_events, [event], False + ) + set_task_name(task, event.session_hash, event.fn_index, batch=False) + else: + rank = blocks._queue.push(event) + + if rank is None: + await blocks._queue.send_message(event, {"msg": "queue_full"}) + await event.disconnect() + return + estimation = blocks._queue.get_estimation() + await blocks._queue.send_estimation(event, estimation, rank) + while True: + await asyncio.sleep(1) + if websocket.application_state == WebSocketState.DISCONNECTED: + return + + @app.get( + "/queue/status", + dependencies=[Depends(login_check)], + response_model=Estimation, + ) + async def get_queue_status(): + return app.get_blocks()._queue.get_estimation() + + @app.post("/upload", dependencies=[Depends(login_check)]) + async def upload_file( + files: List[UploadFile] = File(...), + ): + output_files = [] + file_manager = TempFileManager() + for input_file in files: + output_files.append( + await file_manager.save_uploaded_file( + input_file, app.uploaded_file_dir + ) + ) + return output_files + + @app.on_event("startup") + @app.get("/startup-events") + async def startup_events(): + if not app.startup_events_triggered: + app.get_blocks().startup_events() + app.startup_events_triggered = True + return True + return False + + @app.get("/theme.css", response_class=PlainTextResponse) + def theme_css(): + return PlainTextResponse(app.get_blocks().theme_css, media_type="text/css") + + @app.get("/robots.txt", response_class=PlainTextResponse) + def robots_txt(): + if app.get_blocks().share: + return "User-agent: *\nDisallow: /" + else: + return "User-agent: *\nDisallow: " + + return app + + +######## +# Helper functions +######## + + +def safe_join(directory: str, path: str) -> str | None: + """Safely path to a base directory to avoid escaping the base directory. + Borrowed from: werkzeug.security.safe_join""" + _os_alt_seps: List[str] = list( + sep for sep in [os.path.sep, os.path.altsep] if sep is not None and sep != "/" + ) + + if path != "": + filename = posixpath.normpath(path) + else: + return directory + + if ( + any(sep in filename for sep in _os_alt_seps) + or os.path.isabs(filename) + or filename == ".." + or filename.startswith("../") + ): + return None + return posixpath.join(directory, filename) + + +def get_types(cls_set: List[Type]): + docset = [] + types = [] + for cls in cls_set: + doc = inspect.getdoc(cls) or "" + doc_lines = doc.split("\n") + for line in doc_lines: + if "value (" in line: + types.append(line.split("value (")[1].split(")")[0]) + docset.append(doc_lines[1].split(":")[-1]) + return docset, types + + +def get_server_url_from_ws_url(ws_url: str): + ws_url_parsed = urlparse(ws_url) + scheme = "http" if ws_url_parsed.scheme == "ws" else "https" + port = f":{ws_url_parsed.port}" if ws_url_parsed.port else "" + return f"{scheme}://{ws_url_parsed.hostname}{port}{ws_url_parsed.path.replace('queue/join', '')}" + + +set_documentation_group("routes") + + +class Obj: + """ + Using a class to convert dictionaries into objects. Used by the `Request` class. + Credit: https://www.geeksforgeeks.org/convert-nested-python-dictionary-to-object/ + """ + + def __init__(self, dict_): + self.__dict__.update(dict_) + for key, value in dict_.items(): + if isinstance(value, (dict, list)): + value = Obj(value) + setattr(self, key, value) + + def __getitem__(self, item): + return self.__dict__[item] + + def __setitem__(self, item, value): + self.__dict__[item] = value + + def __iter__(self): + for key, value in self.__dict__.items(): + if isinstance(value, Obj): + yield (key, dict(value)) + else: + yield (key, value) + + def __contains__(self, item) -> bool: + if item in self.__dict__: + return True + for value in self.__dict__.values(): + if isinstance(value, Obj) and item in value: + return True + return False + + def keys(self): + return self.__dict__.keys() + + def values(self): + return self.__dict__.values() + + def items(self): + return self.__dict__.items() + + def __str__(self) -> str: + return str(self.__dict__) + + def __repr__(self) -> str: + return str(self.__dict__) + + +@document() +class Request: + """ + A Gradio request object that can be used to access the request headers, cookies, + query parameters and other information about the request from within the prediction + function. The class is a thin wrapper around the fastapi.Request class. Attributes + of this class include: `headers`, `client`, `query_params`, and `path_params`. If + auth is enabled, the `username` attribute can be used to get the logged in user. + Example: + import gradio as gr + def echo(name, request: gr.Request): + print("Request headers dictionary:", request.headers) + print("IP address:", request.client.host) + return name + io = gr.Interface(echo, "textbox", "textbox").launch() + """ + + def __init__( + self, + request: fastapi.Request | None = None, + username: str | None = None, + **kwargs, + ): + """ + Can be instantiated with either a fastapi.Request or by manually passing in + attributes (needed for websocket-based queueing). + Parameters: + request: A fastapi.Request + """ + self.request = request + self.username = username + self.kwargs: Dict = kwargs + + def dict_to_obj(self, d): + if isinstance(d, dict): + return json.loads(json.dumps(d), object_hook=Obj) + else: + return d + + def __getattr__(self, name): + if self.request: + return self.dict_to_obj(getattr(self.request, name)) + else: + try: + obj = self.kwargs[name] + except KeyError: + raise AttributeError(f"'Request' object has no attribute '{name}'") + return self.dict_to_obj(obj) + + +@document() +def mount_gradio_app( + app: fastapi.FastAPI, + blocks: gradio.Blocks, + path: str, + gradio_api_url: str | None = None, +) -> fastapi.FastAPI: + """Mount a gradio.Blocks to an existing FastAPI application. + + Parameters: + app: The parent FastAPI application. + blocks: The blocks object we want to mount to the parent app. + path: The path at which the gradio application will be mounted. + gradio_api_url: The full url at which the gradio app will run. This is only needed if deploying to Huggingface spaces of if the websocket endpoints of your deployed app are on a different network location than the gradio app. If deploying to spaces, set gradio_api_url to 'http://localhost:7860/' + Example: + from fastapi import FastAPI + import gradio as gr + app = FastAPI() + @app.get("/") + def read_main(): + return {"message": "This is your main app"} + io = gr.Interface(lambda x: "Hello, " + x + "!", "textbox", "textbox") + app = gr.mount_gradio_app(app, io, path="/gradio") + # Then run `uvicorn run:app` from the terminal and navigate to http://localhost:8000/gradio. + """ + blocks.dev_mode = False + blocks.root = path[:-1] if path.endswith("/") else path + blocks.config = blocks.get_config_file() + gradio_app = App.create_app(blocks) + + @app.on_event("startup") + async def start_queue(): + if gradio_app.get_blocks().enable_queue: + if gradio_api_url: + gradio_app.get_blocks()._queue.set_url(gradio_api_url) + gradio_app.get_blocks().startup_events() + + app.mount(path, gradio_app) + return app diff --git a/gradio/serializing.py b/gradio/serializing.py new file mode 100644 index 0000000000000000000000000000000000000000..6780ef7d289a06673bcb0b87aae935f06d08ce39 --- /dev/null +++ b/gradio/serializing.py @@ -0,0 +1,196 @@ +from __future__ import annotations + +from abc import ABC, abstractmethod +from pathlib import Path +from typing import Any, Dict + +from gradio import processing_utils, utils +from gradio.context import Context + + +class Serializable(ABC): + @abstractmethod + def serialize(self, x: Any, load_dir: str | Path = ""): + """ + Convert data from human-readable format to serialized format for a browser. + """ + pass + + @abstractmethod + def deserialize( + self, + x: Any, + save_dir: str | Path | None = None, + root_url: str | None = None, + ): + """ + Convert data from serialized format for a browser to human-readable format. + """ + pass + + +class SimpleSerializable(Serializable): + def serialize(self, x: Any, load_dir: str | Path = "") -> Any: + """ + Convert data from human-readable format to serialized format. For SimpleSerializable components, this is a no-op. + Parameters: + x: Input data to serialize + load_dir: Ignored + """ + return x + + def deserialize( + self, + x: Any, + save_dir: str | Path | None = None, + root_url: str | None = None, + ): + """ + Convert data from serialized format to human-readable format. For SimpleSerializable components, this is a no-op. + Parameters: + x: Input data to deserialize + save_dir: Ignored + root_url: Ignored + """ + return x + + +class ImgSerializable(Serializable): + def serialize( + self, + x: str | None, + load_dir: str | Path = "", + ) -> str | None: + """ + Convert from human-friendly version of a file (string filepath) to a seralized + representation (base64). + Parameters: + x: String path to file to serialize + load_dir: Path to directory containing x + """ + if x is None or x == "": + return None + is_url = utils.validate_url(x) + path = x if is_url else Path(load_dir) / x + return processing_utils.encode_url_or_file_to_base64(path) + + def deserialize( + self, + x: str | None, + save_dir: str | Path | None = None, + root_url: str | None = None, + ) -> str | None: + """ + Convert from serialized representation of a file (base64) to a human-friendly + version (string filepath). Optionally, save the file to the directory specified by save_dir + Parameters: + x: Base64 representation of image to deserialize into a string filepath + save_dir: Path to directory to save the deserialized image to + root_url: Ignored + """ + if x is None or x == "": + return None + file = processing_utils.decode_base64_to_file(x, dir=save_dir) + return file.name + + +class FileSerializable(Serializable): + def serialize( + self, + x: str | None, + load_dir: str | Path = "", + ) -> Dict | None: + """ + Convert from human-friendly version of a file (string filepath) to a + seralized representation (base64) + Parameters: + x: String path to file to serialize + load_dir: Path to directory containing x + """ + if x is None or x == "": + return None + filename = str(Path(load_dir) / x) + return { + "name": filename, + "data": processing_utils.encode_url_or_file_to_base64(filename), + "orig_name": Path(filename).name, + "is_file": False, + } + + def deserialize( + self, + x: str | Dict | None, + save_dir: Path | str | None = None, + root_url: str | None = None, + ) -> str | None: + """ + Convert from serialized representation of a file (base64) to a human-friendly + version (string filepath). Optionally, save the file to the directory specified by `save_dir` + Parameters: + x: Base64 representation of file to deserialize into a string filepath + save_dir: Path to directory to save the deserialized file to + root_url: If this component is loaded from an external Space, this is the URL of the Space + """ + if x is None: + return None + if isinstance(save_dir, Path): + save_dir = str(save_dir) + if isinstance(x, str): + file_name = processing_utils.decode_base64_to_file(x, dir=save_dir).name + elif isinstance(x, dict): + if x.get("is_file", False): + if root_url is not None: + file_name = processing_utils.download_tmp_copy_of_file( + root_url + "file=" + x["name"], + access_token=Context.access_token, + dir=save_dir, + ).name + else: + file_name = processing_utils.create_tmp_copy_of_file( + x["name"], dir=save_dir + ).name + else: + file_name = processing_utils.decode_base64_to_file( + x["data"], dir=save_dir + ).name + else: + raise ValueError( + f"A FileSerializable component cannot only deserialize a string or a dict, not a: {type(x)}" + ) + return file_name + + +class JSONSerializable(Serializable): + def serialize( + self, + x: str | None, + load_dir: str | Path = "", + ) -> Dict | None: + """ + Convert from a a human-friendly version (string path to json file) to a + serialized representation (json string) + Parameters: + x: String path to json file to read to get json string + load_dir: Path to directory containing x + """ + if x is None or x == "": + return None + return processing_utils.file_to_json(Path(load_dir) / x) + + def deserialize( + self, + x: str | Dict, + save_dir: str | Path | None = None, + root_url: str | None = None, + ) -> str | None: + """ + Convert from serialized representation (json string) to a human-friendly + version (string path to json file). Optionally, save the file to the directory specified by `save_dir` + Parameters: + x: Json string + save_dir: Path to save the deserialized json file to + root_url: Ignored + """ + if x is None: + return None + return processing_utils.dict_or_str_to_json_file(x, dir=save_dir).name diff --git a/gradio/strings.py b/gradio/strings.py new file mode 100644 index 0000000000000000000000000000000000000000..0c81ddb74ea2857cbd0bc373dd33042d072b88fc --- /dev/null +++ b/gradio/strings.py @@ -0,0 +1,48 @@ +import json +import threading +from typing import Dict + +import requests + +MESSAGING_API_ENDPOINT = "https://api.gradio.app/gradio-messaging/en" + +en = { + "RUNNING_LOCALLY": "Running on local URL: {}", + "RUNNING_LOCALLY_SEPARATED": "Running on local URL: {}://{}:{}", + "SHARE_LINK_DISPLAY": "Running on public URL: {}", + "COULD_NOT_GET_SHARE_LINK": "\nCould not create share link. Please check your internet connection or our status page: https://status.gradio.app", + "COLAB_NO_LOCAL": "Cannot display local interface on google colab, public link created.", + "PUBLIC_SHARE_TRUE": "\nTo create a public link, set `share=True` in `launch()`.", + "MODEL_PUBLICLY_AVAILABLE_URL": "Model available publicly at: {} (may take up to a minute for link to be usable)", + "GENERATING_PUBLIC_LINK": "Generating public link (may take a few seconds...):", + "BETA_INVITE": "\nThanks for being a Gradio user! If you have questions or feedback, please join our Discord server and chat with us: https://discord.gg/feTf9x3ZSB", + "COLAB_DEBUG_TRUE": "Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. " + "To turn off, set debug=False in launch().", + "COLAB_DEBUG_FALSE": "Colab notebook detected. To show errors in colab notebook, set debug=True in launch()", + "COLAB_WARNING": "Note: opening Chrome Inspector may crash demo inside Colab notebooks.", + "SHARE_LINK_MESSAGE": "\nThis share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces", + "INLINE_DISPLAY_BELOW": "Interface loading below...", + "TIPS": [ + "You can add authentication to your app with the `auth=` kwarg in the `launch()` command; for example: `gr.Interface(...).launch(auth=('username', 'password'))`", + "Let users specify why they flagged input with the `flagging_options=` kwarg; for example: `gr.Interface(..., flagging_options=['too slow', 'incorrect output', 'other'])`", + "You can show or hide the button for flagging with the `allow_flagging=` kwarg; for example: gr.Interface(..., allow_flagging=False)", + "The inputs and outputs flagged by the users are stored in the flagging directory, specified by the flagging_dir= kwarg. You can view this data through the interface by setting the examples= kwarg to the flagging directory; for example gr.Interface(..., examples='flagged')", + "You can add a title and description to your interface using the `title=` and `description=` kwargs. The `article=` kwarg can be used to add a description under the interface; for example gr.Interface(..., title='My app', description='Lorem ipsum'). Try using Markdown!", + "For a classification or regression model, set `interpretation='default'` to see why the model made a prediction.", + ], +} + + +def get_updated_messaging(en: Dict): + try: + updated_messaging = requests.get(MESSAGING_API_ENDPOINT, timeout=3).json() + en.update(updated_messaging) + except ( + requests.ConnectionError, + requests.exceptions.ReadTimeout, + json.decoder.JSONDecodeError, + ): # Use default messaging + pass + + +threading.Thread(target=get_updated_messaging, args=(en,)).start() diff --git a/gradio/templates.py b/gradio/templates.py new file mode 100644 index 0000000000000000000000000000000000000000..561a07d38de21f362ea8871549ad8a80926dc375 --- /dev/null +++ b/gradio/templates.py @@ -0,0 +1,563 @@ +from __future__ import annotations + +import typing +from typing import Any, Callable, Tuple + +import numpy as np +from PIL.Image import Image + +from gradio import components + + +class TextArea(components.Textbox): + """ + Sets: lines=7 + """ + + is_template = True + + def __init__( + self, + value: str | Callable | None = "", + *, + lines: int = 7, + max_lines: int = 20, + placeholder: str | None = None, + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + super().__init__( + value=value, + lines=lines, + max_lines=max_lines, + placeholder=placeholder, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + **kwargs, + ) + + +class Webcam(components.Image): + """ + Sets: source="webcam", interactive=True + """ + + is_template = True + + def __init__( + self, + value: str | Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] | None = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "webcam", + tool: str | None = None, + type: str = "numpy", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = True, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + mirror_webcam: bool = True, + **kwargs, + ): + super().__init__( + value=value, + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + **kwargs, + ) + + +class Sketchpad(components.Image): + """ + Sets: image_mode="L", source="canvas", shape=(28, 28), invert_colors=True, interactive=True + """ + + is_template = True + + def __init__( + self, + value: str | Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] = (28, 28), + image_mode: str = "L", + invert_colors: bool = True, + source: str = "canvas", + tool: str | None = None, + type: str = "numpy", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = True, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + mirror_webcam: bool = True, + **kwargs, + ): + super().__init__( + value=value, + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + **kwargs, + ) + + +class Paint(components.Image): + """ + Sets: source="canvas", tool="color-sketch", interactive=True + """ + + is_template = True + + def __init__( + self, + value: str | Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] | None = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "canvas", + tool: str = "color-sketch", + type: str = "numpy", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = True, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + mirror_webcam: bool = True, + **kwargs, + ): + super().__init__( + value=value, + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + **kwargs, + ) + + +class ImageMask(components.Image): + """ + Sets: source="upload", tool="sketch", interactive=True + """ + + is_template = True + + def __init__( + self, + value: str | Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] | None = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "upload", + tool: str = "sketch", + type: str = "numpy", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = True, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + mirror_webcam: bool = True, + **kwargs, + ): + super().__init__( + value=value, + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + **kwargs, + ) + + +class ImagePaint(components.Image): + """ + Sets: source="upload", tool="color-sketch", interactive=True + """ + + is_template = True + + def __init__( + self, + value: str | Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] | None = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "upload", + tool: str = "color-sketch", + type: str = "numpy", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = True, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + mirror_webcam: bool = True, + **kwargs, + ): + super().__init__( + value=value, + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + **kwargs, + ) + + +class Pil(components.Image): + """ + Sets: type="pil" + """ + + is_template = True + + def __init__( + self, + value: str | Image | np.ndarray | None = None, + *, + shape: Tuple[int, int] | None = None, + image_mode: str = "RGB", + invert_colors: bool = False, + source: str = "upload", + tool: str | None = None, + type: str = "pil", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + mirror_webcam: bool = True, + **kwargs, + ): + super().__init__( + value=value, + shape=shape, + image_mode=image_mode, + invert_colors=invert_colors, + source=source, + tool=tool, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + **kwargs, + ) + + +class PlayableVideo(components.Video): + """ + Sets: format="mp4" + """ + + is_template = True + + def __init__( + self, + value: str | Callable | None = None, + *, + format: str | None = "mp4", + source: str = "upload", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + mirror_webcam: bool = True, + include_audio: bool | None = None, + **kwargs, + ): + super().__init__( + value=value, + format=format, + source=source, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + mirror_webcam=mirror_webcam, + include_audio=include_audio, + **kwargs, + ) + + +class Microphone(components.Audio): + """ + Sets: source="microphone" + """ + + is_template = True + + def __init__( + self, + value: str | Tuple[int, np.ndarray] | Callable | None = None, + *, + source: str = "microphone", + type: str = "numpy", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + streaming: bool = False, + elem_id: str | None = None, + **kwargs, + ): + super().__init__( + value=value, + source=source, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + streaming=streaming, + elem_id=elem_id, + **kwargs, + ) + + +class Files(components.File): + """ + Sets: file_count="multiple" + """ + + is_template = True + + def __init__( + self, + value: str | typing.List[str] | Callable | None = None, + *, + file_count: str = "multiple", + type: str = "file", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + **kwargs, + ): + super().__init__( + value=value, + file_count=file_count, + type=type, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + **kwargs, + ) + + +class Numpy(components.Dataframe): + """ + Sets: type="numpy" + """ + + is_template = True + + def __init__( + self, + value: typing.List[typing.List[Any]] | Callable | None = None, + *, + headers: typing.List[str] | None = None, + row_count: int | Tuple[int, str] = (1, "dynamic"), + col_count: int | Tuple[int, str] | None = None, + datatype: str | typing.List[str] = "str", + type: str = "numpy", + max_rows: int | None = 20, + max_cols: int | None = None, + overflow_row_behaviour: str = "paginate", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + wrap: bool = False, + **kwargs, + ): + super().__init__( + value=value, + headers=headers, + row_count=row_count, + col_count=col_count, + datatype=datatype, + type=type, + max_rows=max_rows, + max_cols=max_cols, + overflow_row_behaviour=overflow_row_behaviour, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + wrap=wrap, + **kwargs, + ) + + +class Matrix(components.Dataframe): + """ + Sets: type="array" + """ + + is_template = True + + def __init__( + self, + value: typing.List[typing.List[Any]] | Callable | None = None, + *, + headers: typing.List[str] | None = None, + row_count: int | Tuple[int, str] = (1, "dynamic"), + col_count: int | Tuple[int, str] | None = None, + datatype: str | typing.List[str] = "str", + type: str = "array", + max_rows: int | None = 20, + max_cols: int | None = None, + overflow_row_behaviour: str = "paginate", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + wrap: bool = False, + **kwargs, + ): + super().__init__( + value=value, + headers=headers, + row_count=row_count, + col_count=col_count, + datatype=datatype, + type=type, + max_rows=max_rows, + max_cols=max_cols, + overflow_row_behaviour=overflow_row_behaviour, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + wrap=wrap, + **kwargs, + ) + + +class List(components.Dataframe): + """ + Sets: type="array", col_count=1 + """ + + is_template = True + + def __init__( + self, + value: typing.List[typing.List[Any]] | Callable | None = None, + *, + headers: typing.List[str] | None = None, + row_count: int | Tuple[int, str] = (1, "dynamic"), + col_count: int | Tuple[int, str] = 1, + datatype: str | typing.List[str] = "str", + type: str = "array", + max_rows: int | None = 20, + max_cols: int | None = None, + overflow_row_behaviour: str = "paginate", + label: str | None = None, + show_label: bool = True, + interactive: bool | None = None, + visible: bool = True, + elem_id: str | None = None, + wrap: bool = False, + **kwargs, + ): + super().__init__( + value=value, + headers=headers, + row_count=row_count, + col_count=col_count, + datatype=datatype, + type=type, + max_rows=max_rows, + max_cols=max_cols, + overflow_row_behaviour=overflow_row_behaviour, + label=label, + show_label=show_label, + interactive=interactive, + visible=visible, + elem_id=elem_id, + wrap=wrap, + **kwargs, + ) + + +Mic = Microphone diff --git a/gradio/templates/cdn/assets/BlockLabel.fd555cfa.js b/gradio/templates/cdn/assets/BlockLabel.fd555cfa.js new file mode 100644 index 0000000000000000000000000000000000000000..9d2f5597cc3258a8c9c46a8a474897b8c5a190de --- /dev/null +++ b/gradio/templates/cdn/assets/BlockLabel.fd555cfa.js @@ -0,0 +1,2 @@ +import{S as b,i as g,s as h,F as m,c as d,G as w,H as y,B as u,O as r,f as I,D as _,m as B,J as j,o as S,t as k,p as q,l as C}from"./index.7a68216a.js";import{g as D}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";function F(l){let e,a,n,c,f,i;return n=new l[1]({}),{c(){e=m("div"),a=m("span"),d(n.$$.fragment),c=w(),f=y(l[0]),u(a,"class","svelte-1frtwj3"),u(e,"style",l[4]),u(e,"class","svelte-1frtwj3"),r(e,"hide",!l[2]),r(e,"sr-only",!l[2]),r(e,"float",l[3])},m(t,s){I(t,e,s),_(e,a),B(n,a,null),_(e,c),_(e,f),i=!0},p(t,[s]){(!i||s&1)&&j(f,t[0]),(!i||s&16)&&u(e,"style",t[4]),s&4&&r(e,"hide",!t[2]),s&4&&r(e,"sr-only",!t[2]),s&8&&r(e,"float",t[3])},i(t){i||(S(n.$$.fragment,t),i=!0)},o(t){k(n.$$.fragment,t),i=!1},d(t){t&&q(e),C(n)}}}function G(l,e,a){let n,{label:c=null}=e,{Icon:f}=e,{show_label:i=!0}=e,{disable:t=!1}=e,{float:s=!0}=e;return l.$$set=o=>{"label"in o&&a(0,c=o.label),"Icon"in o&&a(1,f=o.Icon),"show_label"in o&&a(2,i=o.show_label),"disable"in o&&a(5,t=o.disable),"float"in o&&a(3,s=o.float)},l.$$.update=()=>{l.$$.dirty&32&&a(4,{styles:n}=D({label_container:!t},["label_container"]),n)},[c,f,i,s,n,t]}class L extends b{constructor(e){super(),g(this,e,G,F,h,{label:0,Icon:1,show_label:2,disable:5,float:3})}}export{L as B}; +//# sourceMappingURL=BlockLabel.fd555cfa.js.map diff --git a/gradio/templates/cdn/assets/BlockLabel.fd555cfa.js.map b/gradio/templates/cdn/assets/BlockLabel.fd555cfa.js.map new file mode 100644 index 0000000000000000000000000000000000000000..3657c9a98e9e9e7ab3a29a4dace3e4121b4cee09 --- /dev/null +++ b/gradio/templates/cdn/assets/BlockLabel.fd555cfa.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BlockLabel.fd555cfa.js","sources":["../../../../ui/packages/atoms/src/BlockLabel.svelte"],"sourcesContent":["\n\n\n\t\n\t\t\n\t\n\n\t{label}\n\n\n\n"],"names":[],"mappings":"yUAwBE,gDANM,gDAHM,qBACG,gCAFjB,SAMC,+DAIC,8BANM,uBAHM,0BACG,4IAbL,QAAuB,SACvB,WACA,aAAsB,OACtB,UAAmB,OACnB,QAAiB,uNAEtB,UAAW,GAAa,iBAAkB,IAC/C,iBAAF"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/BlockTitle.39fa370e.js b/gradio/templates/cdn/assets/BlockTitle.39fa370e.js new file mode 100644 index 0000000000000000000000000000000000000000..aba837f7721191bdc30056513f0d8bcbb28dfc50 --- /dev/null +++ b/gradio/templates/cdn/assets/BlockTitle.39fa370e.js @@ -0,0 +1,2 @@ +import{S as d,i as h,s as k,W as g,c as w,m as $,o as r,t as m,l as B,F as I,G as S,e as j,B as q,O as _,f as c,X as C,Y as F,Z as G,k as H,n as J,p,H as N,J as O}from"./index.7a68216a.js";import{I as T}from"./Info.4b69e77f.js";import"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";function b(o){let e,n;return e=new T({props:{$$slots:{default:[W]},$$scope:{ctx:o}}}),{c(){w(e.$$.fragment)},m(l,f){$(e,l,f),n=!0},p(l,f){const u={};f&10&&(u.$$scope={dirty:f,ctx:l}),e.$set(u)},i(l){n||(r(e.$$.fragment,l),n=!0)},o(l){m(e.$$.fragment,l),n=!1},d(l){B(e,l)}}}function W(o){let e;return{c(){e=N(o[1])},m(n,l){c(n,e,l)},p(n,l){l&2&&O(e,n[1])},d(n){n&&p(e)}}}function X(o){let e,n,l,f;const u=o[2].default,a=g(u,o,o[3],null);let s=o[1]&&b(o);return{c(){e=I("span"),a&&a.c(),n=S(),s&&s.c(),l=j(),q(e,"class","svelte-1gfkn6j"),_(e,"sr-only",!o[0]),_(e,"hide",!o[0]),_(e,"has-info",o[1]!=null)},m(t,i){c(t,e,i),a&&a.m(e,null),c(t,n,i),s&&s.m(t,i),c(t,l,i),f=!0},p(t,[i]){a&&a.p&&(!f||i&8)&&C(a,u,t,t[3],f?G(u,t[3],i,null):F(t[3]),null),i&1&&_(e,"sr-only",!t[0]),i&1&&_(e,"hide",!t[0]),i&2&&_(e,"has-info",t[1]!=null),t[1]?s?(s.p(t,i),i&2&&r(s,1)):(s=b(t),s.c(),r(s,1),s.m(l.parentNode,l)):s&&(H(),m(s,1,1,()=>{s=null}),J())},i(t){f||(r(a,t),r(s),f=!0)},o(t){m(a,t),m(s),f=!1},d(t){t&&p(e),a&&a.d(t),t&&p(n),s&&s.d(t),t&&p(l)}}}function Y(o,e,n){let{$$slots:l={},$$scope:f}=e,{show_label:u=!0}=e,{info:a=void 0}=e;return o.$$set=s=>{"show_label"in s&&n(0,u=s.show_label),"info"in s&&n(1,a=s.info),"$$scope"in s&&n(3,f=s.$$scope)},[u,a,l,f]}class A extends d{constructor(e){super(),h(this,e,Y,X,k,{show_label:0,info:1})}}export{A as B}; +//# sourceMappingURL=BlockTitle.39fa370e.js.map diff --git a/gradio/templates/cdn/assets/BlockTitle.39fa370e.js.map b/gradio/templates/cdn/assets/BlockTitle.39fa370e.js.map new file mode 100644 index 0000000000000000000000000000000000000000..76a56d2a5ea9a6b31e20dd6f6b966a373cd82831 --- /dev/null +++ b/gradio/templates/cdn/assets/BlockTitle.39fa370e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BlockTitle.39fa370e.js","sources":["../../../../ui/packages/atoms/src/BlockTitle.svelte"],"sourcesContent":["\n\n\n\t\n\n{#if info}\n\t{info}\n{/if}\n\n\n"],"names":[],"mappings":"klBAcQ,wCAAA,8FADH,6GANY,kBACH,qBACG,MAAQ,IAAI,UAH7B,0JACiB,uBACH,0BACG,MAAQ,IAAI,EAIxB,mQAXO,aAAsB,OACtB,OAA2B"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Blocks.15437627.css b/gradio/templates/cdn/assets/Blocks.15437627.css new file mode 100644 index 0000000000000000000000000000000000000000..ab575d8fe732de741b21bb174b517b7f95a83e79 --- /dev/null +++ b/gradio/templates/cdn/assets/Blocks.15437627.css @@ -0,0 +1 @@ +.wrap.svelte-1i3r921.svelte-1i3r921{padding:var(--size-6)}.attention.svelte-1i3r921.svelte-1i3r921{font-weight:var(--weight-bold);font-size:var(--text-lg)}.attention.svelte-1i3r921 code.svelte-1i3r921{border:none;background:none;color:var(--color-accent);font-weight:var(--weight-bold)}button.svelte-1i3r921.svelte-1i3r921{position:absolute;top:var(--size-5);right:var(--size-6);width:var(--size-4);color:var(--body-text-color)}button.svelte-1i3r921.svelte-1i3r921:hover{color:var(--color-accent)}@media (min-width: 768px){button.svelte-1i3r921.svelte-1i3r921{top:var(--size-6)}}h2.svelte-155na5k.svelte-155na5k{display:flex;color:var(--body-text-color);font-weight:var(--weight-semibold)}h2.svelte-155na5k img.svelte-155na5k{margin-right:var(--size-2);width:var(--size-4)}span.svelte-155na5k.svelte-155na5k{color:var(--color-accent)}button.svelte-155na5k.svelte-155na5k{position:absolute;top:var(--size-5);right:var(--size-6);width:var(--size-4);color:var(--body-text-color)}button.svelte-155na5k.svelte-155na5k:hover{color:var(--color-accent)}@media (min-width: 768px){button.svelte-155na5k.svelte-155na5k{top:var(--size-6)}h2.svelte-155na5k img.svelte-155na5k{width:var(--size-5)}}h3.svelte-vs3f38{color:var(--body-text-color);font-weight:var(--section-header-text-weight);font-size:var(--text-lg)}.post.svelte-vs3f38{margin-right:var(--size-2);border:1px solid var(--border-color-accent);border-radius:var(--radius-sm);background:var(--color-accent-soft);padding-right:var(--size-1);padding-left:var(--size-1);color:var(--color-accent);font-weight:var(--weight-semibold)}.endpoint.svelte-vs3f38{margin-bottom:var(--size-6);color:var(--body-text-color)}.url.svelte-vs3f38{display:inline-block;border:none;background:none;padding:var(--size-0-5);font-family:var(--font-mono)}.payload-details.svelte-j5il63{font-family:var(--font-mono)}.space.svelte-j5il63{display:flex;flex-basis:1;margin-top:var(--size-4)}h4.svelte-j5il63{display:flex;align-items:center;margin-top:var(--size-6);margin-bottom:var(--size-3);color:var(--body-text-color);font-weight:var(--weight-bold)}.toggle-icon.svelte-j5il63{display:flex;align-items:center;margin-right:var(--size-2);border-radius:var(--radius-full);background:var(--color-grey-300);width:12px;height:4px}.toggle-dot.svelte-j5il63{border-radius:var(--radius-full);background:var(--color-grey-700);width:6px;height:6px}.dark .toggle-icon.svelte-j5il63{background:var(--color-grey-500)}.dark .toggle-dot.svelte-j5il63{background:var(--color-grey-400)}input[type=text].svelte-j5il63{--ring-color:transparent;margin:var(--size-1) 0;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--radius-lg);background:var(--input-background-fill);padding:var(--size-1-5);color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-j5il63:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}.error.svelte-j5il63{color:var(--error-text-color)}.type.svelte-j5il63{color:var(--block-label-text-color)}.desc.svelte-j5il63{color:var(--body-text-color-subdued)}.name.svelte-j5il63{text-transform:capitalize}.first-level.svelte-j5il63{margin-left:1rem}.second-level.svelte-j5il63{margin-left:2rem}.load-wrap.svelte-fxtbel{display:flex;justify-content:center;align-items:center}h4.svelte-fxtbel{display:flex;align-items:center;margin-top:var(--size-6);margin-bottom:var(--size-3);color:var(--body-text-color);font-weight:var(--weight-bold)}.toggle-icon.svelte-fxtbel{display:flex;align-items:center;margin-right:var(--size-2);border-radius:var(--radius-full);background:var(--color-grey-300);width:12px;height:4px}.toggle-dot.svelte-fxtbel{margin-left:auto;border-radius:var(--radius-full);background:var(--color-grey-700);width:6px;height:6px}.response-wrap.svelte-fxtbel{font-family:var(--font-mono)}input[type=text].svelte-fxtbel{--ring-color:transparent;margin:var(--size-1) 0;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--radius-lg);background:var(--input-background-fill);padding:var(--size-1-5);color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-fxtbel:focus{box-shadow:var(--input-shadow);border-color:var(--input-border-color-focus)}.type.svelte-fxtbel{color:var(--block-label-text-color)}.desc.svelte-fxtbel{color:var(--body-text-color-subdued)}.name.svelte-fxtbel{text-transform:capitalize}.hide.svelte-fxtbel{display:none}.first-level.svelte-fxtbel{margin-left:1rem}.second-level.svelte-fxtbel{margin-left:2rem}h4.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:flex;align-items:center;margin-top:var(--size-8);margin-bottom:var(--size-3);color:var(--body-text-color);font-weight:var(--weight-bold)}h4.svelte-dks0o4 svg.svelte-dks0o4.svelte-dks0o4{margin-right:var(--size-1-5)}.snippets.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:flex;align-items:center;margin-bottom:var(--size-3)}.snippets.svelte-dks0o4>.svelte-dks0o4+.svelte-dks0o4{margin-left:var(--size-2)}.snippet.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:flex;align-items:center;border:1px solid var(--border-color-primary);border-radius:var(--radius-md);padding:var(--size-1) var(--size-1-5);color:var(--body-text-color-subdued);color:var(--body-text-color);line-height:1;user-select:none;text-transform:capitalize}.current-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{border:1px solid var(--body-text-color-subdued);color:var(--body-text-color)}.inactive-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{cursor:pointer;color:var(--body-text-color-subdued)}.inactive-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4:hover,.inactive-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4:focus{box-shadow:var(--shadow-drop);color:var(--body-text-color)}.snippet.svelte-dks0o4 img.svelte-dks0o4.svelte-dks0o4{margin-right:var(--size-1-5);width:var(--size-3)}code.svelte-dks0o4 pre.svelte-dks0o4.svelte-dks0o4{overflow-x:auto;color:var(--body-text-color);font-family:var(--font-mono);tab-size:2}.client.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{white-space:pre-wrap;overflow-wrap:break-word}.token.string.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:contents;color:var(--color-accent-base)}code.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{position:relative}.copy.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{position:absolute;top:0;right:0;margin:1rem}.banner-wrap.svelte-1kj0q1l{position:relative;border-bottom:1px solid var(--border-color-primary);padding:var(--size-4) var(--size-6);font-size:var(--text-md)}@media (min-width: 768px){.banner-wrap.svelte-1kj0q1l{font-size:var(--text-xl)}}.docs-wrap.svelte-1kj0q1l{display:flex;flex-direction:column;gap:var(--spacing-xxl)}.endpoint.svelte-1kj0q1l{border-radius:var(--radius-md);background:var(--background-fill-primary);padding:var(--size-6);font-size:var(--text-md)}.wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;flex-grow:1;flex-direction:column;width:var(--size-full);font-weight:var(--body-text-weight);font-size:var(--body-text-size)}footer.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;justify-content:center;margin-top:var(--size-4);color:var(--body-text-color-subdued)}footer.svelte-1lyswbr>.svelte-1lyswbr+.svelte-1lyswbr{margin-left:var(--size-2)}.show-api.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;align-items:center}.show-api.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr:hover{color:var(--body-text-color)}.show-api.svelte-1lyswbr img.svelte-1lyswbr.svelte-1lyswbr{margin-right:var(--size-1);margin-left:var(--size-2);width:var(--size-3)}.built-with.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;align-items:center}.built-with.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr:hover{color:var(--body-text-color)}.built-with.svelte-1lyswbr img.svelte-1lyswbr.svelte-1lyswbr{margin-right:var(--size-1);margin-left:var(--size-2);width:var(--size-3)}.api-docs.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;position:fixed;top:0;right:0;z-index:var(--layer-5);background:rgba(0,0,0,.5);width:var(--size-screen);height:var(--size-screen-h)}.backdrop.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{flex:1 1 0%;backdrop-filter:blur(4px)}.api-docs-wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{box-shadow:var(--shadow-drop-lg);background:var(--background-fill-primary);overflow-x:hidden;overflow-y:auto}@media (min-width: 768px){.api-docs-wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg);width:950px}}@media (min-width: 1536px){.api-docs-wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{width:1150px}} diff --git a/gradio/templates/cdn/assets/Blocks.1c8a32b7.js b/gradio/templates/cdn/assets/Blocks.1c8a32b7.js new file mode 100644 index 0000000000000000000000000000000000000000..866c05bc8e42a6b6241a6c42cfa50e9ab1345c3e --- /dev/null +++ b/gradio/templates/cdn/assets/Blocks.1c8a32b7.js @@ -0,0 +1,76 @@ +const VERSION_RE = new RegExp("3.23.0/", "g");function import_fix(mod, base) {const url = new URL(mod, base); return import(`https://gradio.s3-us-west-2.amazonaws.com/3.23.0/${url.pathname?.startsWith('/') ? url.pathname.substring(1).replace(VERSION_RE, "") : url.pathname.replace(VERSION_RE, "")}`);}import{d as be,w as rt,_ as j,S as K,i as $,s as ee,b as we,a as mt,c as V,e as ne,m as z,f as I,g as fo,h as co,j as _o,k as oe,t as D,l as X,n as ae,o as x,p as S,q as it,r as on,u as po,v as mo,x as je,y as ho,z as go,A as xe,B as E,C as ie,D as h,E as re,F as w,G as L,H as P,I as _e,J as B,K as Pe,L as vo,M as De,N as ye,O as ht,P as bo,Q as yo,R as Eo,T as So,U as To,V as wo}from"./index.7a68216a.js";import{B as ot,a as at}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";var Io=function(t){return Ao(t)&&!Po(t)};function Ao(e){return!!e&&typeof e=="object"}function Po(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||ko(e)}var Co=typeof Symbol=="function"&&Symbol.for,Oo=Co?Symbol.for("react.element"):60103;function ko(e){return e.$$typeof===Oo}function xo(e){return Array.isArray(e)?[]:{}}function Ie(e,t){return t.clone!==!1&&t.isMergeableObject(e)?de(xo(e),e,t):e}function Lo(e,t,n){return e.concat(t).map(function(r){return Ie(r,n)})}function Ro(e,t){if(!t.customMerge)return de;var n=t.customMerge(e);return typeof n=="function"?n:de}function No(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function gt(e){return Object.keys(e).concat(No(e))}function an(e,t){try{return t in e}catch{return!1}}function jo(e,t){return an(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function Do(e,t,n){var r={};return n.isMergeableObject(e)&>(e).forEach(function(i){r[i]=Ie(e[i],n)}),gt(t).forEach(function(i){jo(e,i)||(an(e,i)&&n.isMergeableObject(t[i])?r[i]=Ro(i,n)(e[i],t[i],n):r[i]=Ie(t[i],n))}),r}function de(e,t,n){n=n||{},n.arrayMerge=n.arrayMerge||Lo,n.isMergeableObject=n.isMergeableObject||Io,n.cloneUnlessOtherwiseSpecified=Ie;var r=Array.isArray(t),i=Array.isArray(e),o=r===i;return o?r?n.arrayMerge(e,t,n):Do(e,t,n):Ie(t,n)}de.all=function(t,n){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(r,i){return de(r,i,n)},{})};var Mo=de,Fo=Mo;/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Je=function(e,t){return Je=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},Je(e,t)};function Fe(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Je(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var G=function(){return G=Object.assign||function(t){for(var n,r=1,i=arguments.length;r0}),n=[],r=0,i=t;r1)throw new RangeError("integer-width stems only accept a single optional option");i.options[0].replace(Ho,function(f,l,u,_,c,g){if(l)t.minimumIntegerDigits=u.length;else{if(_&&c)throw new Error("We currently do not support maximum integer digits");if(g)throw new Error("We currently do not support exact integer digits")}return""});continue}if(hn.test(i.stem)){t.minimumIntegerDigits=i.stem.length;continue}if(bt.test(i.stem)){if(i.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");i.stem.replace(bt,function(f,l,u,_,c,g){return u==="*"?t.minimumFractionDigits=l.length:_&&_[0]==="#"?t.maximumFractionDigits=_.length:c&&g?(t.minimumFractionDigits=c.length,t.maximumFractionDigits=c.length+g.length):(t.minimumFractionDigits=l.length,t.maximumFractionDigits=l.length),""});var o=i.options[0];o==="w"?t=G(G({},t),{trailingZeroDisplay:"stripIfInteger"}):o&&(t=G(G({},t),yt(o)));continue}if(mn.test(i.stem)){t=G(G({},t),yt(i.stem));continue}var s=gn(i.stem);s&&(t=G(G({},t),s));var a=Wo(i.stem);a&&(t=G(G({},t),a))}return t}var Be,Jo=new RegExp("^".concat(dn.source,"*")),Yo=new RegExp("".concat(dn.source,"*$"));function F(e,t){return{start:e,end:t}}var Qo=!!String.prototype.startsWith,Ko=!!String.fromCodePoint,$o=!!Object.fromEntries,ea=!!String.prototype.codePointAt,ta=!!String.prototype.trimStart,na=!!String.prototype.trimEnd,ra=!!Number.isSafeInteger,ia=ra?Number.isSafeInteger:function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},Qe=!0;try{var oa=bn("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");Qe=((Be=oa.exec("a"))===null||Be===void 0?void 0:Be[0])==="a"}catch{Qe=!1}var St=Qo?function(t,n,r){return t.startsWith(n,r)}:function(t,n,r){return t.slice(r,r+n.length)===n},Ke=Ko?String.fromCodePoint:function(){for(var t=[],n=0;no;){if(s=t[o++],s>1114111)throw RangeError(s+" is not a valid code point");r+=s<65536?String.fromCharCode(s):String.fromCharCode(((s-=65536)>>10)+55296,s%1024+56320)}return r},Tt=$o?Object.fromEntries:function(t){for(var n={},r=0,i=t;r=r)){var i=t.charCodeAt(n),o;return i<55296||i>56319||n+1===r||(o=t.charCodeAt(n+1))<56320||o>57343?i:(i-55296<<10)+(o-56320)+65536}},aa=ta?function(t){return t.trimStart()}:function(t){return t.replace(Jo,"")},la=na?function(t){return t.trimEnd()}:function(t){return t.replace(Yo,"")};function bn(e,t){return new RegExp(e,t)}var $e;if(Qe){var wt=bn("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");$e=function(t,n){var r;wt.lastIndex=n;var i=wt.exec(t);return(r=i[1])!==null&&r!==void 0?r:""}}else $e=function(t,n){for(var r=[];;){var i=vn(t,n);if(i===void 0||yn(i)||ca(i))break;r.push(i),n+=i>=65536?2:1}return Ke.apply(void 0,r)};var sa=function(){function e(t,n){n===void 0&&(n={}),this.message=t,this.position={offset:0,line:1,column:1},this.ignoreTag=!!n.ignoreTag,this.requiresOtherClause=!!n.requiresOtherClause,this.shouldParseSkeletons=!!n.shouldParseSkeletons}return e.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},e.prototype.parseMessage=function(t,n,r){for(var i=[];!this.isEOF();){var o=this.char();if(o===123){var s=this.parseArgument(t,r);if(s.err)return s;i.push(s.val)}else{if(o===125&&t>0)break;if(o===35&&(n==="plural"||n==="selectordinal")){var a=this.clonePosition();this.bump(),i.push({type:U.pound,location:F(a,this.clonePosition())})}else if(o===60&&!this.ignoreTag&&this.peek()===47){if(r)break;return this.error(M.UNMATCHED_CLOSING_TAG,F(this.clonePosition(),this.clonePosition()))}else if(o===60&&!this.ignoreTag&&et(this.peek()||0)){var s=this.parseTag(t,n);if(s.err)return s;i.push(s.val)}else{var s=this.parseLiteral(t,n);if(s.err)return s;i.push(s.val)}}}return{val:i,err:null}},e.prototype.parseTag=function(t,n){var r=this.clonePosition();this.bump();var i=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:U.literal,value:"<".concat(i,"/>"),location:F(r,this.clonePosition())},err:null};if(this.bumpIf(">")){var o=this.parseMessage(t+1,n,!0);if(o.err)return o;var s=o.val,a=this.clonePosition();if(this.bumpIf("")?{val:{type:U.tag,value:i,children:s,location:F(r,this.clonePosition())},err:null}:this.error(M.INVALID_TAG,F(a,this.clonePosition())))}else return this.error(M.UNCLOSED_TAG,F(r,this.clonePosition()))}else return this.error(M.INVALID_TAG,F(r,this.clonePosition()))},e.prototype.parseTagName=function(){var t=this.offset();for(this.bump();!this.isEOF()&&fa(this.char());)this.bump();return this.message.slice(t,this.offset())},e.prototype.parseLiteral=function(t,n){for(var r=this.clonePosition(),i="";;){var o=this.tryParseQuote(n);if(o){i+=o;continue}var s=this.tryParseUnquoted(t,n);if(s){i+=s;continue}var a=this.tryParseLeftAngleBracket();if(a){i+=a;continue}break}var f=F(r,this.clonePosition());return{val:{type:U.literal,value:i,location:f},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!ua(this.peek()||0))?(this.bump(),"<"):null},e.prototype.tryParseQuote=function(t){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(t==="plural"||t==="selectordinal")break;return null;default:return null}this.bump();var n=[this.char()];for(this.bump();!this.isEOF();){var r=this.char();if(r===39)if(this.peek()===39)n.push(39),this.bump();else{this.bump();break}else n.push(r);this.bump()}return Ke.apply(void 0,n)},e.prototype.tryParseUnquoted=function(t,n){if(this.isEOF())return null;var r=this.char();return r===60||r===123||r===35&&(n==="plural"||n==="selectordinal")||r===125&&t>0?null:(this.bump(),Ke(r))},e.prototype.parseArgument=function(t,n){var r=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(r,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(M.EMPTY_ARGUMENT,F(r,this.clonePosition()));var i=this.parseIdentifierIfPossible().value;if(!i)return this.error(M.MALFORMED_ARGUMENT,F(r,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(r,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:U.argument,value:i,location:F(r,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(r,this.clonePosition())):this.parseArgumentOptions(t,n,i,r);default:return this.error(M.MALFORMED_ARGUMENT,F(r,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var t=this.clonePosition(),n=this.offset(),r=$e(this.message,n),i=n+r.length;this.bumpTo(i);var o=this.clonePosition(),s=F(t,o);return{value:r,location:s}},e.prototype.parseArgumentOptions=function(t,n,r,i){var o,s=this.clonePosition(),a=this.parseIdentifierIfPossible().value,f=this.clonePosition();switch(a){case"":return this.error(M.EXPECT_ARGUMENT_TYPE,F(s,f));case"number":case"date":case"time":{this.bumpSpace();var l=null;if(this.bumpIf(",")){this.bumpSpace();var u=this.clonePosition(),_=this.parseSimpleArgStyleIfPossible();if(_.err)return _;var c=la(_.val);if(c.length===0)return this.error(M.EXPECT_ARGUMENT_STYLE,F(this.clonePosition(),this.clonePosition()));var g=F(u,this.clonePosition());l={style:c,styleLocation:g}}var p=this.tryParseArgumentClose(i);if(p.err)return p;var m=F(i,this.clonePosition());if(l&&St(l?.style,"::",0)){var d=aa(l.style.slice(2));if(a==="number"){var _=this.parseNumberSkeletonFromString(d,l.styleLocation);return _.err?_:{val:{type:U.number,value:r,location:m,style:_.val},err:null}}else{if(d.length===0)return this.error(M.EXPECT_DATE_TIME_SKELETON,m);var c={type:me.dateTime,pattern:d,location:l.styleLocation,parsedOptions:this.shouldParseSkeletons?zo(d):{}},C=a==="date"?U.date:U.time;return{val:{type:C,value:r,location:m,style:c},err:null}}}return{val:{type:a==="number"?U.number:a==="date"?U.date:U.time,value:r,location:m,style:(o=l?.style)!==null&&o!==void 0?o:null},err:null}}case"plural":case"selectordinal":case"select":{var T=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(M.EXPECT_SELECT_ARGUMENT_OPTIONS,F(T,G({},T)));this.bumpSpace();var y=this.parseIdentifierIfPossible(),b=0;if(a!=="select"&&y.value==="offset"){if(!this.bumpIf(":"))return this.error(M.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,F(this.clonePosition(),this.clonePosition()));this.bumpSpace();var _=this.tryParseDecimalInteger(M.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,M.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(_.err)return _;this.bumpSpace(),y=this.parseIdentifierIfPossible(),b=_.val}var A=this.tryParsePluralOrSelectOptions(t,a,n,y);if(A.err)return A;var p=this.tryParseArgumentClose(i);if(p.err)return p;var O=F(i,this.clonePosition());return a==="select"?{val:{type:U.select,value:r,options:Tt(A.val),location:O},err:null}:{val:{type:U.plural,value:r,options:Tt(A.val),offset:b,pluralType:a==="plural"?"cardinal":"ordinal",location:O},err:null}}default:return this.error(M.INVALID_ARGUMENT_TYPE,F(s,f))}},e.prototype.tryParseArgumentClose=function(t){return this.isEOF()||this.char()!==125?this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(t,this.clonePosition())):(this.bump(),{val:!0,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var t=0,n=this.clonePosition();!this.isEOF();){var r=this.char();switch(r){case 39:{this.bump();var i=this.clonePosition();if(!this.bumpUntil("'"))return this.error(M.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,F(i,this.clonePosition()));this.bump();break}case 123:{t+=1,this.bump();break}case 125:{if(t>0)t-=1;else return{val:this.message.slice(n.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(n.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(t,n){var r=[];try{r=Bo(t)}catch{return this.error(M.INVALID_NUMBER_SKELETON,n)}return{val:{type:me.number,tokens:r,location:n,parsedOptions:this.shouldParseSkeletons?Zo(r):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(t,n,r,i){for(var o,s=!1,a=[],f=new Set,l=i.value,u=i.location;;){if(l.length===0){var _=this.clonePosition();if(n!=="select"&&this.bumpIf("=")){var c=this.tryParseDecimalInteger(M.EXPECT_PLURAL_ARGUMENT_SELECTOR,M.INVALID_PLURAL_ARGUMENT_SELECTOR);if(c.err)return c;u=F(_,this.clonePosition()),l=this.message.slice(_.offset,this.offset())}else break}if(f.has(l))return this.error(n==="select"?M.DUPLICATE_SELECT_ARGUMENT_SELECTOR:M.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,u);l==="other"&&(s=!0),this.bumpSpace();var g=this.clonePosition();if(!this.bumpIf("{"))return this.error(n==="select"?M.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:M.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,F(this.clonePosition(),this.clonePosition()));var p=this.parseMessage(t+1,n,r);if(p.err)return p;var m=this.tryParseArgumentClose(g);if(m.err)return m;a.push([l,{value:p.val,location:F(g,this.clonePosition())}]),f.add(l),this.bumpSpace(),o=this.parseIdentifierIfPossible(),l=o.value,u=o.location}return a.length===0?this.error(n==="select"?M.EXPECT_SELECT_ARGUMENT_SELECTOR:M.EXPECT_PLURAL_ARGUMENT_SELECTOR,F(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!s?this.error(M.MISSING_OTHER_CLAUSE,F(this.clonePosition(),this.clonePosition())):{val:a,err:null}},e.prototype.tryParseDecimalInteger=function(t,n){var r=1,i=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(r=-1);for(var o=!1,s=0;!this.isEOF();){var a=this.char();if(a>=48&&a<=57)o=!0,s=s*10+(a-48),this.bump();else break}var f=F(i,this.clonePosition());return o?(s*=r,ia(s)?{val:s,err:null}:this.error(n,f)):this.error(t,f)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var t=this.position.offset;if(t>=this.message.length)throw Error("out of bound");var n=vn(this.message,t);if(n===void 0)throw Error("Offset ".concat(t," is at invalid UTF-16 code unit boundary"));return n},e.prototype.error=function(t,n){return{val:null,err:{kind:t,message:this.message,location:n}}},e.prototype.bump=function(){if(!this.isEOF()){var t=this.char();t===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=t<65536?1:2)}},e.prototype.bumpIf=function(t){if(St(this.message,t,this.offset())){for(var n=0;n=0?(this.bumpTo(r),!0):(this.bumpTo(this.message.length),!1)},e.prototype.bumpTo=function(t){if(this.offset()>t)throw Error("targetOffset ".concat(t," must be greater than or equal to the current offset ").concat(this.offset()));for(t=Math.min(t,this.message.length);;){var n=this.offset();if(n===t)break;if(n>t)throw Error("targetOffset ".concat(t," is at invalid UTF-16 code unit boundary"));if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&yn(this.char());)this.bump()},e.prototype.peek=function(){if(this.isEOF())return null;var t=this.char(),n=this.offset(),r=this.message.charCodeAt(n+(t>=65536?2:1));return r??null},e}();function et(e){return e>=97&&e<=122||e>=65&&e<=90}function ua(e){return et(e)||e===47}function fa(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function yn(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function ca(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e===8217||e===8218||e>=8219&&e<=8220||e===8221||e===8222||e===8223||e>=8224&&e<=8231||e>=8240&&e<=8248||e===8249||e===8250||e>=8251&&e<=8254||e>=8257&&e<=8259||e===8260||e===8261||e===8262||e>=8263&&e<=8273||e===8274||e===8275||e>=8277&&e<=8286||e>=8592&&e<=8596||e>=8597&&e<=8601||e>=8602&&e<=8603||e>=8604&&e<=8607||e===8608||e>=8609&&e<=8610||e===8611||e>=8612&&e<=8613||e===8614||e>=8615&&e<=8621||e===8622||e>=8623&&e<=8653||e>=8654&&e<=8655||e>=8656&&e<=8657||e===8658||e===8659||e===8660||e>=8661&&e<=8691||e>=8692&&e<=8959||e>=8960&&e<=8967||e===8968||e===8969||e===8970||e===8971||e>=8972&&e<=8991||e>=8992&&e<=8993||e>=8994&&e<=9e3||e===9001||e===9002||e>=9003&&e<=9083||e===9084||e>=9085&&e<=9114||e>=9115&&e<=9139||e>=9140&&e<=9179||e>=9180&&e<=9185||e>=9186&&e<=9254||e>=9255&&e<=9279||e>=9280&&e<=9290||e>=9291&&e<=9311||e>=9472&&e<=9654||e===9655||e>=9656&&e<=9664||e===9665||e>=9666&&e<=9719||e>=9720&&e<=9727||e>=9728&&e<=9838||e===9839||e>=9840&&e<=10087||e===10088||e===10089||e===10090||e===10091||e===10092||e===10093||e===10094||e===10095||e===10096||e===10097||e===10098||e===10099||e===10100||e===10101||e>=10132&&e<=10175||e>=10176&&e<=10180||e===10181||e===10182||e>=10183&&e<=10213||e===10214||e===10215||e===10216||e===10217||e===10218||e===10219||e===10220||e===10221||e===10222||e===10223||e>=10224&&e<=10239||e>=10240&&e<=10495||e>=10496&&e<=10626||e===10627||e===10628||e===10629||e===10630||e===10631||e===10632||e===10633||e===10634||e===10635||e===10636||e===10637||e===10638||e===10639||e===10640||e===10641||e===10642||e===10643||e===10644||e===10645||e===10646||e===10647||e===10648||e>=10649&&e<=10711||e===10712||e===10713||e===10714||e===10715||e>=10716&&e<=10747||e===10748||e===10749||e>=10750&&e<=11007||e>=11008&&e<=11055||e>=11056&&e<=11076||e>=11077&&e<=11078||e>=11079&&e<=11084||e>=11085&&e<=11123||e>=11124&&e<=11125||e>=11126&&e<=11157||e===11158||e>=11159&&e<=11263||e>=11776&&e<=11777||e===11778||e===11779||e===11780||e===11781||e>=11782&&e<=11784||e===11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}function tt(e){e.forEach(function(t){if(delete t.location,fn(t)||cn(t))for(var n in t.options)delete t.options[n].location,tt(t.options[n].value);else ln(t)&&pn(t.style)||(sn(t)||un(t))&&Ye(t.style)?delete t.style.location:_n(t)&&tt(t.children)})}function _a(e,t){t===void 0&&(t={}),t=G({shouldParseSkeletons:!0,requiresOtherClause:!0},t);var n=new sa(e,t).parse();if(n.err){var r=SyntaxError(M[n.err.kind]);throw r.location=n.err.location,r.originalMessage=n.err.message,r}return t?.captureLocation||tt(n.val),n.val}function qe(e,t){var n=t&&t.cache?t.cache:va,r=t&&t.serializer?t.serializer:ga,i=t&&t.strategy?t.strategy:da;return i(e,{cache:n,serializer:r})}function pa(e){return e==null||typeof e=="number"||typeof e=="boolean"}function En(e,t,n,r){var i=pa(r)?r:n(r),o=t.get(i);return typeof o>"u"&&(o=e.call(this,r),t.set(i,o)),o}function Sn(e,t,n){var r=Array.prototype.slice.call(arguments,3),i=n(r),o=t.get(i);return typeof o>"u"&&(o=e.apply(this,r),t.set(i,o)),o}function lt(e,t,n,r,i){return n.bind(t,e,r,i)}function da(e,t){var n=e.length===1?En:Sn;return lt(e,this,n,t.cache.create(),t.serializer)}function ma(e,t){return lt(e,this,Sn,t.cache.create(),t.serializer)}function ha(e,t){return lt(e,this,En,t.cache.create(),t.serializer)}var ga=function(){return JSON.stringify(arguments)};function st(){this.cache=Object.create(null)}st.prototype.get=function(e){return this.cache[e]};st.prototype.set=function(e,t){this.cache[e]=t};var va={create:function(){return new st}},He={variadic:ma,monadic:ha},he;(function(e){e.MISSING_VALUE="MISSING_VALUE",e.INVALID_VALUE="INVALID_VALUE",e.MISSING_INTL_API="MISSING_INTL_API"})(he||(he={}));var Ge=function(e){Fe(t,e);function t(n,r,i){var o=e.call(this,n)||this;return o.code=r,o.originalMessage=i,o}return t.prototype.toString=function(){return"[formatjs Error: ".concat(this.code,"] ").concat(this.message)},t}(Error),It=function(e){Fe(t,e);function t(n,r,i,o){return e.call(this,'Invalid values for "'.concat(n,'": "').concat(r,'". Options are "').concat(Object.keys(i).join('", "'),'"'),he.INVALID_VALUE,o)||this}return t}(Ge),ba=function(e){Fe(t,e);function t(n,r,i){return e.call(this,'Value for "'.concat(n,'" must be of type ').concat(r),he.INVALID_VALUE,i)||this}return t}(Ge),ya=function(e){Fe(t,e);function t(n,r){return e.call(this,'The intl string context variable "'.concat(n,'" was not provided to the string "').concat(r,'"'),he.MISSING_VALUE,r)||this}return t}(Ge),Z;(function(e){e[e.literal=0]="literal",e[e.object=1]="object"})(Z||(Z={}));function Ea(e){return e.length<2?e:e.reduce(function(t,n){var r=t[t.length-1];return!r||r.type!==Z.literal||n.type!==Z.literal?t.push(n):r.value+=n.value,t},[])}function Sa(e){return typeof e=="function"}function Le(e,t,n,r,i,o,s){if(e.length===1&&vt(e[0]))return[{type:Z.literal,value:e[0].value}];for(var a=[],f=0,l=e;fn&&(t in fe||(fe[t]={}),e in fe[t]||(fe[t][e]=n),n),Tn=(e,t)=>{if(t==null)return;if(t in fe&&e in fe[t])return fe[t][e];const n=Oe(t);for(let r=0;r0){const a=i.slice(s,i.length).join(".");if(a in o){o=o[a];break}}o=o[i[s]]}else o=void 0;return o}(function(n){return ut[n]||null}(e),t):null}function In(e,...t){delete fe[e],Ce.update(n=>(n[e]=Fo.all([n[e]||{},...t]),n))}be([Ce],([e])=>Object.keys(e));Ce.subscribe(e=>ut=e);const Re={};function An(e){return Re[e]}function Me(e){return e!=null&&Oe(e).some(t=>{var n;return(n=An(t))===null||n===void 0?void 0:n.size})}function ka(e,t){return Promise.all(t.map(n=>(function(r,i){Re[r].delete(i),Re[r].size===0&&delete Re[r]}(e,n),n().then(r=>r.default||r)))).then(n=>In(e,...n))}const Se={};function Pn(e){if(!Me(e))return e in Se?Se[e]:Promise.resolve();const t=function(n){return Oe(n).map(r=>{const i=An(r);return[r,i?[...i]:[]]}).filter(([,r])=>r.length>0)}(e);return Se[e]=Promise.all(t.map(([n,r])=>ka(n,r))).then(()=>{if(Me(e))return Pn(e);delete Se[e]}),Se[e]}/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */function pe(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function"){var i=0;for(r=Object.getOwnPropertySymbols(e);ir.slice(0,n+1).join("-")).reverse()}function Oe(e,t=ge().fallbackLocale){const n=At(e);return t?[...new Set([...n,...At(t)])]:n}function ce(){return nt??void 0}Ne.subscribe(e=>{nt=e??void 0,typeof window<"u"&&e!=null&&document.documentElement.setAttribute("lang",e)});const Ee=Object.assign(Object.assign({},Ne),{set:e=>{if(e&&function(t){if(t==null)return;const n=Oe(t);for(let r=0;rZe.set(!0),t):Ze.set(!0),Pn(e).then(()=>{Ne.set(e)}).finally(()=>{clearTimeout(n),Ze.set(!1)})}return Ne.set(e)}}),La=()=>typeof window>"u"?null:window.navigator.language||window.navigator.languages[0],Ue=e=>{const t=Object.create(null);return n=>{const r=JSON.stringify(n);return r in t?t[r]:t[r]=e(n)}},Ae=(e,t)=>{const{formats:n}=ge();if(e in n&&t in n[e])return n[e][t];throw new Error(`[svelte-i18n] Unknown "${t}" ${e} format.`)},Ra=Ue(e=>{var{locale:t,format:n}=e,r=pe(e,["locale","format"]);if(t==null)throw new Error('[svelte-i18n] A "locale" must be set to format numbers');return n&&(r=Ae("number",n)),new Intl.NumberFormat(t,r)}),Na=Ue(e=>{var{locale:t,format:n}=e,r=pe(e,["locale","format"]);if(t==null)throw new Error('[svelte-i18n] A "locale" must be set to format dates');return n?r=Ae("date",n):Object.keys(r).length===0&&(r=Ae("date","short")),new Intl.DateTimeFormat(t,r)}),ja=Ue(e=>{var{locale:t,format:n}=e,r=pe(e,["locale","format"]);if(t==null)throw new Error('[svelte-i18n] A "locale" must be set to format time values');return n?r=Ae("time",n):Object.keys(r).length===0&&(r=Ae("time","short")),new Intl.DateTimeFormat(t,r)}),Da=(e={})=>{var{locale:t=ce()}=e,n=pe(e,["locale"]);return Ra(Object.assign({locale:t},n))},Ma=(e={})=>{var{locale:t=ce()}=e,n=pe(e,["locale"]);return Na(Object.assign({locale:t},n))},Fa=(e={})=>{var{locale:t=ce()}=e,n=pe(e,["locale"]);return ja(Object.assign({locale:t},n))},Ga=Ue((e,t=ce())=>new Pa(e,t,ge().formats,{ignoreTag:ge().ignoreTag})),Ua=(e,t={})=>{let n=t;typeof e=="object"&&(n=e,e=n.id);const{values:r,locale:i=ce(),default:o}=n;if(i==null)throw new Error("[svelte-i18n] Cannot format a message without first setting the initial locale.");let s=Tn(e,i);if(s){if(typeof s!="string")return console.warn(`[svelte-i18n] Message with id "${e}" must be of type "string", found: "${typeof s}". Gettin its value through the "$format" method is deprecated; use the "json" method instead.`),s}else ge().warnOnMissingMessages&&console.warn(`[svelte-i18n] The message "${e}" was not found in "${Oe(i).join('", "')}".${Me(ce())?` + +Note: there are at least one loader still registered to this locale that wasn't executed.`:""}`),s=o??e;if(!r)return s;let a=s;try{a=Ga(s,i).format(r)}catch(f){console.warn(`[svelte-i18n] Message "${e}" has syntax error:`,f.message)}return a},Va=(e,t)=>Fa(t).format(e),za=(e,t)=>Ma(t).format(e),Xa=(e,t)=>Da(t).format(e),Ba=(e,t=ce())=>Tn(e,t),Ds=be([Ee,Ce],()=>Ua);be([Ee],()=>Va);be([Ee],()=>za);be([Ee],()=>Xa);be([Ee,Ce],()=>Ba);const qa={accordion:()=>j(()=>import_fix("./index.40b39df7.js", import.meta.url),["assets/index.40b39df7.js","assets/index.5aa71568.css","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Column.69198682.js"]),audio:()=>j(()=>import_fix("./index.e1c9d5ed.js", import.meta.url),["assets/index.e1c9d5ed.js","assets/index.949232a2.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/UploadText.e78ad6f6.js","assets/UploadText.41b55f5d.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Upload.c051b7dd.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.06b7f9d9.js","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js"]),box:()=>j(()=>import_fix("./index.3da5988a.js", import.meta.url),["assets/index.3da5988a.js","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),button:()=>j(()=>import_fix("./index.e0b9fbc0.js", import.meta.url),["assets/index.e0b9fbc0.js","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),chatbot:()=>j(()=>import_fix("./index.af23fb3b.js", import.meta.url),["assets/index.af23fb3b.js","assets/index.c402ae1d.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css"]),checkbox:()=>j(()=>import_fix("./index.80349daf.js", import.meta.url),["assets/index.80349daf.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Info.4b69e77f.js"]),checkboxgroup:()=>j(()=>import_fix("./index.83ae7361.js", import.meta.url),["assets/index.83ae7361.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),code:()=>j(()=>import_fix("./index.bb94c2e1.js", import.meta.url).then(function(e){return e.F}),["assets/index.bb94c2e1.js","assets/index.4d8c967c.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js","assets/Copy.fa9f7398.js","assets/Download.e46fa6ff.js"]),colorpicker:()=>j(()=>import_fix("./index.e2d743e9.js", import.meta.url),["assets/index.e2d743e9.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),column:()=>j(()=>import_fix("./index.ea70dbd1.js", import.meta.url),["assets/index.ea70dbd1.js","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/Column.69198682.js","assets/index.7a68216a.js","assets/index.f554ccc1.css"]),dataframe:()=>j(()=>import_fix("./index.85ca7b2d.js", import.meta.url),["assets/index.85ca7b2d.js","assets/index.ed3a7ba6.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Upload.c051b7dd.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/dsv.7fe76a93.js"]),dataset:()=>j(()=>import_fix("./index.3d25a9cb.js", import.meta.url),["assets/index.3d25a9cb.js","assets/index.a3fdfec5.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/_commonjsHelpers.a5007c1f.js","assets/Image.2e852803.js","assets/Image.3a14ca24.css","assets/csv.27f5436c.js","assets/dsv.7fe76a93.js","assets/Model3D.83383452.js","assets/Model3D.586493bd.css"]),dropdown:()=>j(()=>import_fix("./index.55e01de6.js", import.meta.url),["assets/index.55e01de6.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),file:()=>j(()=>import_fix("./index.39c24762.js", import.meta.url),["assets/index.39c24762.js","assets/index.6da2d824.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js","assets/File.7698c472.js","assets/Upload.c051b7dd.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.06b7f9d9.js","assets/UploadText.e78ad6f6.js","assets/UploadText.41b55f5d.css"]),form:()=>j(()=>import_fix("./index.30201970.js", import.meta.url),["assets/index.30201970.js","assets/Form.c11fdf11.js","assets/Form.0a7d9dad.css","assets/index.7a68216a.js","assets/index.f554ccc1.css"]),gallery:()=>j(()=>import_fix("./index.8cea8982.js", import.meta.url),["assets/index.8cea8982.js","assets/index.5c217706.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.06b7f9d9.js","assets/Image.f3d382f6.js"]),group:()=>j(()=>import_fix("./index.c4b8839e.js", import.meta.url),["assets/index.c4b8839e.js","assets/index.722bec8b.css","assets/index.7a68216a.js","assets/index.f554ccc1.css"]),highlightedtext:()=>j(()=>import_fix("./index.56de6705.js", import.meta.url),["assets/index.56de6705.js","assets/index.6f761b5e.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/color.f2fbe15a.js","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js"]),html:()=>j(()=>import_fix("./index.878f7f07.js", import.meta.url),["assets/index.878f7f07.js","assets/index.f6ac8e97.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),image:()=>j(()=>import_fix("./index.97197b8e.js", import.meta.url),["assets/index.97197b8e.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Image.f3d382f6.js","assets/StaticImage.svelte_svelte_type_style_lang.8bc35352.js","assets/StaticImage.svelte_svelte_type_style_lang.b09e12d3.css","assets/ModifyUpload.06b7f9d9.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Upload.c051b7dd.js","assets/Empty.092ff864.js","assets/Download.e46fa6ff.js","assets/UploadText.e78ad6f6.js","assets/UploadText.41b55f5d.css","assets/Image.2e852803.js","assets/Image.3a14ca24.css"]),interpretation:()=>j(()=>import_fix("./index.06965fd8.js", import.meta.url),["assets/index.06965fd8.js","assets/index.8b2a7651.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),json:()=>j(()=>import_fix("./index.64577800.js", import.meta.url),["assets/index.64577800.js","assets/index.61c7b416.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Copy.fa9f7398.js","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Empty.092ff864.js","assets/BlockLabel.fd555cfa.js"]),label:()=>j(()=>import_fix("./index.30c92780.js", import.meta.url),["assets/index.30c92780.js","assets/index.b68d5aeb.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js"]),markdown:()=>j(()=>import_fix("./index.34f6d1fb.js", import.meta.url),["assets/index.34f6d1fb.js","assets/index.24229075.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),model3d:()=>j(()=>import_fix("./index.a84bb2ee.js", import.meta.url),["assets/index.a84bb2ee.js","assets/index.00ec9920.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js","assets/File.7698c472.js","assets/ModifyUpload.06b7f9d9.js","assets/Download.e46fa6ff.js","assets/_commonjsHelpers.a5007c1f.js","assets/Upload.c051b7dd.js","assets/UploadText.e78ad6f6.js","assets/UploadText.41b55f5d.css","assets/Model3D.83383452.js","assets/Model3D.586493bd.css"]),number:()=>j(()=>import_fix("./index.57d6d677.js", import.meta.url),["assets/index.57d6d677.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),plot:()=>j(()=>import_fix("./index.3c2bfbb6.js", import.meta.url),["assets/index.3c2bfbb6.js","assets/index.84ff132c.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/_commonjsHelpers.a5007c1f.js","assets/color.f2fbe15a.js","assets/linear.955f0731.js","assets/dsv.7fe76a93.js","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Empty.092ff864.js","assets/BlockLabel.fd555cfa.js"]),radio:()=>j(()=>import_fix("./index.dfbd6dc6.js", import.meta.url),["assets/index.dfbd6dc6.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),row:()=>j(()=>import_fix("./index.c37730ee.js", import.meta.url),["assets/index.c37730ee.js","assets/index.1c646c8a.css","assets/index.7a68216a.js","assets/index.f554ccc1.css"]),slider:()=>j(()=>import_fix("./index.dc42f427.js", import.meta.url),["assets/index.dc42f427.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js"]),state:()=>j(()=>import_fix("./index.6d5e2b84.js", import.meta.url),["assets/index.6d5e2b84.js","assets/index.7a68216a.js","assets/index.f554ccc1.css"]),statustracker:()=>j(()=>import_fix("./index.77915823.js", import.meta.url),["assets/index.77915823.js","assets/index.7a68216a.js","assets/index.f554ccc1.css"]),tabs:()=>j(()=>import_fix("./index.945a2e37.js", import.meta.url),["assets/index.945a2e37.js","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/TabItem.svelte_svelte_type_style_lang.9666256d.js","assets/TabItem.svelte_svelte_type_style_lang.8ca4f84d.css"]),tabitem:()=>j(()=>import_fix("./index.26b0dde7.js", import.meta.url),["assets/index.26b0dde7.js","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/TabItem.svelte_svelte_type_style_lang.9666256d.js","assets/TabItem.svelte_svelte_type_style_lang.8ca4f84d.css","assets/Column.69198682.js"]),textbox:()=>j(()=>import_fix("./index.98512e69.js", import.meta.url),["assets/index.98512e69.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/Textbox.563734b0.js","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.39fa370e.js","assets/Info.4b69e77f.js","assets/Copy.fa9f7398.js"]),timeseries:()=>j(()=>import_fix("./index.894bc2f2.js", import.meta.url),["assets/index.894bc2f2.js","assets/index.8f9fffde.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Upload.c051b7dd.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.06b7f9d9.js","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.fd555cfa.js","assets/Empty.092ff864.js","assets/color.f2fbe15a.js","assets/linear.955f0731.js","assets/csv.27f5436c.js","assets/dsv.7fe76a93.js","assets/UploadText.e78ad6f6.js","assets/UploadText.41b55f5d.css"]),uploadbutton:()=>j(()=>import_fix("./index.cb7c1df8.js", import.meta.url),["assets/index.cb7c1df8.js","assets/index.89ce7356.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css"]),video:()=>j(()=>import_fix("./index.aef9d94a.js", import.meta.url),["assets/index.aef9d94a.js","assets/index.ff5c67e2.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.7a68216a.js","assets/index.f554ccc1.css","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Upload.c051b7dd.js","assets/ModifyUpload.06b7f9d9.js","assets/BlockLabel.fd555cfa.js","assets/StaticImage.svelte_svelte_type_style_lang.8bc35352.js","assets/StaticImage.svelte_svelte_type_style_lang.b09e12d3.css","assets/Empty.092ff864.js","assets/UploadText.e78ad6f6.js","assets/UploadText.41b55f5d.css"])},Cn="\u0623\u0631\u0633\u0644",On="\u0623\u0645\u0633\u062D",kn="\u0641\u0633\u0650\u0651\u0631",xn="\u0628\u0644\u0650\u0651\u063A",Ln="\u0623\u0645\u062B\u0644\u0629",Rn="\u0623\u0648";var Ha={interface:{drop_image:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0635\u0648\u0631\u0629 \u0647\u0646\u0627",drop_video:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0641\u064A\u062F\u064A\u0648 \u0647\u0646\u0627",drop_audio:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0635\u0648\u062A\u064A \u0647\u0646\u0627",drop_file:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0645\u0644\u0641 \u0647\u0646\u0627",drop_csv:"\u0623\u0633\u0642\u0637 \u0645\u0644\u0641 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0647\u0646\u0627",click_to_upload:"\u0625\u0636\u063A\u0637 \u0644\u0644\u062A\u062D\u0645\u064A\u0644",view_api:"\u0625\u0633\u062A\u062E\u062F\u0645 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0628\u0631\u0645\u062C\u0629",built_with_Gradio:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0628\u0625\u0633\u062A\u062E\u062F\u0627\u0645 Gradio"},Submit:Cn,Clear:On,Interpret:kn,Flag:xn,Examples:Ln,or:Rn},Wa=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Cn,Clear:On,Interpret:kn,Flag:xn,Examples:Ln,or:Rn,default:Ha});const Nn="Absenden",jn="L\xF6schen",Dn="Ersteller",Mn="Flag",Fn="Beispiele",Gn="oder";var Za={interface:{drop_image:"Bild hier ablegen",drop_video:"Video hier ablegen",drop_audio:"Audio hier ablegen",drop_file:"Datei hier ablegen",drop_csv:"CSV Datei hier ablegen",click_to_upload:"Hochladen",view_api:"API anschauen",built_with_Gradio:"Mit Gradio erstellt"},Submit:Nn,Clear:jn,Interpret:Dn,Flag:Mn,Examples:Fn,or:Gn},Ja=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Nn,Clear:jn,Interpret:Dn,Flag:Mn,Examples:Fn,or:Gn,default:Za});const Un="Submit",Vn="Clear",zn="Interpret",Xn="Flag",Bn="Examples",qn="or";var Ya={interface:{drop_image:"Drop Image Here",drop_video:"Drop Video Here",drop_audio:"Drop Audio Here",drop_file:"Drop File Here",drop_csv:"Drop CSV Here",click_to_upload:"Click to Upload",view_api:"view the api",built_with_Gradio:"Built with gradio",copy_to_clipboard:"copy json",loading:"Loading",error:"ERROR",empty:"Empty"},Submit:Un,Clear:Vn,Interpret:zn,Flag:Xn,Examples:Bn,or:qn},Qa=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Un,Clear:Vn,Interpret:zn,Flag:Xn,Examples:Bn,or:qn,default:Ya});const Hn="Enviar",Wn="Limpiar",Zn="Interpretar",Jn="Avisar",Yn="Ejemplos",Qn="o";var Ka={interface:{drop_image:"Coloque la imagen aqu\xED",drop_video:"Coloque el video aqu\xED",drop_audio:"Coloque el audio aqu\xED",drop_file:"Coloque el archivo aqu\xED",drop_csv:"Coloque el CSV aqu\xED",click_to_upload:"Haga click para cargar",view_api:"Ver la API",built_with_Gradio:"Construido con Gradio"},Submit:Hn,Clear:Wn,Interpret:Zn,Flag:Jn,Examples:Yn,or:Qn},$a=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Hn,Clear:Wn,Interpret:Zn,Flag:Jn,Examples:Yn,or:Qn,default:Ka});const Kn="\u0627\u0631\u0633\u0627\u0644",$n="\u062D\u0630\u0641",er="\u062A\u0641\u0633\u06CC\u0631",tr="\u067E\u0631\u0686\u0645",nr="\u0645\u062B\u0627\u0644 \u0647\u0627",rr="\u06CC\u0627";var el={interface:{drop_image:"\u062A\u0635\u0648\u06CC\u0631 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_video:"\u0648\u06CC\u062F\u06CC\u0648 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_audio:"\u0635\u0648\u062A \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_file:"\u0641\u0627\u06CC\u0644 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_csv:"\u0641\u0627\u06CC\u0644 csv \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",click_to_upload:"\u0628\u0631\u0627\u06CC \u0622\u067E\u0644\u0648\u062F \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",view_api:"api \u0631\u0627 \u0645\u0634\u0627\u0647\u062F\u0647 \u06A9\u0646\u06CC\u062F",built_with_Gradio:"\u0633\u0627\u062E\u062A\u0647 \u0634\u062F\u0647 \u0628\u0627 gradio"},Submit:Kn,Clear:$n,Interpret:er,Flag:tr,Examples:nr,or:rr},tl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Kn,Clear:$n,Interpret:er,Flag:tr,Examples:nr,or:rr,default:el});const ir="Soumettre",or="Nettoyer",ar="Interpr\xE9ter",lr="Signaler",sr="Exemples",ur="ou";var nl={interface:{drop_image:"D\xE9poser l'Image Ici",drop_video:"D\xE9poser la Vid\xE9o Ici",drop_audio:"D\xE9poser l'Audio Ici",drop_file:"D\xE9poser le Fichier Ici",drop_csv:"D\xE9poser le CSV Ici",click_to_upload:"Cliquer pour T\xE9l\xE9charger",view_api:"Voir l'API",built_with_Gradio:"Con\xE7u avec Gradio"},Submit:ir,Clear:or,Interpret:ar,Flag:lr,Examples:sr,or:ur},rl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:ir,Clear:or,Interpret:ar,Flag:lr,Examples:sr,or:ur,default:nl});const fr="\u05E9\u05DC\u05D7",cr="\u05E0\u05E7\u05D4",_r="\u05DC\u05E4\u05E8\u05E9",pr="\u05E1\u05DE\u05DF",dr="\u05D3\u05D5\u05D2\u05DE\u05D5\u05EA",mr="\u05D0\u05D5";var il={interface:{drop_image:"\u05D2\u05E8\u05D5\u05E8 \u05E7\u05D5\u05D1\u05E5 \u05EA\u05DE\u05D5\u05E0\u05D4 \u05DC\u05DB\u05D0\u05DF",drop_video:"\u05D2\u05E8\u05D5\u05E8 \u05E7\u05D5\u05D1\u05E5 \u05E1\u05E8\u05D8\u05D5\u05DF \u05DC\u05DB\u05D0\u05DF",drop_audio:"\u05D2\u05E8\u05D5\u05E8 \u05DC\u05DB\u05D0\u05DF \u05E7\u05D5\u05D1\u05E5 \u05E9\u05DE\u05E2",drop_file:"\u05D2\u05E8\u05D5\u05E8 \u05E7\u05D5\u05D1\u05E5 \u05DC\u05DB\u05D0\u05DF",drop_csv:"\u05D2\u05E8\u05D5\u05E8 csv \u05E7\u05D5\u05D1\u05E5 \u05DC\u05DB\u05D0\u05DF",click_to_upload:"\u05DC\u05D7\u05E5 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05E2\u05DC\u05D5\u05EA",view_api:"\u05E6\u05E4\u05D4 \u05D1 API",built_with_Gradio:"\u05D1\u05E0\u05D5\u05D9 \u05E2\u05DD \u05D2\u05E8\u05D3\u05D9\u05D5"},Submit:fr,Clear:cr,Interpret:_r,Flag:pr,Examples:dr,or:mr},ol=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:fr,Clear:cr,Interpret:_r,Flag:pr,Examples:dr,or:mr,default:il});const hr="\u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0947",gr="\u0939\u091F\u093E\u092F\u0947",vr="\u0935\u094D\u092F\u093E\u0916\u094D\u092F\u093E \u0915\u0930\u0947",br="\u091A\u093F\u0939\u094D\u0928\u093F\u0924 \u0915\u0930\u0947",yr="\u0909\u0926\u093E\u0939\u0930\u0923",Er="\u092F\u093E";var al={interface:{drop_image:"\u092F\u0939\u093E\u0901 \u0907\u092E\u0947\u091C \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_video:"\u092F\u0939\u093E\u0901 \u0935\u0940\u0921\u093F\u092F\u094B \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_audio:"\u092F\u0939\u093E\u0901 \u0911\u0921\u093F\u092F\u094B \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_file:"\u092F\u0939\u093E\u0901 File \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_csv:"\u092F\u0939\u093E\u0901 CSV \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",click_to_upload:"\u0905\u092A\u0932\u094B\u0921 \u0915\u0947 \u0932\u093F\u090F \u092C\u091F\u0928 \u0926\u092C\u093E\u092F\u0947\u0902",view_api:"API \u0915\u094B \u0926\u0947\u0916\u0947",built_with_Gradio:"Gradio \u0938\u0947 \u092C\u0928\u093E"},Submit:hr,Clear:gr,Interpret:vr,Flag:br,Examples:yr,or:Er},ll=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:hr,Clear:gr,Interpret:vr,Flag:br,Examples:yr,or:Er,default:al});const Sr="\u9001\u4FE1",Tr="\u30AF\u30EA\u30A2",wr="\u89E3\u91C8",Ir="\u30D5\u30E9\u30B0\u3059\u308B",Ar="\u5165\u529B\u4F8B",Pr="\u307E\u305F\u306F";var sl={interface:{drop_image:"\u3053\u3053\u306B\u753B\u50CF\u3092\u30C9\u30ED\u30C3\u30D7",drop_video:"\u3053\u3053\u306B\u52D5\u753B\u3092\u30C9\u30ED\u30C3\u30D7",drop_audio:"\u3053\u3053\u306B\u97F3\u58F0\u3092\u30C9\u30ED\u30C3\u30D7",drop_file:"\u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C9\u30ED\u30C3\u30D7",drop_csv:"\u3053\u3053\u306BCSV\u3092\u30C9\u30ED\u30C3\u30D7",click_to_upload:"\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9",view_api:"API\u3092\u898B\u308B",built_with_Gradio:"gradio\u3067\u4F5C\u308D\u3046"},Submit:Sr,Clear:Tr,Interpret:wr,Flag:Ir,Examples:Ar,or:Pr},ul=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Sr,Clear:Tr,Interpret:wr,Flag:Ir,Examples:Ar,or:Pr,default:sl});const Cr="\uC81C\uCD9C\uD558\uAE30",Or="\uD074\uB9AC\uC5B4",kr="\uC124\uBA85\uD558\uAE30",xr="\uD50C\uB798\uADF8",Lr="\uC608\uC2DC",Rr="\uB610\uB294";var fl={interface:{drop_image:"\uC774\uBBF8\uC9C0\uB97C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_video:"\uBE44\uB514\uC624\uB97C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_audio:"\uC624\uB514\uC624\uB97C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_file:"\uD30C\uC77C\uC744 \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_csv:"CSV\uD30C\uC77C\uC744 \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",click_to_upload:"\uD074\uB9AD\uD574\uC11C \uC5C5\uB85C\uB4DC\uD558\uAE30",view_api:"API \uBCF4\uAE30",built_with_Gradio:"gradio\uB85C \uC81C\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4"},Submit:Cr,Clear:Or,Interpret:kr,Flag:xr,Examples:Lr,or:Rr},cl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Cr,Clear:Or,Interpret:kr,Flag:xr,Examples:Lr,or:Rr,default:fl});const Nr="Pateikti",jr="Trinti",Dr="Interpretuoti",Mr="Pa\u017Eym\u0117ti",Fr="Pavyzd\u017Eiai",Gr="arba";var _l={interface:{drop_image:"\u012Ekelkite paveiksl\u0117l\u012F \u010Dia",drop_video:"\u012Ekelkite vaizdo \u012Fra\u0161\u0105 \u010Dia",drop_audio:"\u012Ekelkite garso \u012Fra\u0161\u0105 \u010Dia",drop_file:"\u012Ekelkite byl\u0105 \u010Dia",drop_csv:"\u012Ekelkite CSV \u010Dia",click_to_upload:"Spustel\u0117kite nor\u0117dami \u012Fkelti",view_api:"per\u017Ei\u016Br\u0117ti api",built_with_Gradio:"sukurta su gradio"},Submit:Nr,Clear:jr,Interpret:Dr,Flag:Mr,Examples:Fr,or:Gr},pl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Nr,Clear:jr,Interpret:Dr,Flag:Mr,Examples:Fr,or:Gr,default:_l});const Ur="Zend in",Vr="Wis",zr="Interpreteer",Xr="Vlag",Br="Voorbeelden",qr="of";var dl={interface:{drop_image:"Sleep een Afbeelding hier",drop_video:"Sleep een Video hier",drop_audio:"Sleep een Geluidsbestand hier",drop_file:"Sleep een Document hier",drop_csv:"Sleep een CSV hier",click_to_upload:"Klik om the Uploaden",view_api:"zie de api",built_with_Gradio:"gemaakt met gradio"},Submit:Ur,Clear:Vr,Interpret:zr,Flag:Xr,Examples:Br,or:qr},ml=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ur,Clear:Vr,Interpret:zr,Flag:Xr,Examples:Br,or:qr,default:dl});const Hr="Zatwierd\u017A",Wr="Wyczy\u015B\u0107",Zr="Interpretuj",Jr="Oznacz",Yr="Przyk\u0142ady",Qr="lub";var hl={interface:{drop_image:"Przeci\u0105gnij tutaj zdj\u0119cie",drop_video:"Przeci\u0105gnij tutaj video",drop_audio:"Przeci\u0105gnij tutaj audio",drop_file:"Przeci\u0105gnij tutaj plik",drop_csv:"Przeci\u0105gnij tutaj CSV",click_to_upload:"Kliknij, aby przes\u0142a\u0107",view_api:"zobacz api",built_with_Gradio:"utworzone z gradio"},Submit:Hr,Clear:Wr,Interpret:Zr,Flag:Jr,Examples:Yr,or:Qr},gl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Hr,Clear:Wr,Interpret:Zr,Flag:Jr,Examples:Yr,or:Qr,default:hl});const Kr="Enviar",$r="Limpar",ei="Interpretar",ti="Marcar",ni="Exemplos",ri="ou";var vl={interface:{drop_image:"Solte a Imagem Aqui",drop_video:"Solte o V\xEDdeo Aqui",drop_audio:"Solte o \xC1udio Aqui",drop_file:"Solte o Arquivo Aqui",drop_csv:"Solte o CSV Aqui",click_to_upload:"Clique para o Upload",view_api:"Veja a API",built_with_Gradio:"Constru\xEDdo com gradio",copy_to_clipboard:"copiar para o clipboard",loading:"Carregando",error:"ERRO",empty:"Vazio"},Submit:Kr,Clear:$r,Interpret:ei,Flag:ti,Examples:ni,or:ri},bl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Kr,Clear:$r,Interpret:ei,Flag:ti,Examples:ni,or:ri,default:vl});const ii="\u0418\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u044C",oi="\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",ai="\u0418\u043D\u0442\u0435\u0440\u043F\u0440\u0435\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C",li="\u041F\u043E\u043C\u0435\u0442\u0438\u0442\u044C",si="\u041F\u0440\u0438\u043C\u0435\u0440\u044B",ui="\u0438\u043B\u0438";var yl={interface:{drop_image:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0417\u0434\u0435\u0441\u044C",drop_video:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0412\u0438\u0434\u0435\u043E \u0417\u0434\u0435\u0441\u044C",drop_audio:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0410\u0443\u0434\u0438\u043E \u0417\u0434\u0435\u0441\u044C",drop_file:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0417\u0434\u0435\u0441\u044C",drop_csv:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 CSV \u0417\u0434\u0435\u0441\u044C",click_to_upload:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C",view_api:"\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 api",built_with_Gradio:"\u0441\u0434\u0435\u043B\u0430\u043D\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E gradio"},Submit:ii,Clear:oi,Interpret:ai,Flag:li,Examples:si,or:ui},El=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:ii,Clear:oi,Interpret:ai,Flag:li,Examples:si,or:ui,default:yl});const fi="\u0B9A\u0BAE\u0BB0\u0BCD\u0BAA\u0BCD\u0BAA\u0BBF",ci="\u0B85\u0BB4\u0BBF",_i="\u0B89\u0B9F\u0BCD\u0BAA\u0BCA\u0BB0\u0BC1\u0BB3\u0BCD",pi="\u0B95\u0BCA\u0B9F\u0BBF\u0BAF\u0BBF\u0B9F\u0BC1",di="\u0B8E\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",mi="\u0B85\u0BB2\u0BCD\u0BB2\u0BA4\u0BC1";var Sl={interface:{drop_image:"\u0BAA\u0B9F\u0BA4\u0BCD\u0BA4\u0BC8 \u0BB5\u0BC8",drop_video:"\u0BB5\u0BC0\u0B9F\u0BBF\u0BAF\u0BCB\u0BB5\u0BC8 \u0BB5\u0BC8",drop_audio:"\u0B86\u0B9F\u0BBF\u0BAF\u0BCB\u0BB5\u0BC8 \u0BB5\u0BC8",drop_file:"\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC8 \u0BB5\u0BC8",drop_csv:"\u0B9A\u0BBF\u0B8E\u0BB8\u0BCD\u0BB5\u0BBF \u0BB5\u0BC8",click_to_upload:"\u0BAA\u0BA4\u0BBF\u0BB5\u0BC7\u0BB1\u0BCD\u0BB1 \u0B95\u0BBF\u0BB3\u0BBF\u0B95\u0BCD \u0B9A\u0BC6\u0BAF\u0BCD",view_api:"\u0B85\u0BAA\u0BBF\u0BAF\u0BC8 \u0B95\u0BBE\u0BA3\u0BCD",built_with_Gradio:"\u0B95\u0BCD\u0BB0\u0BC7\u0B9F\u0BBF\u0BAF\u0BCB-\u0BB5\u0BC1\u0B9F\u0BA9\u0BCD \u0B95\u0B9F\u0BCD\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1"},Submit:fi,Clear:ci,Interpret:_i,Flag:pi,Examples:di,or:mi},Tl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:fi,Clear:ci,Interpret:_i,Flag:pi,Examples:di,or:mi,default:Sl});const hi="Y\xFCkle",gi="Temizle",vi="Yorumla",bi="Etiketle",yi="\xF6rnekler",Ei="veya";var wl={interface:{drop_image:"Resmi Buraya S\xFCr\xFCkle",drop_video:"Videoyu Buraya S\xFCr\xFCkle",drop_audio:"Kayd\u0131 Buraya S\xFCr\xFCkle",drop_file:"Dosyay\u0131 Buraya S\xFCr\xFCkle",drop_csv:"CSV'yi Buraya S\xFCr\xFCkle",click_to_upload:"Y\xFCklemek i\xE7in T\u0131kla",view_api:"api'yi g\xF6r\xFCnt\xFCle",built_with_Gradio:"Gradio ile olu\u015Fturulmu\u015Ftur"},Submit:hi,Clear:gi,Interpret:vi,Flag:bi,Examples:yi,or:Ei},Il=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:hi,Clear:gi,Interpret:vi,Flag:bi,Examples:yi,or:Ei,default:wl});const Si="\u041D\u0430\u0434\u0456\u0441\u043B\u0430\u0442\u0438",Ti="\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438",wi="\u041F\u043E\u044F\u0441\u043D\u0438\u0442\u0438 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442",Ii="\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438",Ai="\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438",Pi="\u0430\u0431\u043E";var Al={interface:{drop_image:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0441\u044E\u0434\u0438",drop_video:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0432\u0456\u0434\u0435\u043E \u0441\u044E\u0434\u0438",drop_audio:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0430\u0443\u0434\u0456\u043E \u0441\u044E\u0434\u0438",drop_file:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B \u0441\u044E\u0434\u0438",drop_csv:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C CSV-\u0444\u0430\u0439\u043B \u0441\u044E\u0434\u0438",click_to_upload:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0449\u043E\u0431 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438",view_api:"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 API",built_with_Gradio:"\u0417\u0440\u043E\u0431\u043B\u0435\u043D\u043E \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 gradio"},Submit:Si,Clear:Ti,Interpret:wi,Flag:Ii,Examples:Ai,or:Pi},Pl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Si,Clear:Ti,Interpret:wi,Flag:Ii,Examples:Ai,or:Pi,default:Al});const Ci="\u062C\u0645\u0639 \u06A9\u0631\u06CC\u06BA",Oi="\u06C1\u0679\u0627 \u062F\u06CC\u06BA",ki="\u062A\u0634\u0631\u06CC\u062D \u06A9\u0631\u06CC\u06BA",xi="\u0646\u0634\u0627\u0646 \u0644\u06AF\u0627\u0626\u06CC\u06BA",Li="\u0645\u062B\u0627\u0644\u06CC\u06BA",Ri="\u06CC\u0627";var Cl={interface:{drop_image:"\u06CC\u06C1\u0627\u06BA \u062A\u0635\u0648\u06CC\u0631 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_video:"\u06CC\u06C1\u0627\u06BA \u0648\u06CC\u0688\u06CC\u0648 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_audio:"\u06CC\u06C1\u0627\u06BA \u0622\u0688\u06CC\u0648 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_file:"\u06CC\u06C1\u0627\u06BA \u0641\u0627\u0626\u0644 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_csv:"\u06CC\u06C1\u0627\u06BA \u0641\u0627\u0626\u0644 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",click_to_upload:"\u0627\u067E \u0644\u0648\u0688 \u06A9\u06D2 \u0644\u06CC\u06D2 \u06A9\u0644\u06A9 \u06A9\u0631\u06CC\u06BA",view_api:"API \u062F\u06CC\u06A9\u06BE\u06CC\u06BA",built_with_Gradio:"\u06A9\u06D2 \u0633\u0627\u062A\u06BE \u0628\u0646\u0627\u06CC\u0627 \u06AF\u06CC\u0627 Gradio"},Submit:Ci,Clear:Oi,Interpret:ki,Flag:xi,Examples:Li,or:Ri},Ol=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ci,Clear:Oi,Interpret:ki,Flag:xi,Examples:Li,or:Ri,default:Cl});const Ni="Yubor",ji="Tozalash",Di="Tushuntirish",Mi="Bayroq",Fi="Namunalar",Gi="\u6216";var kl={interface:{drop_image:"Rasmni Shu Yerga Tashlang",drop_video:"Videoni Shu Yerga Tashlang",drop_audio:"Audioni Shu Yerga Tashlang",drop_file:"Faylni Shu Yerga Tashlang",drop_csv:"CSVni Shu Yerga Tashlang",click_to_upload:"Yuklash uchun Bosing",view_api:"apini ko'ring",built_with_Gradio:"gradio bilan qilingan"},Submit:Ni,Clear:ji,Interpret:Di,Flag:Mi,Examples:Fi,or:Gi},xl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ni,Clear:ji,Interpret:Di,Flag:Mi,Examples:Fi,or:Gi,default:kl});const Ui="\u63D0\u4EA4",Vi="\u6E05\u9664",zi="\u89E3\u91CA",Xi="\u6807\u8BB0",Bi="\u793A\u4F8B",qi="\u6216";var Ll={interface:{drop_image:"\u62D6\u653E\u56FE\u7247\u81F3\u6B64\u5904",drop_video:"\u62D6\u653E\u89C6\u9891\u81F3\u6B64\u5904",drop_audio:"\u62D6\u653E\u97F3\u9891\u81F3\u6B64\u5904",drop_file:"\u62D6\u653E\u6587\u4EF6\u81F3\u6B64\u5904",drop_csv:"\u62D6\u653ECSV\u81F3\u6B64\u5904",click_to_upload:"\u70B9\u51FB\u4E0A\u4F20",view_api:"\u67E5\u770BAPI",built_with_Gradio:"\u4F7F\u7528Gradio\u6784\u5EFA"},Submit:Ui,Clear:Vi,Interpret:zi,Flag:Xi,Examples:Bi,or:qi},Rl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ui,Clear:Vi,Interpret:zi,Flag:Xi,Examples:Bi,or:qi,default:Ll});const Hi="\u63D0\u4EA4",Wi="\u6E05\u9664",Zi="\u89E3\u91CB",Ji="Flag",Yi="\u7BC4\u4F8B",Qi="\u6216";var Nl={interface:{drop_image:"\u522A\u9664\u5716\u7247",drop_video:"\u522A\u9664\u5F71\u7247",drop_audio:"\u522A\u9664\u97F3\u983B",drop_file:"\u522A\u9664\u6A94\u6848",drop_csv:"\u522A\u9664CSV",click_to_upload:"\u9EDE\u64CA\u4E0A\u50B3",view_api:"\u67E5\u770BAPI",built_with_Gradio:"\u4F7F\u7528Gradio\u69CB\u5EFA"},Submit:Hi,Clear:Wi,Interpret:Zi,Flag:Ji,Examples:Yi,or:Qi},jl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Hi,Clear:Wi,Interpret:Zi,Flag:Ji,Examples:Yi,or:Qi,default:Nl});const Pt={"./lang/ar.json":Wa,"./lang/de.json":Ja,"./lang/en.json":Qa,"./lang/es.json":$a,"./lang/fa.json":tl,"./lang/fr.json":rl,"./lang/he.json":ol,"./lang/hi.json":ll,"./lang/ja.json":ul,"./lang/ko.json":cl,"./lang/lt.json":pl,"./lang/nl.json":ml,"./lang/pl.json":gl,"./lang/pt-BR.json":bl,"./lang/ru.json":El,"./lang/ta.json":Tl,"./lang/tr.json":Il,"./lang/uk.json":Pl,"./lang/ur.json":Ol,"./lang/uz.json":xl,"./lang/zh-cn.json":Rl,"./lang/zh-tw.json":jl};function Dl(){let e={};for(const t in Pt){const n=t.split("/").pop().split(".").shift();e[n]=Pt[t].default}return e}const Ct=Dl();for(const e in Ct)In(e,Ct[e]);function Ml(){xa({fallbackLocale:"en",initialLocale:La()})}function Ot(e,t,n){const r=e.slice();return r[8]=t[n].component,r[17]=t[n].id,r[2]=t[n].props,r[18]=t[n].children,r[9]=t[n].has_modes,r}function kt(e){let t=[],n=new Map,r,i,o=e[1];const s=a=>a[17];for(let a=0;a{r=null}),ae())},i(i){n||(x(r),n=!0)},o(i){D(r),n=!1},d(i){r&&r.d(i),i&&S(t)}}}function Gl(e){let t,n,r,i;const o=[{elem_id:"elem_id"in e[2]&&e[2].elem_id||`component-${e[4]}`},{elem_classes:"elem_classes"in e[2]&&e[2].elem_classes||[]},{target:e[6]},e[2],{theme:e[7]},{root:e[3]}];function s(l){e[15](l)}var a=e[8];function f(l){let u={$$slots:{default:[Fl]},$$scope:{ctx:l}};for(let _=0;_mt(t,"value",s)),t.$on("prop_change",e[10])),{c(){t&&V(t.$$.fragment),r=ne()},m(l,u){t&&z(t,l,u),I(l,r,u),i=!0},p(l,[u]){const _=u&220?fo(o,[u&20&&{elem_id:"elem_id"in l[2]&&l[2].elem_id||`component-${l[4]}`},u&4&&{elem_classes:"elem_classes"in l[2]&&l[2].elem_classes||[]},u&64&&{target:l[6]},u&4&&co(l[2]),u&128&&{theme:l[7]},u&8&&{root:l[3]}]):{};if(u&2097387&&(_.$$scope={dirty:u,ctx:l}),!n&&u&17&&(n=!0,_.value=l[0][l[4]].props.value,_o(()=>n=!1)),a!==(a=l[8])){if(t){oe();const c=t;D(c.$$.fragment,1,0,()=>{X(c,1)}),ae()}a?(t=new a(f(l)),l[14](t),we.push(()=>mt(t,"value",s)),t.$on("prop_change",l[10]),V(t.$$.fragment),x(t.$$.fragment,1),z(t,r.parentNode,r)):t=null}else a&&t.$set(_)},i(l){i||(t&&x(t.$$.fragment,l),i=!0)},o(l){t&&D(t.$$.fragment,l),i=!1},d(l){e[14](null),l&&S(r),t&&X(t,l)}}}function Ul(e,t,n){let{root:r}=t,{component:i}=t,{instance_map:o}=t,{id:s}=t,{props:a}=t,{children:f}=t,{dynamic_ids:l}=t,{has_modes:u}=t,{parent:_=null}=t,{target:c}=t,{theme:g}=t;const p=it();u&&(a.interactive===!1?a.mode="static":a.interactive===!0||l.has(s)?a.mode="dynamic":a.mode="static"),on(()=>(p("mount",s),()=>p("destroy",s))),po("BLOCK_KEY",_);function m(b){for(const A in b.detail)n(0,o[s].props[A]=b.detail[A],o)}function d(b){je.call(this,e,b)}function C(b){je.call(this,e,b)}function T(b){we[b?"unshift":"push"](()=>{o[s].instance=b,n(0,o)})}function y(b){e.$$.not_equal(o[s].props.value,b)&&(o[s].props.value=b,n(0,o))}return e.$$set=b=>{"root"in b&&n(3,r=b.root),"component"in b&&n(8,i=b.component),"instance_map"in b&&n(0,o=b.instance_map),"id"in b&&n(4,s=b.id),"props"in b&&n(2,a=b.props),"children"in b&&n(1,f=b.children),"dynamic_ids"in b&&n(5,l=b.dynamic_ids),"has_modes"in b&&n(9,u=b.has_modes),"parent"in b&&n(11,_=b.parent),"target"in b&&n(6,c=b.target),"theme"in b&&n(7,g=b.theme)},e.$$.update=()=>{e.$$.dirty&3&&n(1,f=f&&f.filter(b=>o[b.id].type!=="statustracker")),e.$$.dirty&19&&o[s].type==="form"&&(f?.every(b=>!b.props.visible)?n(2,a.visible=!1,a):n(2,a.visible=!0,a))},[o,f,a,r,s,l,c,g,i,u,m,_,d,C,T,y]}class Ki extends K{constructor(t){super(),$(this,t,Ul,Gl,ee,{root:3,component:8,instance_map:0,id:4,props:2,children:1,dynamic_ids:5,has_modes:9,parent:11,target:6,theme:7})}}function Vl(e){let t,n,r,i;return{c(){t=xe("svg"),n=xe("g"),r=xe("path"),i=xe("path"),E(r,"d","M3.789,0.09C3.903,-0.024 4.088,-0.024 4.202,0.09L4.817,0.705C4.931,0.819 4.931,1.004 4.817,1.118L1.118,4.817C1.004,4.931 0.819,4.931 0.705,4.817L0.09,4.202C-0.024,4.088 -0.024,3.903 0.09,3.789L3.789,0.09Z"),E(i,"d","M4.825,3.797C4.934,3.907 4.934,4.084 4.825,4.193L4.193,4.825C4.084,4.934 3.907,4.934 3.797,4.825L0.082,1.11C-0.027,1.001 -0.027,0.823 0.082,0.714L0.714,0.082C0.823,-0.027 1.001,-0.027 1.11,0.082L4.825,3.797Z"),E(t,"width","100%"),E(t,"height","100%"),E(t,"viewBox","0 0 5 5"),E(t,"version","1.1"),E(t,"xmlns","http://www.w3.org/2000/svg"),E(t,"xmlns:xlink","http://www.w3.org/1999/xlink"),E(t,"xml:space","preserve"),ie(t,"fill","currentColor"),ie(t,"fill-rule","evenodd"),ie(t,"clip-rule","evenodd"),ie(t,"stroke-linejoin","round"),ie(t,"stroke-miterlimit","2")},m(o,s){I(o,t,s),h(t,n),h(n,r),h(n,i)},p:re,i:re,o:re,d(o){o&&S(t)}}}class $i extends K{constructor(t){super(),$(this,t,null,Vl,ee,{})}}function zl(e){let t,n,r,i,o,s,a,f,l,u,_,c,g,p,m;return c=new $i({}),{c(){t=w("div"),n=w("h1"),n.textContent="API Docs",r=L(),i=w("p"),o=P(`No named API Routes found for + `),s=w("code"),a=P(e[0]),f=L(),l=w("p"),l.innerHTML=`To expose an API endpoint of your app in this page, set the api_name + parameter of the event listener. +
+ For more information, visit the + API Page guide + . To hide the API documentation button and this page, set + show_api=False + in the + Blocks.launch() + method.`,u=L(),_=w("button"),V(c.$$.fragment),E(s,"class","svelte-1i3r921"),E(i,"class","attention svelte-1i3r921"),E(t,"class","wrap prose svelte-1i3r921"),E(_,"class","svelte-1i3r921")},m(d,C){I(d,t,C),h(t,n),h(t,r),h(t,i),h(i,o),h(i,s),h(s,a),h(t,f),h(t,l),I(d,u,C),I(d,_,C),z(c,_,null),g=!0,p||(m=_e(_,"click",e[2]),p=!0)},p(d,[C]){(!g||C&1)&&B(a,d[0])},i(d){g||(x(c.$$.fragment,d),g=!0)},o(d){D(c.$$.fragment,d),g=!1},d(d){d&&S(t),d&&S(u),d&&S(_),X(c),p=!1,m()}}}function Xl(e,t,n){const r=it();let{root:i}=t;const o=()=>r("close");return e.$$set=s=>{"root"in s&&n(0,i=s.root)},[i,r,o]}class Bl extends K{constructor(t){super(),$(this,t,Xl,zl,ee,{root:0})}}function ve(e,t,n=null){return t===void 0?n==="py"?"None":null:t==="string"?n===null?e:'"'+e+'"':t==="number"?n===null?parseFloat(e):e:t==="boolean"?n==="py"?e==="true"?"True":"False":n==="js"?e:e==="true":n===null?e===""?null:JSON.parse(e):typeof e=="string"?e===""?n==="py"?"None":"null":e:JSON.stringify(e)}var ql="https://gradio.s3-us-west-2.amazonaws.com/3.23.0/assets/api-logo.5346f193.svg";function Lt(e){let t,n,r;return{c(){t=w("div"),n=P(e[1]),r=P(" API endpoints:")},m(i,o){I(i,t,o),h(t,n),h(t,r)},p(i,o){o&2&&B(n,i[1])},d(i){i&&S(t)}}}function Hl(e){let t,n,r,i,o,s,a,f,l,u,_,c,g,p=e[1]>1&&Lt(e);return u=new $i({}),{c(){t=w("h2"),n=w("img"),i=P(` + API documentation for\xA0 + `),o=w("span"),s=P(e[0]),a=L(),p&&p.c(),f=L(),l=w("button"),V(u.$$.fragment),Pe(n.src,r=ql)||E(n,"src",r),E(n,"alt",""),E(n,"class","svelte-155na5k"),E(o,"class","url svelte-155na5k"),E(t,"class","svelte-155na5k"),E(l,"class","svelte-155na5k")},m(m,d){I(m,t,d),h(t,n),h(t,i),h(t,o),h(o,s),I(m,a,d),p&&p.m(m,d),I(m,f,d),I(m,l,d),z(u,l,null),_=!0,c||(g=_e(l,"click",e[3]),c=!0)},p(m,[d]){(!_||d&1)&&B(s,m[0]),m[1]>1?p?p.p(m,d):(p=Lt(m),p.c(),p.m(f.parentNode,f)):p&&(p.d(1),p=null)},i(m){_||(x(u.$$.fragment,m),_=!0)},o(m){D(u.$$.fragment,m),_=!1},d(m){m&&S(t),m&&S(a),p&&p.d(m),m&&S(f),m&&S(l),X(u),c=!1,g()}}}function Wl(e,t,n){let{root:r}=t,{active_api_count:i}=t;const o=it(),s=()=>o("close");return e.$$set=a=>{"root"in a&&n(0,r=a.root),"active_api_count"in a&&n(1,i=a.active_api_count)},[r,i,o,s]}class Zl extends K{constructor(t){super(),$(this,t,Wl,Hl,ee,{root:0,active_api_count:1})}}function Jl(e){let t;return{c(){t=P("copy")},m(n,r){I(n,t,r)},d(n){n&&S(t)}}}function Yl(e){let t;return{c(){t=P("copied!")},m(n,r){I(n,t,r)},d(n){n&&S(t)}}}function Ql(e){let t;function n(o,s){return o[3]===o[2]?Yl:Jl}let r=n(e),i=r(e);return{c(){i.c(),t=ne()},m(o,s){i.m(o,s),I(o,t,s)},p(o,s){r!==(r=n(o))&&(i.d(1),i=r(o),i&&(i.c(),i.m(t.parentNode,t)))},d(o){i.d(o),o&&S(t)}}}function Kl(e){let t,n,r,i,o,s,a,f,l,u,_,c,g;return c=new ot({props:{size:"sm",variant:"secondary",$$slots:{default:[Ql]},$$scope:{ctx:e}}}),c.$on("click",e[4]),{c(){t=w("h3"),n=w("span"),n.textContent="POST",r=P(` + /run/`),i=P(e[0]),o=L(),s=w("div"),a=w("div"),f=P(e[1]),l=P("run/"),u=P(e[0]),_=L(),V(c.$$.fragment),E(n,"class","post svelte-vs3f38"),E(t,"class","svelte-vs3f38"),E(a,"class","url svelte-vs3f38"),E(s,"class","endpoint prose svelte-vs3f38")},m(p,m){I(p,t,m),h(t,n),h(t,r),h(t,i),I(p,o,m),I(p,s,m),h(s,a),h(a,f),h(a,l),h(a,u),h(a,_),z(c,a,null),g=!0},p(p,[m]){(!g||m&1)&&B(i,p[0]),(!g||m&2)&&B(f,p[1]),(!g||m&1)&&B(u,p[0]);const d={};m&44&&(d.$$scope={dirty:m,ctx:p}),c.$set(d)},i(p){g||(x(c.$$.fragment,p),g=!0)},o(p){D(c.$$.fragment,p),g=!1},d(p){p&&S(t),p&&S(o),p&&S(s),X(c)}}}function $l(e,t,n){let{api_name:r}=t,{root:i}=t,{dependency_index:o}=t,s=-1;function a(){navigator.clipboard.writeText(i+"run/"+r),n(3,s=o),setTimeout(()=>{n(3,s=-1)},1500)}return e.$$set=f=>{"api_name"in f&&n(0,r=f.api_name),"root"in f&&n(1,i=f.root),"dependency_index"in f&&n(2,o=f.dependency_index)},[r,i,o,s,a]}class es extends K{constructor(t){super(),$(this,t,$l,Kl,ee,{api_name:0,root:1,dependency_index:2})}}function Rt(e,t,n){const r=e.slice();return r[7]=t[n],r[8]=t,r[9]=n,r}function Nt(e){let t;return{c(){t=w("span"),t.textContent="ERROR",E(t,"class","error svelte-j5il63")},m(n,r){I(n,t,r)},d(n){n&&S(t)}}}function jt(e){let t,n,r,i,o,s,a=(e[4][e[7]].documentation?.type?.input_payload||e[4][e[7]].documentation?.type?.payload)+"",f,l,u,_,c,g=(e[4][e[7]].documentation?.description?.input_payload||e[4][e[7]].documentation?.description?.payload)+"",p,m,d=Dt(e[4][e[7]].props.label)+"",C,T,y,b=e[4][e[7]].props.name+"",A,O,J,ke;function q(){e[6].call(n,e[9])}let W=e[2][e[3]][e[9]]&&Nt();return{c(){t=w("div"),n=w("input"),r=L(),W&&W.c(),i=L(),o=w("span"),s=P(": "),f=P(a),l=P(","),u=L(),_=w("span"),c=P("// represents "),p=P(g),m=P(` of + `),C=P(d),T=L(),y=w("span"),A=P(b),O=P(` + component`),E(n,"class"," svelte-j5il63"),E(n,"type","text"),E(o,"class","type svelte-j5il63"),E(y,"class","name svelte-j5il63"),E(_,"class","desc svelte-j5il63"),E(t,"class","second-level svelte-j5il63")},m(le,te){I(le,t,te),h(t,n),De(n,e[0][e[3]][e[9]]),h(t,r),W&&W.m(t,null),h(t,i),h(t,o),h(o,s),h(o,f),h(o,l),h(t,u),h(t,_),h(_,c),h(_,p),h(_,m),h(_,C),h(_,T),h(_,y),h(y,A),h(_,O),J||(ke=_e(n,"input",q),J=!0)},p(le,te){e=le,te&9&&n.value!==e[0][e[3]][e[9]]&&De(n,e[0][e[3]][e[9]]),e[2][e[3]][e[9]]?W||(W=Nt(),W.c(),W.m(t,i)):W&&(W.d(1),W=null),te&18&&a!==(a=(e[4][e[7]].documentation?.type?.input_payload||e[4][e[7]].documentation?.type?.payload)+"")&&B(f,a),te&18&&g!==(g=(e[4][e[7]].documentation?.description?.input_payload||e[4][e[7]].documentation?.description?.payload)+"")&&B(p,g),te&18&&d!==(d=Dt(e[4][e[7]].props.label)+"")&&B(C,d),te&18&&b!==(b=e[4][e[7]].props.name+"")&&B(A,b)},d(le){le&&S(t),W&&W.d(),J=!1,ke()}}}function ts(e){let t,n,r,i,o,s,a,f=e[1].inputs,l=[];for(let u=0;u
+ Input Payload`,n=L(),V(r.$$.fragment),i=L(),o=w("span"),s=L(),V(a.$$.fragment),E(t,"class","svelte-j5il63"),E(o,"class","space svelte-j5il63")},m(l,u){I(l,t,u),I(l,n,u),z(r,l,u),I(l,i,u),I(l,o,u),I(l,s,u),z(a,l,u),f=!0},p(l,[u]){e=l;const _={};u&1055&&(_.$$scope={dirty:u,ctx:e}),r.$set(_);const c={};u&1024&&(c.$$scope={dirty:u,ctx:e}),a.$set(c)},i(l){f||(x(r.$$.fragment,l),x(a.$$.fragment,l),f=!0)},o(l){D(r.$$.fragment,l),D(a.$$.fragment,l),f=!1},d(l){l&&S(t),l&&S(n),X(r,l),l&&S(i),l&&S(o),l&&S(s),X(a,l)}}}function Dt(e){return e?"'"+e+"'":"the"}function is(e,t,n){let{dependency:r}=t,{dependency_failures:i}=t,{dependency_index:o}=t,{instance_map:s}=t,{run:a}=t,{dependency_inputs:f}=t;function l(u){f[o][u]=this.value,n(0,f)}return e.$$set=u=>{"dependency"in u&&n(1,r=u.dependency),"dependency_failures"in u&&n(2,i=u.dependency_failures),"dependency_index"in u&&n(3,o=u.dependency_index),"instance_map"in u&&n(4,s=u.instance_map),"run"in u&&n(5,a=u.run),"dependency_inputs"in u&&n(0,f=u.dependency_inputs)},[f,r,i,o,s,a,l]}class os extends K{constructor(t){super(),$(this,t,is,rs,ee,{dependency:1,dependency_failures:2,dependency_index:3,instance_map:4,run:5,dependency_inputs:0})}}function Mt(e,t,n){const r=e.slice();return r[8]=t[n],r[9]=t,r[10]=n,r}function Ft(e){let t,n,r,i;function o(){e[7].call(t,e[10])}return{c(){t=w("input"),n=P(` + :`),t.disabled=!0,E(t,"type","text"),E(t,"class","svelte-fxtbel")},m(s,a){I(s,t,a),De(t,e[0][e[2]][e[10]]),I(s,n,a),r||(i=_e(t,"input",o),r=!0)},p(s,a){e=s,a&5&&t.value!==e[0][e[2]][e[10]]&&De(t,e[0][e[2]][e[10]])},d(s){s&&S(t),s&&S(n),r=!1,i()}}}function Gt(e){let t,n,r,i=(e[3][e[8]].documentation?.type?.response_object||e[3][e[8]].documentation?.type?.payload)+"",o,s,a,f,l,u=e[5](e[3][e[8]].documentation?.description?.response_object||e[3][e[8]].documentation?.description?.payload,e[0][e[2]][e[10]])+"",_,c,g=Vt(e[3][e[8]].props.label)+"",p,m,d,C=e[3][e[8]].props.name+"",T,y,b=e[0][e[2]][e[10]]!==void 0&&Ft(e);return{c(){t=w("div"),b&&b.c(),n=L(),r=w("span"),o=P(i),s=P(","),a=L(),f=w("span"),l=P("// represents "),_=P(u),c=P(` of + `),p=P(g),m=L(),d=w("span"),T=P(C),y=P(` + component`),E(r,"class","type svelte-fxtbel"),E(d,"class","name capitalize svelte-fxtbel"),E(f,"class","desc svelte-fxtbel"),E(t,"class","second-level svelte-fxtbel")},m(A,O){I(A,t,O),b&&b.m(t,null),h(t,n),h(t,r),h(r,o),h(r,s),h(t,a),h(t,f),h(f,l),h(f,_),h(f,c),h(f,p),h(f,m),h(f,d),h(d,T),h(f,y)},p(A,O){A[0][A[2]][A[10]]!==void 0?b?b.p(A,O):(b=Ft(A),b.c(),b.m(t,n)):b&&(b.d(1),b=null),O&10&&i!==(i=(A[3][A[8]].documentation?.type?.response_object||A[3][A[8]].documentation?.type?.payload)+"")&&B(o,i),O&15&&u!==(u=A[5](A[3][A[8]].documentation?.description?.response_object||A[3][A[8]].documentation?.description?.payload,A[0][A[2]][A[10]])+"")&&B(_,u),O&10&&g!==(g=Vt(A[3][A[8]].props.label)+"")&&B(p,g),O&10&&C!==(C=A[3][A[8]].props.name+"")&&B(T,C)},d(A){A&&S(t),b&&b.d()}}}function Ut(e){let t,n,r;return n=new bo({props:{margin:!1}}),{c(){t=w("div"),V(n.$$.fragment),E(t,"class","load-wrap svelte-fxtbel")},m(i,o){I(i,t,o),z(n,t,null),r=!0},i(i){r||(x(n.$$.fragment,i),r=!0)},o(i){D(n.$$.fragment,i),r=!1},d(i){i&&S(t),X(n)}}}function as(e){let t,n,r,i,o,s,a,f,l,u,_,c,g=e[1].outputs,p=[];for(let d=0;d// number of seconds to run function call`,u=P(` + }`),_=L(),m&&m.c(),E(i,"class","first-level svelte-fxtbel"),E(a,"class","first-level svelte-fxtbel"),E(l,"class","first-level svelte-fxtbel"),E(n,"class","svelte-fxtbel"),ht(n,"hide",e[4]),E(t,"class","response-wrap svelte-fxtbel")},m(d,C){I(d,t,C),h(t,n),h(n,r),h(n,i),h(n,o);for(let T=0;T{m=null}),ae())},i(d){c||(x(m),c=!0)},o(d){D(m),c=!1},d(d){d&&S(t),ye(p,d),m&&m.d()}}}function ls(e){let t,n,r,i;return r=new at({props:{$$slots:{default:[as]},$$scope:{ctx:e}}}),{c(){t=w("h4"),t.innerHTML=`
+ Response Object`,n=L(),V(r.$$.fragment),E(t,"class","svelte-fxtbel")},m(o,s){I(o,t,s),I(o,n,s),z(r,o,s),i=!0},p(o,[s]){const a={};s&2079&&(a.$$scope={dirty:s,ctx:o}),r.$set(a)},i(o){i||(x(r.$$.fragment,o),i=!0)},o(o){D(r.$$.fragment,o),i=!1},d(o){o&&S(t),o&&S(n),X(r,o)}}}const Vt=e=>e?"'"+e+"'":"the";function ss(e,t,n){let{dependency:r}=t,{dependency_index:i}=t,{instance_map:o}=t,{dependency_outputs:s}=t,{is_running:a}=t,{root:f}=t;const l=(_,c)=>_?.replace("{ROOT}",f)?.replace("{name}",c?JSON.parse(`${c}`)?.name:"{name}");function u(_){s[i][_]=this.value,n(0,s)}return e.$$set=_=>{"dependency"in _&&n(1,r=_.dependency),"dependency_index"in _&&n(2,i=_.dependency_index),"instance_map"in _&&n(3,o=_.instance_map),"dependency_outputs"in _&&n(0,s=_.dependency_outputs),"is_running"in _&&n(4,a=_.is_running),"root"in _&&n(6,f=_.root)},[s,r,i,o,a,l,f,u]}class us extends K{constructor(t){super(),$(this,t,ss,ls,ee,{dependency:1,dependency_index:2,instance_map:3,dependency_outputs:0,is_running:4,root:6})}}function fs(e){let t;return{c(){t=P(e[0])},m(n,r){I(n,t,r)},p(n,r){r&1&&B(t,n[0])},d(n){n&&S(t)}}}function cs(e){let t,n;return t=new ot({props:{size:"sm",$$slots:{default:[fs]},$$scope:{ctx:e}}}),t.$on("click",e[1]),{c(){V(t.$$.fragment)},m(r,i){z(t,r,i),n=!0},p(r,[i]){const o={};i&9&&(o.$$scope={dirty:i,ctx:r}),t.$set(o)},i(r){n||(x(t.$$.fragment,r),n=!0)},o(r){D(t.$$.fragment,r),n=!1},d(r){X(t,r)}}}function _s(e,t,n){let{code:r}=t,i="copy";function o(){navigator.clipboard.writeText(r),n(0,i="copied!"),setTimeout(()=>{n(0,i="copy")},1500)}return e.$$set=s=>{"code"in s&&n(2,r=s.code)},[i,o,r]}class eo extends K{constructor(t){super(),$(this,t,_s,cs,ee,{code:2})}}var ps="https://gradio.s3-us-west-2.amazonaws.com/3.23.0/assets/python.20e39c92.svg",ds="https://gradio.s3-us-west-2.amazonaws.com/3.23.0/assets/javascript.850cf94b.svg";function zt(e,t,n){const r=e.slice();return r[13]=t[n],r[15]=n,r}function Xt(e,t,n){const r=e.slice();return r[13]=t[n],r[15]=n,r}function Bt(e,t,n){const r=e.slice();return r[17]=t[n][0],r[18]=t[n][1],r}function qt(e){let t,n,r,i,o=e[17]+"",s,a,f,l,u;function _(){return e[10](e[17])}return{c(){t=w("li"),n=w("img"),i=L(),s=P(o),a=L(),Pe(n.src,r=e[18])||E(n,"src",r),E(n,"alt",""),E(n,"class","svelte-dks0o4"),E(t,"class",f="snippet "+(e[0]===e[17]?"current-lang":"inactive-lang")+" svelte-dks0o4")},m(c,g){I(c,t,g),h(t,n),h(t,i),h(t,s),h(t,a),l||(u=_e(t,"click",_),l=!0)},p(c,g){e=c,g&1&&f!==(f="snippet "+(e[0]===e[17]?"current-lang":"inactive-lang")+" svelte-dks0o4")&&E(t,"class",f)},d(c){c&&S(t),l=!1,u()}}}function ms(e){let t;return{c(){t=w("pre"),t.textContent="Hello World",E(t,"class","client svelte-dks0o4")},m(n,r){I(n,t,r)},p:re,i:re,o:re,d(n){n&&S(t)}}}function hs(e){let t,n,r,i,o,s,a,f,l=e[5]+"run/"+e[1].api_name,u,_,c,g,p,m,d;n=new eo({props:{code:e[8]?.innerText}});let C=e[6][e[3]],T=[];for(let y=0;y{s[u]=null}),ae()),~n?(r=s[n],r?r.p(f,l):(r=s[n]=o[n](f),r.c()),x(r,1),r.m(t,null)):r=null)},i(f){i||(x(r),i=!0)},o(f){D(r),i=!1},d(f){f&&S(t),~n&&s[n].d()}}}function bs(e){let t,n,r,i,o,s,a=e[9],f=[];for(let l=0;l + Code snippets`,n=L(),r=w("div");for(let l=0;ln(0,l=d);function p(d){we[d?"unshift":"push"](()=>{_=d,n(7,_)})}function m(d){we[d?"unshift":"push"](()=>{c=d,n(8,c)})}return e.$$set=d=>{"dependency"in d&&n(1,r=d.dependency),"dependencies"in d&&n(2,i=d.dependencies),"dependency_index"in d&&n(3,o=d.dependency_index),"instance_map"in d&&n(4,s=d.instance_map),"root"in d&&n(5,a=d.root),"dependency_inputs"in d&&n(6,f=d.dependency_inputs),"current_language"in d&&n(0,l=d.current_language)},[l,r,i,o,s,a,f,_,c,u,g,p,m]}class Es extends K{constructor(t){super(),$(this,t,ys,bs,ee,{dependency:1,dependencies:2,dependency_index:3,instance_map:4,root:5,dependency_inputs:6,current_language:0})}}function Zt(e,t,n){const r=e.slice();return r[11]=t[n],r[13]=n,r}function Ss(e){let t,n;return t=new Bl({props:{root:e[0]}}),t.$on("close",e[10]),{c(){V(t.$$.fragment)},m(r,i){z(t,r,i),n=!0},p(r,i){const o={};i&1&&(o.root=r[0]),t.$set(o)},i(r){n||(x(t.$$.fragment,r),n=!0)},o(r){D(t.$$.fragment,r),n=!1},d(r){X(t,r)}}}function Ts(e){let t,n,r,i,o;n=new Zl({props:{root:e[0],active_api_count:e[7]}}),n.$on("close",e[9]);let s=e[2],a=[];for(let l=0;lD(a[l],1,1,()=>{a[l]=null});return{c(){t=w("div"),V(n.$$.fragment),r=L(),i=w("div");for(let l=0;l{r=null}),ae())},i(i){n||(x(r),n=!0)},o(i){D(r),n=!1},d(i){r&&r.d(i),i&&S(t)}}}function ws(e){let t,n,r,i;const o=[Ts,Ss],s=[];function a(f,l){return f[7]?0:1}return t=a(e),n=s[t]=o[t](e),{c(){n.c(),r=ne()},m(f,l){s[t].m(f,l),I(f,r,l),i=!0},p(f,[l]){n.p(f,l)},i(f){i||(x(n),i=!0)},o(f){D(n),i=!1},d(f){s[t].d(f),f&&S(r)}}}let Is="python";function As(e,t,n){let{instance_map:r}=t,{dependencies:i}=t,{root:o}=t;o===""&&(o=location.protocol+"//"+location.host+location.pathname),o.endsWith("/")||(o+="/");let s=!1,a=i.map(p=>p.inputs.map(m=>{let d=r[m].documentation?.example_data;return d===void 0?d="":typeof d=="object"&&(d=JSON.stringify(d)),d})),f=i.map(p=>new Array(p.outputs.length)),l=i.map(p=>new Array(p.inputs.length).fill(!1)),u=i.filter(p=>p.api_name).length;const _=async p=>{n(3,s=!0);let m=i[p],d=0;try{var C=a[p].map((b,A)=>{d=A;let O=r[m.inputs[A]];return b=ve(b,O.documentation?.type?.input_payload||O.documentation?.type?.payload),n(5,l[p][d]=!1,l),b})}catch{n(5,l[p][d]=!0,l),n(3,s=!1);return}let[T,y]=await yo(`${o}/run/${m.api_name}`,{data:C});n(3,s=!1),y==200?n(4,f[p]=T.data.map((b,A)=>{let O=r[m.outputs[A]];return ve(b,O.documentation?.type?.response_object||O.documentation?.type?.payload,"js")}),f):n(5,l[p]=new Array(l[p].length).fill(!0),l)};on(()=>(document.body.style.overflow="hidden",()=>{document.body.style.overflow="auto"}));function c(p){je.call(this,e,p)}function g(p){je.call(this,e,p)}return e.$$set=p=>{"instance_map"in p&&n(1,r=p.instance_map),"dependencies"in p&&n(2,i=p.dependencies),"root"in p&&n(0,o=p.root)},[o,r,i,s,f,l,a,u,_,c,g]}class Ps extends K{constructor(t){super(),$(this,t,As,ws,ee,{instance_map:1,dependencies:2,root:0})}}var Cs="https://gradio.s3-us-west-2.amazonaws.com/3.23.0/assets/logo.0a070fcf.svg",Os="https://gradio.s3-us-west-2.amazonaws.com/3.23.0/static/img/api-logo.svg";function Qt(e){return document.title=e[3],{c:re,m:re,d:re}}function Kt(e){let t,n;return{c(){t=w("script"),t.async=!0,t.defer=!0,Pe(t.src,n="https://www.googletagmanager.com/gtag/js?id=UA-156449732-1")||E(t,"src",n)},m(r,i){I(r,t,i)},d(r){r&&S(t)}}}function $t(e){let t,n;return t=new Ki({props:{has_modes:e[11].has_modes,component:e[11].component,id:e[11].id,props:e[11].props,children:e[11].children,dynamic_ids:e[16],instance_map:e[13],root:e[1],target:e[5],theme:e[10]}}),t.$on("mount",e[17]),t.$on("destroy",e[24]),{c(){V(t.$$.fragment)},m(r,i){z(t,r,i),n=!0},p(r,i){const o={};i[0]&2048&&(o.has_modes=r[11].has_modes),i[0]&2048&&(o.component=r[11].component),i[0]&2048&&(o.id=r[11].id),i[0]&2048&&(o.props=r[11].props),i[0]&2048&&(o.children=r[11].children),i[0]&8192&&(o.instance_map=r[13]),i[0]&2&&(o.root=r[1]),i[0]&32&&(o.target=r[5]),i[0]&1024&&(o.theme=r[10]),t.$set(o)},i(r){n||(x(t.$$.fragment,r),n=!0)},o(r){D(t.$$.fragment,r),n=!1},d(r){X(t,r)}}}function en(e){let t,n,r,i,o,s,a=e[6]&&tn(e);return{c(){t=w("footer"),a&&a.c(),n=L(),r=w("a"),i=P(`Built with Gradio + `),o=w("img"),Pe(o.src,s=Cs)||E(o,"src",s),E(o,"alt","logo"),E(o,"class","svelte-1lyswbr"),E(r,"href","https://gradio.app"),E(r,"class","built-with svelte-1lyswbr"),E(r,"target","_blank"),E(r,"rel","noreferrer"),E(t,"class","svelte-1lyswbr")},m(f,l){I(f,t,l),a&&a.m(t,null),h(t,n),h(t,r),h(r,i),h(r,o)},p(f,l){f[6]?a?a.p(f,l):(a=tn(f),a.c(),a.m(t,n)):a&&(a.d(1),a=null)},d(f){f&&S(t),a&&a.d()}}}function tn(e){let t,n,r,i,o,s,a,f;return{c(){t=w("button"),n=P("Use via API "),r=w("img"),o=L(),s=w("div"),s.textContent="\xB7",Pe(r.src,i=Os)||E(r,"src",i),E(r,"alt",""),E(r,"class","svelte-1lyswbr"),E(t,"class","show-api svelte-1lyswbr"),E(s,"class","svelte-1lyswbr")},m(l,u){I(l,t,u),h(t,n),h(t,r),I(l,o,u),I(l,s,u),a||(f=_e(t,"click",e[25]),a=!0)},p:re,d(l){l&&S(t),l&&S(o),l&&S(s),a=!1,f()}}}function nn(e){let t,n,r,i,o,s,a,f;return o=new Ps({props:{instance_map:e[13],dependencies:e[2],root:e[1]}}),o.$on("close",e[27]),{c(){t=w("div"),n=w("div"),r=L(),i=w("div"),V(o.$$.fragment),E(n,"class","backdrop svelte-1lyswbr"),E(i,"class","api-docs-wrap svelte-1lyswbr"),E(t,"class","api-docs svelte-1lyswbr")},m(l,u){I(l,t,u),h(t,n),h(t,r),h(t,i),z(o,i,null),s=!0,a||(f=_e(n,"click",e[26]),a=!0)},p(l,u){const _={};u[0]&8192&&(_.instance_map=l[13]),u[0]&4&&(_.dependencies=l[2]),u[0]&2&&(_.root=l[1]),o.$set(_)},i(l){s||(x(o.$$.fragment,l),s=!0)},o(l){D(o.$$.fragment,l),s=!1},d(l){l&&S(t),X(o),a=!1,f()}}}function ks(e){let t,n,r,i,o,s,a,f,l,u=e[8]&&Qt(e),_=e[4]&&Kt(),c=e[0]&&$t(e),g=e[7]&&en(e),p=e[12]&&e[0]&&nn(e);return{c(){u&&u.c(),t=ne(),_&&_.c(),n=ne(),r=L(),i=w("div"),o=w("div"),c&&c.c(),s=L(),g&&g.c(),a=L(),p&&p.c(),f=ne(),E(o,"class","contain"),ie(o,"flex-grow",e[9]?"1":"auto",!1),E(i,"class","wrap svelte-1lyswbr"),ie(i,"min-height",e[9]?"100%":"auto",!1)},m(m,d){u&&u.m(document.head,null),h(document.head,t),_&&_.m(document.head,null),h(document.head,n),I(m,r,d),I(m,i,d),h(i,o),c&&c.m(o,null),h(i,s),g&&g.m(i,null),I(m,a,d),p&&p.m(m,d),I(m,f,d),l=!0},p(m,d){m[8]?u||(u=Qt(m),u.c(),u.m(t.parentNode,t)):u&&(u.d(1),u=null),m[4]?_||(_=Kt(),_.c(),_.m(n.parentNode,n)):_&&(_.d(1),_=null),m[0]?c?(c.p(m,d),d[0]&1&&x(c,1)):(c=$t(m),c.c(),x(c,1),c.m(o,null)):c&&(oe(),D(c,1,1,()=>{c=null}),ae()),d[0]&512&&ie(o,"flex-grow",m[9]?"1":"auto",!1),m[7]?g?g.p(m,d):(g=en(m),g.c(),g.m(i,null)):g&&(g.d(1),g=null),d[0]&512&&ie(i,"min-height",m[9]?"100%":"auto",!1),m[12]&&m[0]?p?(p.p(m,d),d[0]&4097&&x(p,1)):(p=nn(m),p.c(),x(p,1),p.m(f.parentNode,f)):p&&(oe(),D(p,1,1,()=>{p=null}),ae())},i(m){l||(x(c),x(p),l=!0)},o(m){D(c),D(p),l=!1},d(m){u&&u.d(m),S(t),_&&_.d(m),S(n),m&&S(r),m&&S(i),c&&c.d(),g&&g.d(),m&&S(a),p&&p.d(m),m&&S(f)}}}function rn(e,t,n){let r=0;for(;;){const i=n[r];if(i===void 0)break;let o=0;for(;;){const s=i[t][o];if(s===void 0)break;if(s===e)return!0;o++}r++}return!1}function xs(e){return Array.isArray(e)&&e.length===0||e===""||e===0||!e}function Ls(e,t,n){let r;Ml();let{root:i}=t,{components:o}=t,{layout:s}=t,{dependencies:a}=t,{title:f="Gradio"}=t,{analytics_enabled:l=!1}=t,{target:u}=t,{autoscroll:_}=t,{show_api:c=!0}=t,{show_footer:g=!0}=t,{control_page_title:p=!1}=t,{app_mode:m}=t,{theme:d}=t,{app:C}=t,T=Eo();So(e,T,v=>n(23,r=v));let y={id:s.id,type:"column",props:{},has_modes:!1,instance:{},component:{}};o.push(y);const b=Object.getPrototypeOf(async function(){}).constructor;a.forEach(v=>{if(v.js){const k=v.backend_fn?v.inputs.length===1:v.outputs.length===1;try{v.frontend_fn=new b("__fn_args",`let result = await (${v.js})(...__fn_args); + return ${k} ? [result] : result;`)}catch(R){console.error("Could not parse custom js method."),console.error(R)}}});let O=new URLSearchParams(window.location.search).get("view")==="api";const J=v=>{n(12,O=v);let k=new URLSearchParams(window.location.search);v?k.set("view","api"):k.delete("view"),history.replaceState(null,"","?"+k.toString())},ke=o.reduce((v,{id:k,props:R})=>{const N=rn(k,"inputs",a),H=rn(k,"outputs",a);return!N&&!H&&xs(R?.value)&&v.add(k),N&&v.add(k),v},new Set);let q=o.reduce((v,k)=>(v[k.id]=k,v),{});function W(v){return new Promise(async(k,R)=>{try{const N=await qa[v]();k({name:v,component:N})}catch(N){console.error("failed to load: "+v),console.error(N),R(N)}})}const le=new Set,te=new Map;async function ft(v){let k=q[v.id];const R=(await te.get(k.type)).component;k.component=R.Component,R.document&&(k.documentation=R.document(k.props)),R.modes&&R.modes.length>1&&(k.has_modes=!0),v.children&&(k.children=v.children.map(N=>q[N.id]),await Promise.all(v.children.map(N=>ft(N))))}o.forEach(async v=>{const k=W(v.type);le.add(k),te.set(v.type,k)});let{ready:Ve=!1}=t;Promise.all(Array.from(le)).then(()=>{ft(s).then(async()=>{n(0,Ve=!0)}).catch(v=>{console.error(v)})});function ct(v,k){const R=a[k].outputs;v.forEach((N,H)=>{if(typeof N=="object"&&N!==null&&N.__type__==="update"){for(const[ue,Y]of Object.entries(N))ue!=="__type__"&&n(13,q[R[H]].props[ue]=Y,q);n(11,y)}else n(13,q[R[H]].props.value=N,q)})}C.on("data",({data:v,fn_index:k})=>{ct(v,k);let R=T.get_status_for_fn(k);(R==="complete"||R==="error")&&a.forEach((N,H)=>{N.trigger_after===k&&(!N.trigger_only_on_success||R==="complete")&&ze(H,null)})}),C.on("status",({fn_index:v,...k})=>{T.update({...k,fn_index:v})});function _t(v,k,R){v?.props||(v.props={}),v.props[k]=R,n(11,y)}let se=[];const ze=(v,k)=>{let R=a[v];const N=T.get_status_for_fn(v);if(N==="pending"||N==="generating")return;R.cancels&&R.cancels.forEach(Y=>{C.cancel("/predict",Y)});let H={fn_index:v,data:R.inputs.map(Y=>q[Y].props.value),event_data:R.collects_event_data?k:null};R.frontend_fn?R.frontend_fn(H.data.concat(R.outputs.map(Y=>q[Y].props.value))).then(Y=>{R.backend_fn?(H.data=Y,ue()):ct(Y,v)}):R.backend_fn&&ue();function ue(){C.predict("/predict",H)}};async function to(){await wo();for(var v=u.getElementsByTagName("a"),k=0;k{let{targets:H,trigger:ue,inputs:Y,outputs:lo}=R;const so=H.map(Q=>[Q,q[Q]]);H.length===0&&!se[N]?.includes(-1)&&ue==="load"&&lo.every(Q=>q?.[Q].instance)&&Y.every(Q=>q?.[Q].instance)&&(ze(N,null),se[N]=[-1]),so.filter(Q=>!!Q&&!!Q[1]).forEach(([Q,{instance:dt}])=>{se[N]?.includes(Q)||!dt||(dt?.$on(ue,uo=>{ze(N,uo.detail)}),se[N]||(se[N]=[]),se[N].push(Q))})})}function pt(v){se=se.map(k=>k.filter(R=>R!==v))}a.forEach((v,k)=>{T.register(k,v.inputs,v.outputs)});function no(v){for(const R in v){let N=v[R],H=a[N.fn_index];N.scroll_to_output=H.scroll_to_output,N.visible=H.show_progress,_t(q[R],"loading_status",N)}const k=T.get_inputs_to_update();for(const[R,N]of k)_t(q[R],"pending",N==="pending")}const ro=({detail:v})=>pt(v),io=()=>{J(!O)},oo=()=>{J(!1)},ao=()=>{J(!1)};return e.$$set=v=>{"root"in v&&n(1,i=v.root),"components"in v&&n(19,o=v.components),"layout"in v&&n(20,s=v.layout),"dependencies"in v&&n(2,a=v.dependencies),"title"in v&&n(3,f=v.title),"analytics_enabled"in v&&n(4,l=v.analytics_enabled),"target"in v&&n(5,u=v.target),"autoscroll"in v&&n(21,_=v.autoscroll),"show_api"in v&&n(6,c=v.show_api),"show_footer"in v&&n(7,g=v.show_footer),"control_page_title"in v&&n(8,p=v.control_page_title),"app_mode"in v&&n(9,m=v.app_mode),"theme"in v&&n(10,d=v.theme),"app"in v&&n(22,C=v.app),"ready"in v&&n(0,Ve=v.ready)},e.$$.update=()=>{e.$$.dirty[0]&2097152&&To.update(v=>({...v,autoscroll:_})),e.$$.dirty[0]&8388608&&no(r)},[Ve,i,a,f,l,u,c,g,p,m,d,y,O,q,T,J,ke,to,pt,o,s,_,C,r,ro,io,oo,ao]}class Rs extends K{constructor(t){super(),$(this,t,Ls,ks,ee,{root:1,components:19,layout:20,dependencies:2,title:3,analytics_enabled:4,target:5,autoscroll:21,show_api:6,show_footer:7,control_page_title:8,app_mode:9,theme:10,app:22,ready:0},null,[-1,-1])}}var Ms=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:Rs});export{Ms as B,Ds as X}; diff --git a/gradio/templates/cdn/assets/Blocks.1c8a32b7.js.map b/gradio/templates/cdn/assets/Blocks.1c8a32b7.js.map new file mode 100644 index 0000000000000000000000000000000000000000..88a1eb9d138faed88526f40eea6a426c7d280f16 --- /dev/null +++ b/gradio/templates/cdn/assets/Blocks.1c8a32b7.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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AAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAA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","names":["e","t","n","getLocaleFromNavigator","api_logo"],"sources":["../../../../ui/node_modules/.pnpm/deepmerge@4.2.2/node_modules/deepmerge/dist/cjs.js","../../../../ui/node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.5/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.5/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.5/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","../../../../ui/node_modules/.pnpm/@formatjs+fast-memoize@1.2.1/node_modules/@formatjs/fast-memoize/lib/index.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/src/error.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/src/formatters.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/src/core.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/index.js","../../../../ui/node_modules/.pnpm/svelte-i18n@3.3.13_svelte@3.49.0/node_modules/svelte-i18n/dist/runtime.esm.js","../../../../ui/packages/app/src/components/directory.ts","../../../../ui/packages/app/src/i18n.ts","../../../../ui/packages/app/src/Render.svelte","../../../../ui/packages/app/src/api_docs/img/clear.svelte","../../../../ui/packages/app/src/api_docs/NoApi.svelte","../../../../ui/packages/app/src/api_docs/utils.ts","../../../../ui/packages/app/src/api_docs/img/api-logo.svg","../../../../ui/packages/app/src/api_docs/ApiBanner.svelte","../../../../ui/packages/app/src/api_docs/EndpointDetail.svelte","../../../../ui/packages/app/src/api_docs/InputPayload.svelte","../../../../ui/packages/app/src/api_docs/ResponseObject.svelte","../../../../ui/packages/app/src/api_docs/CopyButton.svelte","../../../../ui/packages/app/src/api_docs/img/python.svg","../../../../ui/packages/app/src/api_docs/img/javascript.svg","../../../../ui/packages/app/src/api_docs/CodeSnippets.svelte","../../../../ui/packages/app/src/api_docs/ApiDocs.svelte","../../../../ui/packages/app/src/images/logo.svg","../../../../../../../../../static/img/api-logo.svg","../../../../ui/packages/app/src/Blocks.svelte"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: skeleton,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(skeleton)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n","//\n// Main\n//\nexport default function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\".concat(value)];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale =\n new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0,\n },\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","import{writable as e,derived as n}from\"svelte/store\";import t from\"deepmerge\";import o from\"intl-messageformat\";const r={},i=(e,n,t)=>t?(n in r||(r[n]={}),e in r[n]||(r[n][e]=t),t):t,l=(e,n)=>{if(null==n)return;if(n in r&&e in r[n])return r[n][e];const t=E(n);for(let o=0;o0){const n=t.slice(e,t.length).join(\".\");if(n in o){o=o[n];break}}o=o[t[e]]}else o=void 0;return o}(function(e){return a[e]||null}(e),n)}function m(e,...n){delete r[e],s.update((o=>(o[e]=t.all([o[e]||{},...n]),o)))}const f=n([s],(([e])=>Object.keys(e)));s.subscribe((e=>a=e));const d={};function g(e){return d[e]}function w(e){return null!=e&&E(e).some((e=>{var n;return null===(n=g(e))||void 0===n?void 0:n.size}))}function h(e,n){return Promise.all(n.map((n=>(function(e,n){d[e].delete(n),0===d[e].size&&delete d[e]}(e,n),n().then((e=>e.default||e)))))).then((n=>m(e,...n)))}const p={};function b(e){if(!w(e))return e in p?p[e]:Promise.resolve();const n=function(e){return E(e).map((e=>{const n=g(e);return[e,n?[...n]:[]]})).filter((([,e])=>e.length>0))}(e);return p[e]=Promise.all(n.map((([e,n])=>h(e,n)))).then((()=>{if(w(e))return b(e);delete p[e]})),p[e]}function y(e,n){g(e)||function(e){d[e]=new Set}(e);const t=g(e);g(e).has(n)||(u(e)||s.update((n=>(n[e]={},n))),t.add(n))}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */function v(e,n){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&n.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);rt.slice(0,n+1).join(\"-\"))).reverse()}function E(e,n=j().fallbackLocale){const t=x(e);return n?[...new Set([...t,...x(n)])]:t}function D(){return null!=L?L:void 0}T.subscribe((e=>{L=null!=e?e:void 0,\"undefined\"!=typeof window&&null!=e&&document.documentElement.setAttribute(\"lang\",e)}));const M=Object.assign(Object.assign({},T),{set:e=>{if(e&&function(e){if(null==e)return;const n=E(e);for(let e=0;ek.set(!0)),n):k.set(!0),b(e).then((()=>{T.set(e)})).finally((()=>{clearTimeout(t),k.set(!1)}))}return T.set(e)}}),P=(e,n)=>{const t=e.split(\"&\").find((e=>0===e.indexOf(`${n}=`)));return t?t.split(\"=\").pop():null},S=(e,n)=>{const t=n.exec(e);return t&&t[1]||null},N=e=>\"undefined\"==typeof window?null:S(window.location.hostname,e),A=e=>\"undefined\"==typeof window?null:S(window.location.pathname,e),I=()=>\"undefined\"==typeof window?null:window.navigator.language||window.navigator.languages[0],F=e=>\"undefined\"==typeof window?null:P(window.location.search.substr(1),e),z=e=>\"undefined\"==typeof window?null:P(window.location.hash.substr(1),e),Z=e=>{const n=Object.create(null);return t=>{const o=JSON.stringify(t);return o in n?n[o]:n[o]=e(t)}},C=(e,n)=>{const{formats:t}=j();if(e in t&&n in t[e])return t[e][n];throw new Error(`[svelte-i18n] Unknown \"${n}\" ${e} format.`)},G=Z((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format numbers');return t&&(o=C(\"number\",t)),new Intl.NumberFormat(n,o)})),J=Z((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format dates');return t?o=C(\"date\",t):0===Object.keys(o).length&&(o=C(\"date\",\"short\")),new Intl.DateTimeFormat(n,o)})),U=Z((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format time values');return t?o=C(\"time\",t):0===Object.keys(o).length&&(o=C(\"time\",\"short\")),new Intl.DateTimeFormat(n,o)})),_=(e={})=>{var{locale:n=D()}=e,t=v(e,[\"locale\"]);return G(Object.assign({locale:n},t))},q=(e={})=>{var{locale:n=D()}=e,t=v(e,[\"locale\"]);return J(Object.assign({locale:n},t))},B=(e={})=>{var{locale:n=D()}=e,t=v(e,[\"locale\"]);return U(Object.assign({locale:n},t))},H=Z(((e,n=D())=>new o(e,n,j().formats,{ignoreTag:j().ignoreTag}))),K=(e,n={})=>{let t=n;\"object\"==typeof e&&(t=e,e=t.id);const{values:o,locale:r=D(),default:i}=t;if(null==r)throw new Error(\"[svelte-i18n] Cannot format a message without first setting the initial locale.\");let a=l(e,r);if(a){if(\"string\"!=typeof a)return console.warn(`[svelte-i18n] Message with id \"${e}\" must be of type \"string\", found: \"${typeof a}\". Gettin its value through the \"$format\" method is deprecated; use the \"json\" method instead.`),a}else j().warnOnMissingMessages&&console.warn(`[svelte-i18n] The message \"${e}\" was not found in \"${E(r).join('\", \"')}\".${w(D())?\"\\n\\nNote: there are at least one loader still registered to this locale that wasn't executed.\":\"\"}`),a=null!=i?i:e;if(!o)return a;let s=a;try{s=H(a,r).format(o)}catch(n){console.warn(`[svelte-i18n] Message \"${e}\" has syntax error:`,n.message)}return s},Q=(e,n)=>B(n).format(e),R=(e,n)=>q(n).format(e),V=(e,n)=>_(n).format(e),W=(e,n=D())=>l(e,n),X=n([M,s],(()=>K)),Y=n([M],(()=>Q)),ee=n([M],(()=>R)),ne=n([M],(()=>V)),te=n([M,s],(()=>W));function oe(e){return e}function re(e){return b(e||D()||j().initialLocale)}export{X as _,m as addMessages,ee as date,oe as defineMessages,s as dictionary,X as format,q as getDateFormatter,z as getLocaleFromHash,N as getLocaleFromHostname,I as getLocaleFromNavigator,A as getLocaleFromPathname,F as getLocaleFromQueryString,H as getMessageFormatter,_ as getNumberFormatter,B as getTimeFormatter,$ as init,k as isLoading,te as json,M as locale,f as locales,ne as number,y as register,X as t,Y as time,re as waitLocale};\n","export const component_map = {\n\taccordion: () => import(\"./Accordion\"),\n\taudio: () => import(\"./Audio\"),\n\tbox: () => import(\"./Box\"),\n\tbutton: () => import(\"./Button\"),\n\tchatbot: () => import(\"./Chatbot\"),\n\tcheckbox: () => import(\"./Checkbox\"),\n\tcheckboxgroup: () => import(\"./CheckboxGroup\"),\n\tcode: () => import(\"./Code\"),\n\tcolorpicker: () => import(\"./ColorPicker\"),\n\tcolumn: () => import(\"./Column\"),\n\tdataframe: () => import(\"./DataFrame\"),\n\tdataset: () => import(\"./Dataset\"),\n\tdropdown: () => import(\"./Dropdown\"),\n\tfile: () => import(\"./File\"),\n\tform: () => import(\"./Form\"),\n\tgallery: () => import(\"./Gallery\"),\n\tgroup: () => import(\"./Group\"),\n\thighlightedtext: () => import(\"./HighlightedText\"),\n\thtml: () => import(\"./HTML\"),\n\timage: () => import(\"./Image\"),\n\tinterpretation: () => import(\"./Interpretation\"),\n\tjson: () => import(\"./Json\"),\n\tlabel: () => import(\"./Label\"),\n\tmarkdown: () => import(\"./Markdown\"),\n\tmodel3d: () => import(\"./Model3D\"),\n\tnumber: () => import(\"./Number\"),\n\tplot: () => import(\"./Plot\"),\n\tradio: () => import(\"./Radio\"),\n\trow: () => import(\"./Row\"),\n\tslider: () => import(\"./Slider\"),\n\tstate: () => import(\"./State\"),\n\tstatustracker: () => import(\"./StatusTracker\"),\n\ttabs: () => import(\"./Tabs\"),\n\ttabitem: () => import(\"./TabItem\"),\n\ttextbox: () => import(\"./Textbox\"),\n\ttimeseries: () => import(\"./TimeSeries\"),\n\tuploadbutton: () => import(\"./UploadButton\"),\n\tvideo: () => import(\"./Video\")\n};\n","/// \n\nimport { addMessages, init, getLocaleFromNavigator } from \"svelte-i18n\";\n\nconst langs = import.meta.globEager(\"./lang/*.json\");\n\nexport function process_langs() {\n\tlet _langs: Record<\n\t\tstring,\n\t\t{\n\t\t\t[key: string]: any;\n\t\t}\n\t> = {};\n\n\tfor (const lang in langs) {\n\t\tconst code = (lang.split(\"/\").pop() as string).split(\".\").shift() as string;\n\t\t_langs[code] = langs[lang].default;\n\t}\n\n\treturn _langs;\n}\n\nconst processed_langs = process_langs();\n\nfor (const lang in processed_langs) {\n\taddMessages(lang, processed_langs[lang]);\n}\n\nexport function setupi18n() {\n\tinit({\n\t\tfallbackLocale: \"en\",\n\t\tinitialLocale: getLocaleFromNavigator()\n\t});\n}\n","\n\n\n\t{#if children && children.length}\n\t\t{#each children as { component, id: each_id, props, children: _children, has_modes } (each_id)}\n\t\t\t\n\t\t{/each}\n\t{/if}\n\n","\n\t\n\t\t\n\t\t\n\t\n\n","\n\n
\n\t

API Docs

\n\t

\n\t\tNo named API Routes found for\n\t\t\n\t\t\t{root}\n\t\t\n\t

\n\t

\n\t\tTo expose an API endpoint of your app in this page, set the \n\t\t\tapi_name\n\t\t\n\t\tparameter of the event listener.\n\t\t
\n\t\tFor more information, visit the\n\t\t\n\t\t\tAPI Page guide\n\t\t\n\t\t. To hide the API documentation button and this page, set\n\t\tshow_api=False\n\t\tin the\n\t\tBlocks.launch()\n\t\tmethod.\n\t

\n
\n\n\n\n\n","export function represent_value(\n\tvalue: string,\n\ttype: string | undefined,\n\tlang: \"js\" | \"py\" | null = null\n) {\n\tif (type === undefined) {\n\t\treturn lang === \"py\" ? \"None\" : null;\n\t}\n\tif (type === \"string\") {\n\t\treturn lang === null ? value : '\"' + value + '\"';\n\t} else if (type === \"number\") {\n\t\treturn lang === null ? parseFloat(value) : value;\n\t} else if (type === \"boolean\") {\n\t\tif (lang === \"py\") {\n\t\t\treturn value === \"true\" ? \"True\" : \"False\";\n\t\t} else if (lang === \"js\") {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn value === \"true\";\n\t\t}\n\t} else {\n\t\t// assume object type\n\t\tif (lang === null) {\n\t\t\treturn value === \"\" ? null : JSON.parse(value);\n\t\t} else if (typeof value === \"string\") {\n\t\t\tif (value === \"\") {\n\t\t\t\treturn lang === \"py\" ? \"None\" : \"null\";\n\t\t\t}\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn JSON.stringify(value);\n\t\t}\n\t}\n}\n","export default \"__VITE_ASSET__5346f193__\"","\n\n

\n\t\"\"\n\tAPI documentation for \n\t\n\t\t{root}\n\t\n

\n{#if active_api_count > 1}\n\t
\n\t\t{active_api_count} API endpoints:\n\t
\n{/if}\n\n\n\n\n","\n\n

\n\tPOST\n\t/run/{api_name}\n

\n
\n\t
\n\t\t{root}run/{api_name}\n\t\t\n\t
\n
\n\n\n","\n\n

\n\t
\n\t\t
\n\t
\n\tInput Payload\n

\n\n\t
\n\t\t{\n\t\t
\"data\": [
\n\t\t{#each dependency.inputs as component_id, component_index}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{#if dependency_failures[dependency_index][component_index]}\n\t\t\t\t\tERROR\n\t\t\t\t{/if}\n\n\t\t\t\t\n\t\t\t\t\t: {instance_map[component_id].documentation?.type?.input_payload ||\n\t\t\t\t\t\tinstance_map[component_id].documentation?.type?.payload},\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t// represents {instance_map[component_id].documentation?.description\n\t\t\t\t\t\t?.input_payload ||\n\t\t\t\t\t\tinstance_map[component_id].documentation?.description?.payload} of\n\t\t\t\t\t{format_label(instance_map[component_id].props.label)}\n\t\t\t\t\t\n\t\t\t\t\t\t{instance_map[component_id].props.name}\n\t\t\t\t\t\n\t\t\t\t\tcomponent\n\t\t\t\t\n\t\t\t
\n\t\t{/each}\n\t\t
]
\n\t\t}\n\t
\n
\n\n\n\n\tTry It Out\n\n\n\n","\n\n

\n\t
\n\t\t
\n\t
\n\tResponse Object\n

\n\n\t
\n\t\t
\n\t\t\t{\n\t\t\t
\"data\": [
\n\t\t\t{#each dependency.outputs as component_id, component_index}\n\t\t\t\t
\n\t\t\t\t\t{#if dependency_outputs[dependency_index][component_index] !== undefined}\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\t{/if}\n\t\t\t\t\t\n\t\t\t\t\t\t{instance_map[component_id].documentation?.type?.response_object ||\n\t\t\t\t\t\t\tinstance_map[component_id].documentation?.type?.payload},\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t// represents {format_url(\n\t\t\t\t\t\t\tinstance_map[component_id].documentation?.description\n\t\t\t\t\t\t\t\t?.response_object ||\n\t\t\t\t\t\t\t\tinstance_map[component_id].documentation?.description?.payload,\n\t\t\t\t\t\t\tdependency_outputs[dependency_index][component_index]\n\t\t\t\t\t\t)} of\n\t\t\t\t\t\t{((label) => {\n\t\t\t\t\t\t\treturn label ? \"'\" + label + \"'\" : \"the\";\n\t\t\t\t\t\t})(instance_map[component_id].props.label)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{instance_map[component_id].props.name}\n\t\t\t\t\t\t\n\t\t\t\t\t\tcomponent\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t{/each}\n\t\t\t
],
\n\t\t\t
\n\t\t\t\t\"duration\": (float)\n\t\t\t\t// number of seconds to run function call\n\t\t\t
\n\t\t\t}\n\t\t
\n\t\t{#if is_running}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t{/if}\n\t
\n
\n\n\n","\n\n\n","export default \"__VITE_ASSET__20e39c92__\"","export default \"__VITE_ASSET__850cf94b__\"","\n\n

\n\t\n\t\t\n\t\n\tCode snippets\n

\n
\n\t{#each langs as [language, img]}\n\t\t (current_language = language)}\n\t\t>\n\t\t\t\"\"\n\t\t\t{language}\n\t\t\n\t{/each}\n
\n\n\n\t\n\t\t{#if current_language === \"python\"}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
import requests\n\nresponse = requests.post(\"{root + \"run/\" + dependency.api_name}\", json={\n\t\"data\": [{#each dependency_inputs[dependency_index] as component_value, component_index}\t\t{represent_value(\n\t\t\t\t\t\t\t\tcomponent_value,\n\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t].documentation?.type?.input_payload ||\n\t\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t\t].documentation?.type?.payload,\n\t\t\t\t\t\t\t\t\"py\"\n\t\t\t\t\t\t\t)},{/each}\n\t]\n}).json()\n\ndata = response[\"data\"]
\n\t\t\t
\n\t\t{:else if current_language === \"javascript\"}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
const response = await fetch(\"{root + \"run/\" + dependency.api_name}\", {\n\tmethod: \"POST\",\n\theaders: { \"Content-Type\": \"application/json\" },\n\tbody: JSON.stringify({\n\t\tdata: [{#each dependency_inputs[dependency_index] as component_value, component_index}\t\t\t{represent_value(\n\t\t\t\t\t\t\t\tcomponent_value,\n\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t].documentation?.type?.input_payload ||\n\t\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t\t].documentation?.type?.payload,\n\t\t\t\t\t\t\t\t\"js\"\n\t\t\t\t\t\t\t)},{/each}\n\t\t]\n\t})\n});\n\nconst data = await response.json();\n
\n\t\t\t
\n\t\t{:else if current_language === \"gradio client\"}\n\t\t\t
Hello World
\n\t\t{/if}\n\t
\n
\n\n\n","\n\n{#if active_api_count}\n\t
\n\t\t\n\t
\n\t
\n\t\t{#each dependencies as dependency, dependency_index}\n\t\t\t{#if dependency.api_name}\n\t\t\t\t
\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t{/if}\n\t\t{/each}\n\t
\n{:else}\n\t\n{/if}\n\n\n","export default \"__VITE_ASSET__0a070fcf__\"","export default \"https://gradio.s3-us-west-2.amazonaws.com/3.23.0/static/img/api-logo.svg\"","\n\n\n\t{#if control_page_title}\n\t\t{title}\n\t{/if}\n\t{#if analytics_enabled}\n\t\t\n\t{/if}\n\n\n
\n\t
\n\t\t{#if ready}\n\t\t\t handle_destroy(detail)}\n\t\t\t/>\n\t\t{/if}\n\t
\n\n\t{#if show_footer}\n\t\t
\n\t\t\t{#if show_api}\n\t\t\t\t {\n\t\t\t\t\t\tset_api_docs_visible(!api_docs_visible);\n\t\t\t\t\t}}\n\t\t\t\t\tclass=\"show-api\"\n\t\t\t\t>\n\t\t\t\t\tUse via API \"\"\n\t\t\t\t\n\t\t\t\t
·
\n\t\t\t{/if}\n\t\t\t\n\t\t\t\tBuilt with Gradio\n\t\t\t\t\"logo\"\n\t\t\t\n\t\t
\n\t{/if}\n
\n\n{#if api_docs_visible && ready}\n\t
\n\t\t {\n\t\t\t\tset_api_docs_visible(false);\n\t\t\t}}\n\t\t/>\n\t\t
\n\t\t\t {\n\t\t\t\t\tset_api_docs_visible(false);\n\t\t\t\t}}\n\t\t\t\t{instance_map}\n\t\t\t\t{dependencies}\n\t\t\t\t{root}\n\t\t\t/>\n\t\t
\n\t
\n{/if}\n\n\n"],"file":"assets/Blocks.1c8a32b7.js"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css b/gradio/templates/cdn/assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css new file mode 100644 index 0000000000000000000000000000000000000000..e51e137574fa640199388db40f7111760b175f10 --- /dev/null +++ b/gradio/templates/cdn/assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css @@ -0,0 +1 @@ +label.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70{display:flex;align-items:center;cursor:pointer;color:var(--body-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}label.svelte-1ojmf70>.svelte-1ojmf70+.svelte-1ojmf70{margin-left:var(--size-2)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70{--ring-color:transparent;position:relative;box-shadow:var(--input-shadow);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-background-color);line-height:var(--line-sm)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:checked,input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:checked:hover,input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:checked:focus{border-color:var(--checkbox-border-color-selected);background-image:var(--checkbox-check);background-color:var(--checkbox-background-color-selected)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:hover{border-color:var(--checkbox-border-color-hover);background-color:var(--checkbox-background-color-hover)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:focus{border-color:var(--checkbox-border-color-focus);background-color:var(--checkbox-background-color-focus)}input[disabled].svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70,.disabled.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70{cursor:not-allowed}.wrap.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{display:flex;flex-wrap:wrap;gap:var(--checkbox-label-gap)}label.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{display:flex;align-items:center;transition:var(--button-transition);cursor:pointer;box-shadow:var(--checkbox-label-shadow);border:var(--checkbox-label-border-width) solid var(--checkbox-label-border-color);border-radius:var(--button-small-radius);background:var(--checkbox-label-background-fill);padding:var(--checkbox-label-padding);color:var(--checkbox-label-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}label.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:hover{background:var(--checkbox-label-background-fill-hover)}label.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:focus{background:var(--checkbox-label-background-fill-focus)}label.selected.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{background:var(--checkbox-label-background-fill-selected);color:var(--checkbox-label-text-color-selected)}label.svelte-1qxcj04>.svelte-1qxcj04+.svelte-1qxcj04{margin-left:var(--size-2)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{--ring-color:transparent;position:relative;box-shadow:var(--checkbox-shadow);border:var(--checkbox-border-width) solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-background-color);line-height:var(--line-sm)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:checked,input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:checked:hover,input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:checked:focus{border-color:var(--checkbox-border-color-selected);background-image:var(--checkbox-check);background-color:var(--checkbox-background-color-selected)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:hover{border-color:var(--checkbox-border-color-hover);background-color:var(--checkbox-background-color-hover)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:focus{border-color:var(--checkbox-border-color-focus);background-color:var(--checkbox-background-color-focus)}input[disabled].svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04,.disabled.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{cursor:not-allowed}.options.svelte-1oas11n{--window-padding:var(--size-8);position:absolute;z-index:var(--layer-5);margin-left:0;box-shadow:var(--shadow-drop-lg);border-radius:var(--container-radius);background:var(--background-fill-primary);width:var(--size-full);overflow:auto;color:var(--body-text-color);list-style:none}.item.svelte-1oas11n{display:flex;cursor:pointer;padding:var(--size-2)}.item.svelte-1oas11n:hover,.active.svelte-1oas11n{background:var(--background-fill-secondary)}.inner-item.svelte-1oas11n{padding-right:var(--size-1)}.hide.svelte-1oas11n{visibility:hidden}.wrap.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{position:relative;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--border-color-primary);border-radius:var(--input-radius);background:var(--input-background-fill)}.wrap.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r:focus-within{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}.wrap-inner.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{display:flex;position:relative;flex-wrap:wrap;align-items:center;gap:var(--checkbox-label-gap);padding:var(--checkbox-label-gap)}.token.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{display:flex;align-items:center;transition:var(--button-transition);cursor:pointer;box-shadow:var(--checkbox-label-shadow);border:var(--checkbox-label-border-width) solid var(--checkbox-label-border-color);border-radius:var(--button-small-radius);background:var(--checkbox-label-background-fill);padding:var(--checkbox-label-padding);color:var(--checkbox-label-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}.token.svelte-a6vu2r>.svelte-a6vu2r+.svelte-a6vu2r{margin-left:var(--size-2)}.token-remove.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{fill:var(--body-text-color);display:flex;justify-content:center;align-items:center;cursor:pointer;border:var(--checkbox-border-width) solid var(--border-color-primary);border-radius:var(--radius-full);background:var(--background-fill-primary);padding:var(--size-0-5);width:18px;height:18px}.single-select.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{margin:var(--spacing-sm);color:var(--body-text-color)}.secondary-wrap.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{display:flex;flex:1 1 0%;align-items:center;border:none;min-width:min-content}input.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{margin:var(--spacing-sm);outline:none;border:none;background:inherit;width:var(--size-full);color:var(--body-text-color);font-size:var(--input-text-size)}input.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r:disabled{cursor:not-allowed}.remove-all.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{margin-left:var(--size-1);width:20px;height:20px}input[type=number].svelte-1nnxs9b{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius);background:var(--input-background-fill);padding:var(--input-padding);width:100%;color:var(--body-text-color);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-1nnxs9b:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-1nnxs9b::placeholder{color:var(--input-placeholder-color)}.wrap.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{display:flex;flex-wrap:wrap;gap:var(--checkbox-label-gap)}label.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{display:flex;align-items:center;transition:var(--button-transition);cursor:pointer;box-shadow:var(--checkbox-label-shadow);border:var(--checkbox-label-border-width) solid var(--checkbox-label-border-color);border-radius:var(--button-small-radius);background:var(--checkbox-label-background-fill);padding:var(--checkbox-label-padding);color:var(--checkbox-label-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}label.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:hover{background:var(--checkbox-label-background-fill-hover)}label.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:focus{background:var(--checkbox-label-background-fill-focus)}label.selected.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{background:var(--checkbox-label-background-fill-selected);color:var(--checkbox-label-text-color-selected)}label.svelte-1p9xokt>.svelte-1p9xokt+.svelte-1p9xokt{margin-left:var(--size-2)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{--ring-color:transparent;position:relative;box-shadow:var(--checkbox-shadow);border:var(--checkbox-border-width) solid var(--checkbox-border-color);border-radius:var(--radius-full);background-color:var(--checkbox-background-color);line-height:var(--line-sm)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:checked,input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:checked:hover,input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:checked:focus{border-color:var(--checkbox-border-color-selected);background-image:var(--radio-circle);background-color:var(--checkbox-background-color-selected)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:hover{border-color:var(--checkbox-border-color-hover);background-color:var(--checkbox-background-color-hover)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:focus{border-color:var(--checkbox-border-color-focus);background-color:var(--checkbox-background-color-focus)}input[disabled].svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt,.disabled.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{cursor:not-allowed}label.svelte-4xt1ch{display:block;width:100%}input[type=text].svelte-4xt1ch,input[type=password].svelte-4xt1ch,input[type=email].svelte-4xt1ch,textarea.svelte-4xt1ch{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius);background:var(--input-background-fill);padding:var(--input-padding);width:100%;color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-4xt1ch:focus,textarea.svelte-4xt1ch:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-4xt1ch::placeholder,textarea.svelte-4xt1ch::placeholder{color:var(--input-placeholder-color)}button.svelte-4xt1ch{display:flex;position:absolute;top:var(--block-label-margin);right:var(--block-label-margin);align-items:center;box-shadow:var(--shadow-drop);border:1px solid var(--color-border-primary);border-top:none;border-right:none;border-radius:var(--block-label-right-radius);background:var(--block-label-background-fill);padding:5px;width:22px;height:22px;overflow:hidden;color:var(--block-label-color);font:var(--font-sans);font-size:var(--button-small-text-size)}.wrap.svelte-jigama{display:flex;flex-direction:column;width:100%}.head.svelte-jigama{display:flex;justify-content:space-between}input[type=number].svelte-jigama{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius);background:var(--input-background-fill);padding:var(--size-2) var(--size-2);height:var(--size-6);color:var(--body-text-color);font-size:var(--input-text-size);line-height:var(--line-sm);text-align:center}input[type=number].svelte-jigama:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-jigama::placeholder{color:var(--input-placeholder-color)}input[type=range].svelte-jigama{width:100%;accent-color:var(--slider-color)}input[disabled].svelte-jigama{cursor:not-allowed}input.svelte-56zyyb{display:block;position:relative;background:var(--background-fill-primary);line-height:var(--line-sm)} diff --git a/gradio/templates/cdn/assets/Column.69198682.js b/gradio/templates/cdn/assets/Column.69198682.js new file mode 100644 index 0000000000000000000000000000000000000000..02ad64f076f3d8f8597d7ca3dbf4c03002b127ca --- /dev/null +++ b/gradio/templates/cdn/assets/Column.69198682.js @@ -0,0 +1,2 @@ +import{S as h,i as w,s as b,W as r,F as C,B as o,a8 as g,O as _,f as j,X as S,Y as q,Z as y,o as B,t as F,p as O}from"./index.7a68216a.js";/* empty css */function W(i){let e,n,m,f;const u=i[8].default,a=r(u,i,i[7],null);return{c(){e=C("div"),a&&a.c(),o(e,"id",i[2]),o(e,"class",n=g(i[3].join(" "))+" svelte-vt1mxs"),o(e,"style",m=`min-width: min(${i[1]}px, 100%); flex-grow: ${i[0]}`),_(e,"gap",i[6].gap!==!1),_(e,"compact",i[5]==="compact"),_(e,"panel",i[5]==="panel"),_(e,"hide",!i[4])},m(l,t){j(l,e,t),a&&a.m(e,null),f=!0},p(l,[t]){a&&a.p&&(!f||t&128)&&S(a,u,l,l[7],f?y(u,l[7],t,null):q(l[7]),null),(!f||t&4)&&o(e,"id",l[2]),(!f||t&8&&n!==(n=g(l[3].join(" "))+" svelte-vt1mxs"))&&o(e,"class",n),(!f||t&3&&m!==(m=`min-width: min(${l[1]}px, 100%); flex-grow: ${l[0]}`))&&o(e,"style",m),t&72&&_(e,"gap",l[6].gap!==!1),t&40&&_(e,"compact",l[5]==="compact"),t&40&&_(e,"panel",l[5]==="panel"),t&24&&_(e,"hide",!l[4])},i(l){f||(B(a,l),f=!0)},o(l){F(a,l),f=!1},d(l){l&&O(e),a&&a.d(l)}}}function X(i,e,n){let{$$slots:m={},$$scope:f}=e,{scale:u=1}=e,{min_width:a=0}=e,{elem_id:l=""}=e,{elem_classes:t=[]}=e,{visible:c=!0}=e,{variant:d="default"}=e,{style:v={}}=e;return i.$$set=s=>{"scale"in s&&n(0,u=s.scale),"min_width"in s&&n(1,a=s.min_width),"elem_id"in s&&n(2,l=s.elem_id),"elem_classes"in s&&n(3,t=s.elem_classes),"visible"in s&&n(4,c=s.visible),"variant"in s&&n(5,d=s.variant),"style"in s&&n(6,v=s.style),"$$scope"in s&&n(7,f=s.$$scope)},[u,a,l,t,c,d,v,f,m]}class k extends h{constructor(e){super(),w(this,e,X,W,b,{scale:0,min_width:1,elem_id:2,elem_classes:3,visible:4,variant:5,style:6})}}export{k as C}; +//# sourceMappingURL=Column.69198682.js.map diff --git a/gradio/templates/cdn/assets/Column.69198682.js.map b/gradio/templates/cdn/assets/Column.69198682.js.map new file mode 100644 index 0000000000000000000000000000000000000000..9629364cf903bf81f57aa9b0f621e1f4d4b7781b --- /dev/null +++ b/gradio/templates/cdn/assets/Column.69198682.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Column.69198682.js","sources":["../../../../ui/packages/app/src/components/Column/Column.svelte"],"sourcesContent":["\n\n\n\t\n\n\n\n"],"names":[],"mappings":"gTAcK,sBACG,KAAa,KAAK,GAAG,qDAKH,6BAAkC,kBAJhD,KAAM,MAAQ,EAAK,gBACf,OAAY,SAAS,cACvB,OAAY,OAAO,cACnB,cANd,8HACK,yBACG,KAAa,KAAK,GAAG,yEAKH,6BAAkC,yCAJhD,KAAM,MAAQ,EAAK,sBACf,OAAY,SAAS,oBACvB,OAAY,OAAO,oBACnB,0HAfF,QAAgB,MAChB,YAAoB,MACpB,UAAkB,OAClB,sBACA,UAAmB,OACnB,UAA2C,cAC3C"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css b/gradio/templates/cdn/assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css new file mode 100644 index 0000000000000000000000000000000000000000..8657e4c7112cc9a8232f875b00f9cf9aaac5e9f6 --- /dev/null +++ b/gradio/templates/cdn/assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css @@ -0,0 +1 @@ +div.svelte-vt1mxs{display:flex;position:relative;flex-direction:column}div.svelte-vt1mxs>*,div.svelte-vt1mxs>.form>*{width:var(--size-full)}.gap.svelte-vt1mxs{gap:var(--layout-gap)}.hide.svelte-vt1mxs{display:none}.compact.svelte-vt1mxs>*,.compact.svelte-vt1mxs .box{border-radius:0}.compact.svelte-vt1mxs,.panel.svelte-vt1mxs{border:solid var(--panel-border-width) var(--panel-border-color);border-radius:var(--container-radius);background:var(--panel-background-fill);padding:var(--spacing-lg)} diff --git a/gradio/templates/cdn/assets/Copy.fa9f7398.js b/gradio/templates/cdn/assets/Copy.fa9f7398.js new file mode 100644 index 0000000000000000000000000000000000000000..f376bcbf533e91bcc1fc2836266b1e7af740435a --- /dev/null +++ b/gradio/templates/cdn/assets/Copy.fa9f7398.js @@ -0,0 +1,2 @@ +import{S as p,i as c,s as h,A as a,B as e,f as u,D as i,E as n,p as d}from"./index.7a68216a.js";function v(l){let t,s;return{c(){t=a("svg"),s=a("polyline"),e(s,"points","20 6 9 17 4 12"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 24 24"),e(t,"fill","none"),e(t,"stroke","currentColor"),e(t,"stroke-width","3"),e(t,"stroke-linecap","round"),e(t,"stroke-linejoin","round")},m(o,r){u(o,t,r),i(t,s)},p:n,i:n,o:n,d(o){o&&d(t)}}}class m extends p{constructor(t){super(),c(this,t,null,v,h,{})}}function w(l){let t,s,o;return{c(){t=a("svg"),s=a("path"),o=a("path"),e(s,"fill","currentColor"),e(s,"d","M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z"),e(o,"fill","currentColor"),e(o,"d","M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 32 32")},m(r,g){u(r,t,g),i(t,s),i(t,o)},p:n,i:n,o:n,d(r){r&&d(t)}}}class x extends p{constructor(t){super(),c(this,t,null,w,h,{})}}export{x as C,m as a}; +//# sourceMappingURL=Copy.fa9f7398.js.map diff --git a/gradio/templates/cdn/assets/Copy.fa9f7398.js.map b/gradio/templates/cdn/assets/Copy.fa9f7398.js.map new file mode 100644 index 0000000000000000000000000000000000000000..256f189a178f23d3dbb275d5c9774674efe5634a --- /dev/null +++ b/gradio/templates/cdn/assets/Copy.fa9f7398.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Copy.fa9f7398.js","sources":["../../../../ui/packages/icons/src/Check.svelte","../../../../ui/packages/icons/src/Copy.svelte"],"sourcesContent":["\n","\n"],"names":[],"mappings":"sbAAA,SASyB,ueCTzB,SAKE,OAGC"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Download.e46fa6ff.js b/gradio/templates/cdn/assets/Download.e46fa6ff.js new file mode 100644 index 0000000000000000000000000000000000000000..c45041597e2d27d80aa6303f3e0fa180280afd72 --- /dev/null +++ b/gradio/templates/cdn/assets/Download.e46fa6ff.js @@ -0,0 +1,2 @@ +import{S as i,i as p,s as v,A as o,B as e,f as h,D as c,E as n,p as m}from"./index.7a68216a.js";function d(l){let t,s;return{c(){t=o("svg"),s=o("path"),e(s,"fill","currentColor"),e(s,"d","M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10l10-10z"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 32 32")},m(a,r){h(a,t,r),c(t,s)},p:n,i:n,o:n,d(a){a&&m(t)}}}class g extends i{constructor(t){super(),p(this,t,null,d,v,{})}}export{g as D}; +//# sourceMappingURL=Download.e46fa6ff.js.map diff --git a/gradio/templates/cdn/assets/Download.e46fa6ff.js.map b/gradio/templates/cdn/assets/Download.e46fa6ff.js.map new file mode 100644 index 0000000000000000000000000000000000000000..60ba7e571681d747fc357ebee71194eacde16f00 --- /dev/null +++ b/gradio/templates/cdn/assets/Download.e46fa6ff.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Download.e46fa6ff.js","sources":["../../../../ui/packages/icons/src/Download.svelte"],"sourcesContent":["\n"],"names":[],"mappings":"0aAAA,SAKE"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css b/gradio/templates/cdn/assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css new file mode 100644 index 0000000000000000000000000000000000000000..c47d6f6f010f0626b0036068fe41d683b37b2954 --- /dev/null +++ b/gradio/templates/cdn/assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css @@ -0,0 +1 @@ +.dropdown-arrow.svelte-p5edak{fill:var(--body-text-color);margin-right:var(--size-2);width:var(--size-5)} diff --git a/gradio/templates/cdn/assets/Empty.092ff864.js b/gradio/templates/cdn/assets/Empty.092ff864.js new file mode 100644 index 0000000000000000000000000000000000000000..5ee515709b38a4e5156fa3c590a900bce387fb94 --- /dev/null +++ b/gradio/templates/cdn/assets/Empty.092ff864.js @@ -0,0 +1,2 @@ +import{S as _,i as r,s as m,W as c,F as d,B as f,O as u,f as g,D as p,X as b,Y as v,Z as z,o as h,t as j,p as E}from"./index.7a68216a.js";import"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";function S(t){let s,n,i;const o=t[3].default,a=c(o,t,t[2],null);return{c(){s=d("div"),n=d("div"),a&&a.c(),f(n,"class","icon svelte-1u5vjgs"),f(s,"class","empty svelte-1u5vjgs"),u(s,"small",t[0]==="small"),u(s,"large",t[0]==="large"),u(s,"unpadded_box",t[1])},m(e,l){g(e,s,l),p(s,n),a&&a.m(n,null),i=!0},p(e,[l]){a&&a.p&&(!i||l&4)&&b(a,o,e,e[2],i?z(o,e[2],l,null):v(e[2]),null),l&1&&u(s,"small",e[0]==="small"),l&1&&u(s,"large",e[0]==="large"),l&2&&u(s,"unpadded_box",e[1])},i(e){i||(h(a,e),i=!0)},o(e){j(a,e),i=!1},d(e){e&&E(s),a&&a.d(e)}}}function q(t,s,n){let{$$slots:i={},$$scope:o}=s,{size:a="small"}=s,{unpadded_box:e=!1}=s;return t.$$set=l=>{"size"in l&&n(0,a=l.size),"unpadded_box"in l&&n(1,e=l.unpadded_box),"$$scope"in l&&n(2,o=l.$$scope)},[a,e,o,i]}class D extends _{constructor(s){super(),r(this,s,q,S,m,{size:0,unpadded_box:1})}}export{D as E}; +//# sourceMappingURL=Empty.092ff864.js.map diff --git a/gradio/templates/cdn/assets/Empty.092ff864.js.map b/gradio/templates/cdn/assets/Empty.092ff864.js.map new file mode 100644 index 0000000000000000000000000000000000000000..323384ca7fbcae30b3d721e019efa0e3892dbe9b --- /dev/null +++ b/gradio/templates/cdn/assets/Empty.092ff864.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Empty.092ff864.js","sources":["../../../../ui/packages/atoms/src/Empty.svelte"],"sourcesContent":["\n\n\n\t
\n\t\t\n\t
\n\n\n\n"],"names":[],"mappings":"iYAOc,OAAS,OAAO,cAChB,OAAS,OAAO,mCAH9B,SAMC,uHAJa,OAAS,OAAO,mBAChB,OAAS,OAAO,oJAPlB,OAA0B,YAC1B,eAAe"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.04656a45.css b/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.04656a45.css new file mode 100644 index 0000000000000000000000000000000000000000..7eccfe5b6ac9a0b65a64c4007b294d0f4df457cd --- /dev/null +++ b/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.04656a45.css @@ -0,0 +1 @@ +button.svelte-1ipelgc{display:inline-flex;justify-content:center;align-items:center;transition:var(--button-transition);box-shadow:var(--button-shadow);padding:var(--size-0-5) var(--size-2);text-align:center}button.svelte-1ipelgc:hover,button[disabled].svelte-1ipelgc{box-shadow:var(--button-shadow-hover)}button.svelte-1ipelgc:active{box-shadow:var(--button-shadow-active)}button[disabled].svelte-1ipelgc{opacity:.5;filter:grayscale(30%);cursor:not-allowed}.hide.svelte-1ipelgc{display:none}.primary.svelte-1ipelgc{border:var(--button-border-width) solid var(--button-primary-border-color);background:var(--button-primary-background-fill);color:var(--button-primary-text-color)}.primary.svelte-1ipelgc:hover,.primary[disabled].svelte-1ipelgc{border-color:var(--button-primary-border-color-hover);background:var(--button-primary-background-fill-hover);color:var(--button-primary-text-color-hover)}.secondary.svelte-1ipelgc{border:var(--button-border-width) solid var(--button-secondary-border-color);background:var(--button-secondary-background-fill);color:var(--button-secondary-text-color)}.secondary.svelte-1ipelgc:hover,.secondary[disabled].svelte-1ipelgc{border-color:var(--button-secondary-border-color-hover);background:var(--button-secondary-background-fill-hover);color:var(--button-secondary-text-color-hover)}.stop.svelte-1ipelgc{border:var(--button-border-width) solid var(--button-cancel-border-color);background:var(--button-cancel-background-fill);color:var(--button-cancel-text-color)}.stop.svelte-1ipelgc:hover,.stop[disabled].svelte-1ipelgc{border-color:var(--button-cancel-border-color-hover);background:var(--button-cancel-background-fill-hover);color:var(--button-cancel-text-color-hover)}.sm.svelte-1ipelgc{border-radius:var(--button-small-radius);padding:var(--button-small-padding);font-weight:var(--button-small-text-weight);font-size:var(--button-small-text-size)}.lg.svelte-1ipelgc{border-radius:var(--button-large-radius);padding:var(--button-large-padding);font-weight:var(--button-large-text-weight);font-size:var(--button-large-text-size)}.block.svelte-mppz8v{position:relative;margin:0;box-shadow:var(--block-shadow);border-width:var(--block-border-width);border-color:var(--block-border-color);border-radius:var(--block-radius);background:var(--block-background-fill);width:100%;line-height:var(--line-sm)}.block.border_focus.svelte-mppz8v{border-color:var(--color-accent)}.padded.svelte-mppz8v{padding:var(--block-padding)}.hidden.svelte-mppz8v{display:none}div.svelte-e8n7p6{margin-bottom:var(--spacing-lg);color:var(--block-info-text-color);font-weight:var(--block-info-text-weight);font-size:var(--block-info-text-size);line-height:var(--line-sm)}span.has-info.svelte-1gfkn6j{margin-bottom:var(--spacing-xs)}span.svelte-1gfkn6j:not(.has-info){margin-bottom:var(--spacing-lg)}span.svelte-1gfkn6j{display:inline-block;position:relative;z-index:var(--layer-4);border:solid var(--block-title-border-width) var(--block-title-border-color);border-radius:var(--block-title-radius);background:var(--block-title-background-fill);padding:var(--block-title-padding);color:var(--block-title-text-color);font-weight:var(--block-title-text-weight);font-size:var(--block-title-text-size);line-height:var(--line-sm)}.hide.svelte-1gfkn6j{margin:0;height:0}div.svelte-1frtwj3{display:inline-flex;align-items:center;z-index:var(--layer-2);box-shadow:var(--block-shadow);border:var(--block-label-border-width) solid var(--border-color-primary);border-top:none;border-left:none;border-radius:var(--block-label-radius);background:var(--block-label-background-fill);padding:var(--block-label-padding);pointer-events:none;color:var(--block-label-text-color);font-weight:var(--block-label-text-weight);font-size:var(--block-label-text-size);line-height:var(--line-sm)}div.float.svelte-1frtwj3{position:absolute;top:var(--block-label-margin);left:var(--block-label-margin)}div.svelte-1frtwj3:not(.float){position:static;margin-top:var(--block-label-margin);margin-left:var(--block-label-margin)}.hide.svelte-1frtwj3{height:0}span.svelte-1frtwj3{opacity:.8;margin-right:var(--size-2);width:calc(var(--block-label-text-size) - 1px);height:calc(var(--block-label-text-size) - 1px)}button.svelte-184m5ec{display:flex;justify-content:center;align-items:center;z-index:var(--layer-1);box-shadow:var(--shadow-drop);border:1px solid var(--button-secondary-border-color);border-radius:var(--radius-sm);background:var(--background-fill-primary);width:var(--size-5);height:var(--size-5);color:var(--block-label-text-color)}button.svelte-184m5ec:hover{border:1px solid var(--button-secondary-border-color-hover);color:var(--block-label-text-color)}div.svelte-184m5ec{width:60%;height:60%}.empty.svelte-1u5vjgs{display:flex;justify-content:center;align-items:center;height:var(--size-full)}.icon.svelte-1u5vjgs{opacity:.5;height:var(--size-5);color:var(--body-text-color)}.small.svelte-1u5vjgs{height:calc(var(--size-32) - 20px)}.large.svelte-1u5vjgs{height:calc(var(--size-64) - 20px)}.unpadded_box.small.svelte-1u5vjgs{min-height:var(--size-32)}.unpadded_box.large.svelte-1u5vjgs{min-height:var(--size-64)} diff --git a/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js b/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js new file mode 100644 index 0000000000000000000000000000000000000000..4cd0595caa5bffe822c536ea9627e01bcff0fe8e --- /dev/null +++ b/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js @@ -0,0 +1,2 @@ +import{S as K,i as L,s as z,W as N,F as S,B as b,O as m,f as j,I as Z,X as Y,Y as F,Z as T,o as C,t as I,p as O,x as D,$ as E,C as y,g as G,e as H,a0 as J,v as M}from"./index.7a68216a.js";const P=(l,e)=>W[e](l[e]);function k(l,e){const t=e.reduce((n,s)=>(l[s]===void 0||!W[s]?n[s]=" ":n[s]=` ${P(l,s)} `,n),{});return t.styles=` ${Object.values(t).join(" ").replace(/\s+/g," ").trim()} `,t}const W={container(l){return l?"":"padding: 0; margin: 0; border-width: 0; box-shadow: none; overflow: visible; background: transparent;"},label_container(l){return l?"":"border-width: 0; box-shadow: none; overflow: visible; background: transparent;"},grid(l){let e=["","sm-","md-","lg-","xl-","2xl-"],t=Array.isArray(l)?l:[l];return[0,0,0,0,0,0].map((n,s)=>`--${e[s]}grid-cols: var(--grid-${t?.[s]||t?.[t?.length-1]});`).join(" ")},height(l){return l==="auto"?"height: auto;":""},full_width(l){return l?"width: var(--size-full); flex-grow: 1;":"flex-grow: 0; width: fit-content;"},equal_height(l){return l?"align-items: stretch;":"align-items: flex-start;"},visible(l){return l?"":"display:hidden;"},item_container(l){return l?"":"border-width:0;"}};function Q(l){let e,t,n,s,f;const _=l[9].default,d=N(_,l,l[8],null);return{c(){e=S("button"),d&&d.c(),b(e,"class",t=l[4]+" "+l[3]+" "+l[1].join(" ")+" svelte-1ipelgc"),b(e,"style",l[6]),b(e,"id",l[0]),e.disabled=l[5],m(e,"hide",!l[2])},m(a,i){j(a,e,i),d&&d.m(e,null),n=!0,s||(f=Z(e,"click",l[10]),s=!0)},p(a,[i]){d&&d.p&&(!n||i&256)&&Y(d,_,a,a[8],n?T(_,a[8],i,null):F(a[8]),null),(!n||i&26&&t!==(t=a[4]+" "+a[3]+" "+a[1].join(" ")+" svelte-1ipelgc"))&&b(e,"class",t),(!n||i&64)&&b(e,"style",a[6]),(!n||i&1)&&b(e,"id",a[0]),(!n||i&32)&&(e.disabled=a[5]),i&30&&m(e,"hide",!a[2])},i(a){n||(C(d,a),n=!0)},o(a){I(d,a),n=!1},d(a){a&&O(e),d&&d.d(a),s=!1,f()}}}function R(l,e,t){let n,{$$slots:s={},$$scope:f}=e,{style:_={}}=e,{elem_id:d=""}=e,{elem_classes:a=[]}=e,{visible:i=!0}=e,{variant:o="secondary"}=e,{size:v=_.size||"lg"}=e,{disabled:g=!1}=e;function c(r){D.call(this,l,r)}return l.$$set=r=>{"style"in r&&t(7,_=r.style),"elem_id"in r&&t(0,d=r.elem_id),"elem_classes"in r&&t(1,a=r.elem_classes),"visible"in r&&t(2,i=r.visible),"variant"in r&&t(3,o=r.variant),"size"in r&&t(4,v=r.size),"disabled"in r&&t(5,g=r.disabled),"$$scope"in r&&t(8,f=r.$$scope)},l.$$.update=()=>{l.$$.dirty&128&&t(6,{styles:n}=k(_,["full_width"]),n)},[d,a,i,o,v,g,n,_,f,s,c]}class p extends K{constructor(e){super(),L(this,e,R,Q,z,{style:7,elem_id:0,elem_classes:1,visible:2,variant:3,size:4,disabled:5})}}function B(l){let e,t,n,s;const f=l[16].default,_=N(f,l,l[15],null);let d=[{"data-testid":l[5]},{id:l[0]},{class:t="block "+l[1].join(" ")+" svelte-mppz8v"},{style:n=l[9]+" "+(l[8]||null)}],a={};for(let i=0;i{"style"in u&&t(11,d=u.style),"elem_id"in u&&t(0,a=u.elem_id),"elem_classes"in u&&t(1,i=u.elem_classes),"variant"in u&&t(2,o=u.variant),"border_mode"in u&&t(3,v=u.border_mode),"padding"in u&&t(4,g=u.padding),"type"in u&&t(12,c=u.type),"test_id"in u&&t(5,r=u.test_id),"disable"in u&&t(13,h=u.disable),"explicit_call"in u&&t(14,w=u.explicit_call),"visible"in u&&t(6,q=u.visible),"allow_overflow"in u&&t(7,A=u.allow_overflow),"$$scope"in u&&t(15,_=u.$$scope)},l.$$.update=()=>{l.$$.dirty&26624&&t(9,{styles:n}=w?k(d,[]):h?k({container:!1},["container"]):{styles:""},n),l.$$.dirty&2048&&t(8,s=(typeof d.height=="number"?`height: ${d.height}px; `:"")+(typeof d.width=="number"?`width: ${d.width}px;`:""))},[a,i,o,v,g,r,q,A,s,n,X,d,c,h,w,_,f]}class $ extends K{constructor(e){super(),L(this,e,V,U,z,{style:11,elem_id:0,elem_classes:1,variant:2,border_mode:3,padding:4,type:12,test_id:5,disable:13,explicit_call:14,visible:6,allow_overflow:7})}}export{p as B,$ as a,k as g}; +//# sourceMappingURL=Empty.svelte_svelte_type_style_lang.d7a3af78.js.map diff --git a/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js.map b/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js.map new file mode 100644 index 0000000000000000000000000000000000000000..678b4298389465d8fbcbf47c5b8c22fe0f995e6b --- /dev/null +++ b/gradio/templates/cdn/assets/Empty.svelte_svelte_type_style_lang.d7a3af78.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Empty.svelte_svelte_type_style_lang.d7a3af78.js","sources":["../../../../ui/packages/utils/src/styles.ts","../../../../ui/packages/button/src/Button.svelte","../../../../ui/packages/atoms/src/Block.svelte"],"sourcesContent":["export interface Styles {\n\tcontainer?: boolean;\n\tgrid?: number | Array;\n\theight?: \"auto\" | string | number;\n\twidth?: \"auto\" | string | number;\n\tfull_width?: boolean;\n\tequal_height?: boolean;\n\tvisible?: boolean;\n\titem_container?: boolean;\n\tcolor_map?: Record;\n\tlabel_container?: boolean;\n\tgap?: boolean;\n\tsize?: \"sm\" | \"lg\";\n\tpreview?: boolean;\n\tshow_copy_button?: boolean;\n}\n\ntype PartialRecord = {\n\t[P in K]?: T;\n};\n\ntype ProcessedStyles = PartialRecord & {\n\tstyles: string;\n};\n\nconst get_style = (styles: Styles, key: T) => {\n\treturn style_handlers[key](styles[key]!);\n};\n\nexport function get_styles(\n\tstyles: Styles,\n\tallowed_styles: Array\n): ProcessedStyles {\n\tconst processed_styles = allowed_styles.reduce((acc, next) => {\n\t\tif (styles[next] === undefined || !style_handlers[next]) acc[next] = \" \";\n\t\telse {\n\t\t\tacc[next] = ` ${get_style(styles, next)} `;\n\t\t}\n\t\treturn acc;\n\t}, {} as ProcessedStyles);\n\n\tprocessed_styles.styles = ` ${Object.values(processed_styles)\n\t\t.join(\" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim()} `;\n\n\treturn processed_styles;\n}\n\ntype StyleHandlers = {\n\t[K in keyof Styles]: (style: Exclude) => string;\n};\n\nconst style_handlers: StyleHandlers = {\n\tcontainer(container_visible) {\n\t\treturn container_visible\n\t\t\t? \"\"\n\t\t\t: `padding: 0; margin: 0; border-width: 0; box-shadow: none; overflow: visible; background: transparent;`;\n\t},\n\tlabel_container(visible) {\n\t\treturn visible\n\t\t\t? \"\"\n\t\t\t: `border-width: 0; box-shadow: none; overflow: visible; background: transparent;`;\n\t},\n\tgrid(grid) {\n\t\tlet grid_map = [\"\", \"sm-\", \"md-\", \"lg-\", \"xl-\", \"2xl-\"];\n\t\tlet _grid = Array.isArray(grid) ? grid : [grid];\n\n\t\treturn [0, 0, 0, 0, 0, 0]\n\t\t\t.map(\n\t\t\t\t(_, i) =>\n\t\t\t\t\t`--${grid_map[i]}grid-cols: var(--grid-${\n\t\t\t\t\t\t_grid?.[i] || _grid?.[_grid?.length - 1]\n\t\t\t\t\t});`\n\t\t\t)\n\t\t\t.join(\" \");\n\t},\n\theight(height) {\n\t\treturn height === \"auto\" ? \"height: auto;\" : \"\";\n\t},\n\tfull_width(full_width) {\n\t\treturn full_width\n\t\t\t? \"width: var(--size-full); flex-grow: 1;\"\n\t\t\t: \"flex-grow: 0; width: fit-content;\";\n\t},\n\tequal_height(equal_height) {\n\t\treturn equal_height ? \"align-items: stretch;\" : \"align-items: flex-start;\";\n\t},\n\tvisible(visible) {\n\t\treturn visible ? \"\" : \"display:hidden;\";\n\t},\n\titem_container(visible) {\n\t\treturn visible ? \"\" : \"border-width:0;\";\n\t}\n} as const;\n\nexport const create_classes = (\n\tstyles: Record,\n\tprefix: string = \"\"\n): string => {\n\tlet classes: Array = [];\n\tlet target_styles: Record = {};\n\tif (prefix === \"\") {\n\t\ttarget_styles = styles;\n\t} else {\n\t\tfor (const prop in styles) {\n\t\t\tif (prop.startsWith(prefix + \"_\")) {\n\t\t\t\tconst propname = prop.substring(prop.indexOf(\"_\") + 1);\n\t\t\t\ttarget_styles[propname] = styles[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (target_styles.hasOwnProperty(\"margin\")) {\n\t\tif (!Array.isArray(target_styles.margin)) {\n\t\t\ttarget_styles.margin = !!target_styles.margin\n\t\t\t\t? [true, true, true, true]\n\t\t\t\t: [false, false, false, false];\n\t\t}\n\n\t\tlet margin_map = [\"t\", \"r\", \"b\", \"l\"];\n\n\t\t(target_styles.margin as boolean[]).forEach((margin, i) => {\n\t\t\tif (!margin) {\n\t\t\t\tclasses.push(`!m${margin_map[i]}-0`);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (target_styles.hasOwnProperty(\"border\")) {\n\t\tif (!Array.isArray(target_styles.border)) {\n\t\t\ttarget_styles.border = !!target_styles.border\n\t\t\t\t? [true, true, true, true]\n\t\t\t\t: [false, false, false, false];\n\t\t}\n\n\t\tlet border_map = [\"t\", \"r\", \"b\", \"l\"];\n\n\t\t(target_styles.border as boolean[]).forEach((border, i) => {\n\t\t\tif (!border) {\n\t\t\t\tclasses.push(`!border-${border_map[i]}-0`);\n\t\t\t}\n\t\t});\n\t}\n\n\tswitch (target_styles.rounded) {\n\t\tcase true:\n\t\t\tclasses.push(\"!rounded-lg\");\n\t\t\tbreak;\n\t\tcase false:\n\t\t\tclasses.push(\"!rounded-none\");\n\t\t\tbreak;\n\t}\n\n\tswitch (target_styles.full_width) {\n\t\tcase true:\n\t\t\tclasses.push(\"w-full\");\n\t\t\tbreak;\n\t\tcase false:\n\t\t\tclasses.push(\"!grow-0\");\n\t\t\tbreak;\n\t}\n\n\tswitch (target_styles.text_color) {\n\t\tcase \"red\":\n\t\t\tclasses.push(\"!text-red-500\", \"dark:text-red-100\");\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tclasses.push(\"!text-yellow-500\", \"dark:text-yellow-100\");\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tclasses.push(\"!text-green-500\", \"dark:text-green-100\");\n\t\t\tbreak;\n\t\tcase \"blue\":\n\t\t\tclasses.push(\"!text-blue-500\", \"dark:text-blue-100\");\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tclasses.push(\"!text-purple-500\", \"dark:text-purple-100\");\n\t\t\tbreak;\n\t\tcase \"black\":\n\t\t\tclasses.push(\"!text-gray-700\", \"dark:text-gray-50\");\n\t\t\tbreak;\n\t}\n\tswitch (target_styles.bg_color) {\n\t\tcase \"red\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-red-100 !from-red-100 !to-red-200 !border-red-300\",\n\t\t\t\t\"dark:!bg-red-700 dark:!from-red-700 dark:!to-red-800 dark:!border-red-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-yellow-100 !from-yellow-100 !to-yellow-200 !border-yellow-300\",\n\t\t\t\t\"dark:!bg-yellow-700 dark:!from-yellow-700 dark:!to-yellow-800 dark:!border-yellow-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-green-100 !from-green-100 !to-green-200 !border-green-300\",\n\t\t\t\t\"dark:!bg-green-700 dark:!from-green-700 dark:!to-green-800 dark:!border-green-900 !text-gray-800\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"blue\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-blue-100 !from-blue-100 !to-blue-200 !border-blue-300\",\n\t\t\t\t\"dark:!bg-blue-700 dark:!from-blue-700 dark:!to-blue-800 dark:!border-blue-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-purple-100 !from-purple-100 !to-purple-200 !border-purple-300\",\n\t\t\t\t\"dark:!bg-purple-700 dark:!from-purple-700 dark:!to-purple-800 dark:!border-purple-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"black\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-gray-100 !from-gray-100 !to-gray-200 !border-gray-300\",\n\t\t\t\t\"dark:!bg-gray-700 dark:!from-gray-700 dark:!to-gray-800 dark:!border-gray-900\"\n\t\t\t);\n\t\tcase \"pink\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-pink-100 !from-pink-100 !to-pink-200 !border-pink-300\",\n\t\t\t\t\"dark:!bg-pink-700 dark:!from-pink-700 dark:!to-pink-800 dark:!border-pink-900 !text-gray-800\"\n\t\t\t);\n\t\t\tbreak;\n\t}\n\treturn \" \" + classes.join(\" \");\n};\n","\n\n\n\t\n\n\n\n","\n\n\n\t\n\n\n\n"],"names":[],"mappings":"4LAyBA,KAAM,GAAY,CAAyB,EAAgB,IACnD,EAAe,GAAK,EAAO,EAAK,aAIvC,EACA,EACkB,MACZ,GAAmB,EAAe,OAAO,CAAC,EAAK,KAChD,EAAO,KAAU,QAAa,CAAC,EAAe,KAAW,GAAQ,MAEhE,GAAQ,IAAI,EAAU,EAAQ,CAAI,KAEhC,GACL,EAAqB,WAEP,OAAS,IAAI,OAAO,OAAO,CAAgB,EAC1D,KAAK,GAAG,EACR,QAAQ,OAAQ,GAAG,EACnB,UAEK,CACR,CAMA,KAAM,GAAgC,CACrC,UAAU,EAAmB,OACrB,GACJ,GACA,yGAEJ,gBAAgB,EAAS,OACjB,GACJ,GACA,kFAEJ,KAAK,EAAM,IACN,GAAW,CAAC,GAAI,MAAO,MAAO,MAAO,MAAO,MAAM,EAClD,EAAQ,MAAM,QAAQ,CAAI,EAAI,EAAO,CAAC,CAAI,QAEvC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtB,IACA,CAAC,EAAG,IACH,KAAK,EAAS,2BACb,IAAQ,IAAM,IAAQ,GAAO,OAAS,MAEzC,EACC,KAAK,GAAG,GAEX,OAAO,EAAQ,OACP,KAAW,OAAS,gBAAkB,IAE9C,WAAW,EAAY,OACf,GACJ,yCACA,qCAEJ,aAAa,EAAc,OACnB,GAAe,wBAA0B,4BAEjD,QAAQ,EAAS,OACT,GAAU,GAAK,mBAEvB,eAAe,EAAS,OAChB,GAAU,GAAK,kBAExB,sHC5ES,SAAO,SAAU,KAAa,KAAK,GAAG,iCACvC,eACH,kCAHS,cAFd,2JAGS,SAAO,SAAU,KAAa,KAAK,GAAG,8DACvC,0BACH,sDAHS,sIAbF,eACA,UAAkB,OAClB,sBACA,UAAmB,OACnB,UAA4C,gBAC5C,OAAoB,EAAM,MAAQ,SAClC,WAAoB,iWAEzB,UAAW,EAAW,GAAQ,YAAY,4PC0BnC,UACT,wBAEU,KAAa,KAAK,GAAG,6BAG3B,SAAS,OAAc,oEAPzB,oCAGQ,OAAY,EAAK,eAEjB,yBACM,OAAgB,OAAO,qBAEvB,wBACJ,KAAiB,UAAY,qBAV9C,mJAEc,qBACT,gCAEU,KAAa,KAAK,GAAG,mDAG3B,SAAS,OAAc,mCAJjB,OAAY,EAAK,eAEjB,yBACM,OAAgB,OAAO,0BAEvB,+BACJ,KAAiB,UAAY,oGATvC,YAAA,kFAAA,YAAA,kHAAA,2HA/BK,eACA,UAAkB,OAClB,sBACA,UAAuC,YACvC,cAAgC,WAChC,UAAmB,OACnB,OAA8B,aAC9B,UAA8B,WAC9B,UAAmB,OACnB,gBAAyB,OACzB,UAAU,OACV,iBAAiB,MAExB,EAAM,IAAS,WAAa,WAAa,MAE9B,SAA0B,WAAW,8fAI9C,UAAW,EACd,EAAW,MACX,EACA,GAAa,UAAW,KAAU,WAAW,IAC3C,OAAQ,4BACV,EACF,OACQ,GAAM,QAAW,oBAAsB,EAAM,aAAe,WAC5D,GAAM,OAAU,mBAAqB,EAAM,WAAa"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/File.7698c472.js b/gradio/templates/cdn/assets/File.7698c472.js new file mode 100644 index 0000000000000000000000000000000000000000..21f546f98c4524582dab186e32b8a2a7b07574b2 --- /dev/null +++ b/gradio/templates/cdn/assets/File.7698c472.js @@ -0,0 +1,2 @@ +import{S as h,i as c,s as f,A as o,B as t,f as d,D as i,E as r,p as u}from"./index.7a68216a.js";function g(l){let e,s,a;return{c(){e=o("svg"),s=o("path"),a=o("polyline"),t(s,"d","M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"),t(a,"points","13 2 13 9 20 9"),t(e,"xmlns","http://www.w3.org/2000/svg"),t(e,"width","100%"),t(e,"height","100%"),t(e,"viewBox","0 0 24 24"),t(e,"fill","none"),t(e,"stroke","currentColor"),t(e,"stroke-width","1.5"),t(e,"stroke-linecap","round"),t(e,"stroke-linejoin","round"),t(e,"class","feather feather-file")},m(n,p){d(n,e,p),i(e,s),i(e,a)},p:r,i:r,o:r,d(n){n&&u(e)}}}class v extends h{constructor(e){super(),c(this,e,null,g,f,{})}}export{v as F}; +//# sourceMappingURL=File.7698c472.js.map diff --git a/gradio/templates/cdn/assets/File.7698c472.js.map b/gradio/templates/cdn/assets/File.7698c472.js.map new file mode 100644 index 0000000000000000000000000000000000000000..fcfd71cef5f77120d75cf186cfce2c00cc0d0b6f --- /dev/null +++ b/gradio/templates/cdn/assets/File.7698c472.js.map @@ -0,0 +1 @@ +{"version":3,"file":"File.7698c472.js","sources":["../../../../ui/packages/icons/src/File.svelte"],"sourcesContent":["\n\t\n\t\n\n"],"names":[],"mappings":"gjBAAA,SAYC,OACA"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Form.0a7d9dad.css b/gradio/templates/cdn/assets/Form.0a7d9dad.css new file mode 100644 index 0000000000000000000000000000000000000000..4f21cff8eebea060d05e431443a878eec064de57 --- /dev/null +++ b/gradio/templates/cdn/assets/Form.0a7d9dad.css @@ -0,0 +1 @@ +div.svelte-awbtu4{display:flex;flex-direction:inherit;flex-wrap:wrap;gap:var(--form-gap-width);box-shadow:var(--block-shadow);border:var(--block-border-width) solid var(--border-color-primary);border-radius:var(--radius-lg);background:var(--border-color-primary);overflow:hidden}div.svelte-awbtu4 .block{box-shadow:none!important;border-width:0px!important;border-radius:0!important}.hidden.svelte-awbtu4{display:none} diff --git a/gradio/templates/cdn/assets/Form.c11fdf11.js b/gradio/templates/cdn/assets/Form.c11fdf11.js new file mode 100644 index 0000000000000000000000000000000000000000..6b92c12cecb7f0775e47c6f35710ae7d88b01b4c --- /dev/null +++ b/gradio/templates/cdn/assets/Form.c11fdf11.js @@ -0,0 +1,2 @@ +import{S as r,i as _,s as f,W as u,F as c,B as m,O as o,f as d,X as v,Y as b,Z as g,o as p,t as h,p as F}from"./index.7a68216a.js";function S(i){let t,a;const n=i[2].default,s=u(n,i,i[1],null);return{c(){t=c("div"),s&&s.c(),m(t,"class","form svelte-awbtu4"),o(t,"hidden",!i[0])},m(e,l){d(e,t,l),s&&s.m(t,null),a=!0},p(e,[l]){s&&s.p&&(!a||l&2)&&v(s,n,e,e[1],a?g(n,e[1],l,null):b(e[1]),null),l&1&&o(t,"hidden",!e[0])},i(e){a||(p(s,e),a=!0)},o(e){h(s,e),a=!1},d(e){e&&F(t),s&&s.d(e)}}}function q(i,t,a){let{$$slots:n={},$$scope:s}=t,{visible:e=!0}=t;return i.$$set=l=>{"visible"in l&&a(0,e=l.visible),"$$scope"in l&&a(1,s=l.$$scope)},[e,s,n]}class y extends r{constructor(t){super(),_(this,t,q,S,f,{visible:0})}}export{y as F}; +//# sourceMappingURL=Form.c11fdf11.js.map diff --git a/gradio/templates/cdn/assets/Form.c11fdf11.js.map b/gradio/templates/cdn/assets/Form.c11fdf11.js.map new file mode 100644 index 0000000000000000000000000000000000000000..b2633c6c86c7a053193b4726ac7c6c1cfe573d16 --- /dev/null +++ b/gradio/templates/cdn/assets/Form.c11fdf11.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Form.c11fdf11.js","sources":["../../../../ui/packages/app/src/components/Form/Form.svelte"],"sourcesContent":["\n\n
\n\t\n
\n\n\n"],"names":[],"mappings":"gRAIiC,cAAjC,2HAAiC,0HAHrB,UAAU"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Image.2e852803.js b/gradio/templates/cdn/assets/Image.2e852803.js new file mode 100644 index 0000000000000000000000000000000000000000..77c6a6059b204962f66667198d03302aab102ca0 --- /dev/null +++ b/gradio/templates/cdn/assets/Image.2e852803.js @@ -0,0 +1,2 @@ +import{S as g,i as u,s as v,F as d,K as _,B as r,O as n,f as y,E as c,p as b}from"./index.7a68216a.js";function o(t){let e,a;return{c(){e=d("img"),_(e.src,a=t[1]+t[0])||r(e,"src",a),r(e,"class","svelte-gqt00k"),n(e,"table",t[2]==="table"),n(e,"gallery",t[2]==="gallery"),n(e,"selected",t[3])},m(l,s){y(l,e,s)},p(l,[s]){s&3&&!_(e.src,a=l[1]+l[0])&&r(e,"src",a),s&4&&n(e,"table",l[2]==="table"),s&4&&n(e,"gallery",l[2]==="gallery"),s&8&&n(e,"selected",l[3])},i:c,o:c,d(l){l&&b(e)}}}function q(t,e,a){let{value:l}=e,{samples_dir:s}=e,{type:f}=e,{selected:m=!1}=e;return t.$$set=i=>{"value"in i&&a(0,l=i.value),"samples_dir"in i&&a(1,s=i.samples_dir),"type"in i&&a(2,f=i.type),"selected"in i&&a(3,m=i.selected)},[l,s,f,m]}class E extends g{constructor(e){super(),u(this,e,q,o,v,{value:0,samples_dir:1,type:2,selected:3})}}var h=E;export{h as E}; +//# sourceMappingURL=Image.2e852803.js.map diff --git a/gradio/templates/cdn/assets/Image.2e852803.js.map b/gradio/templates/cdn/assets/Image.2e852803.js.map new file mode 100644 index 0000000000000000000000000000000000000000..a271307cddce1b6966f4a091b3aa130a8eea712b --- /dev/null +++ b/gradio/templates/cdn/assets/Image.2e852803.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Image.2e852803.js","sources":["../../../../ui/packages/app/src/components/Dataset/ExampleComponents/Image.svelte"],"sourcesContent":["\n\n\n\n\n\n"],"names":[],"mappings":"6JASM,KAAc,6DACN,OAAS,OAAO,gBACd,OAAS,SAAS,+BAHlC,mCACM,KAAc,qCACN,OAAS,OAAO,qBACd,OAAS,SAAS,0EAVtB,YACA,kBACA,WACA,WAAoB"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/Image.3a14ca24.css b/gradio/templates/cdn/assets/Image.3a14ca24.css new file mode 100644 index 0000000000000000000000000000000000000000..60f45635043d082881d8d8a529c1142ee028a68b --- /dev/null +++ b/gradio/templates/cdn/assets/Image.3a14ca24.css @@ -0,0 +1 @@ +img.svelte-gqt00k{border-radius:var(--radius-lg);max-width:none}img.selected.svelte-gqt00k{border-color:var(--border-color-accent)}.table.svelte-gqt00k{margin:0 auto;border:2px solid var(--border-color-primary);border-radius:var(--radius-lg);width:var(--size-20);height:var(--size-20);object-fit:cover}.gallery.svelte-gqt00k{border:2px solid var(--border-color-primary);max-height:var(--size-20);object-fit:cover} diff --git a/gradio/templates/cdn/assets/Image.f3d382f6.js b/gradio/templates/cdn/assets/Image.f3d382f6.js new file mode 100644 index 0000000000000000000000000000000000000000..fa702e32f0c5016aad53e1000fbd3802c3a4a075 --- /dev/null +++ b/gradio/templates/cdn/assets/Image.f3d382f6.js @@ -0,0 +1,2 @@ +import{S as h,i as g,s as d,A as n,B as e,f,D as a,E as l,p as m}from"./index.7a68216a.js";function u(c){let t,r,s,o;return{c(){t=n("svg"),r=n("rect"),s=n("circle"),o=n("polyline"),e(r,"x","3"),e(r,"y","3"),e(r,"width","18"),e(r,"height","18"),e(r,"rx","2"),e(r,"ry","2"),e(s,"cx","8.5"),e(s,"cy","8.5"),e(s,"r","1.5"),e(o,"points","21 15 16 10 5 21"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 24 24"),e(t,"fill","none"),e(t,"stroke","currentColor"),e(t,"stroke-width","1.5"),e(t,"stroke-linecap","round"),e(t,"stroke-linejoin","round"),e(t,"class","feather feather-image")},m(i,p){f(i,t,p),a(t,r),a(t,s),a(t,o)},p:l,i:l,o:l,d(i){i&&m(t)}}}class x extends h{constructor(t){super(),g(this,t,null,u,d,{})}}export{x as I}; +//# sourceMappingURL=Image.f3d382f6.js.map diff --git a/gradio/templates/cdn/assets/Image.f3d382f6.js.map b/gradio/templates/cdn/assets/Image.f3d382f6.js.map new file mode 100644 index 0000000000000000000000000000000000000000..9c436d536c3900c78642bfbbdad2f5998f0513c5 --- /dev/null +++ b/gradio/templates/cdn/assets/Image.f3d382f6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Image.f3d382f6.js","sources":["../../../../ui/packages/icons/src/Image.svelte"],"sourcesContent":["\n\t\n\t\n\t\n\n"],"names":[],"mappings":"koBAAA,SAYC,OACA,OACA"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/api-logo.5346f193.svg b/gradio/templates/cdn/assets/api-logo.5346f193.svg new file mode 100644 index 0000000000000000000000000000000000000000..bce49a58f0e8a89980e96b8f3bb99f7da48e6254 --- /dev/null +++ b/gradio/templates/cdn/assets/api-logo.5346f193.svg @@ -0,0 +1,4 @@ + + + + diff --git a/gradio/templates/cdn/assets/color.f2fbe15a.js b/gradio/templates/cdn/assets/color.f2fbe15a.js new file mode 100644 index 0000000000000000000000000000000000000000..47ee0425c6f0b3071fd2824fdd19feb5fe8a5d7b --- /dev/null +++ b/gradio/templates/cdn/assets/color.f2fbe15a.js @@ -0,0 +1,2 @@ +import{am as o}from"./index.7a68216a.js";const t=r=>o[r%o.length];export{t as g}; +//# sourceMappingURL=color.f2fbe15a.js.map diff --git a/gradio/templates/cdn/assets/color.f2fbe15a.js.map b/gradio/templates/cdn/assets/color.f2fbe15a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..538fd1cad424c37e54268bcbd89b9b1c52f5285a --- /dev/null +++ b/gradio/templates/cdn/assets/color.f2fbe15a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"color.f2fbe15a.js","sources":["../../../../ui/packages/utils/src/color.ts"],"sourcesContent":["import { colors, ordered_colors } from \"@gradio/theme\";\n\nexport const get_next_color = (index: number): keyof typeof colors => {\n\treturn ordered_colors[index % ordered_colors.length];\n};\n"],"names":[],"mappings":"8CAEa,GAAiB,AAAC,GACvB,EAAe,EAAQ,EAAe"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/csv.27f5436c.js b/gradio/templates/cdn/assets/csv.27f5436c.js new file mode 100644 index 0000000000000000000000000000000000000000..7ee090c69a9158e1331c5630c3dff9699534ab58 --- /dev/null +++ b/gradio/templates/cdn/assets/csv.27f5436c.js @@ -0,0 +1,2 @@ +import{d as a}from"./dsv.7fe76a93.js";var s=a(","),v=s.parse,o=s.parseRows;export{v as a,o as c}; +//# sourceMappingURL=csv.27f5436c.js.map diff --git a/gradio/templates/cdn/assets/csv.27f5436c.js.map b/gradio/templates/cdn/assets/csv.27f5436c.js.map new file mode 100644 index 0000000000000000000000000000000000000000..a2fc13e7d828302e2d638bb4c4ef261c7c9670ec --- /dev/null +++ b/gradio/templates/cdn/assets/csv.27f5436c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csv.27f5436c.js","sources":["../../../../ui/node_modules/.pnpm/d3-dsv@3.0.1/node_modules/d3-dsv/src/csv.js"],"sourcesContent":["import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n"],"names":["dsv"],"mappings":"sCAEA,GAAI,GAAMA,EAAI,GAAG,EAEN,EAAW,EAAI,MACf,EAAe,EAAI"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/dockerfile.088eba71.js b/gradio/templates/cdn/assets/dockerfile.088eba71.js new file mode 100644 index 0000000000000000000000000000000000000000..1c4466ab9a87e5fe8865875adf758592dbfa167c --- /dev/null +++ b/gradio/templates/cdn/assets/dockerfile.088eba71.js @@ -0,0 +1,2 @@ +function c(n){a(n,"start");var t={},e=n.languageData||{},s=!1;for(var l in n)if(l!=e&&n.hasOwnProperty(l))for(var u=t[l]=[],o=n[l],r=0;r2&&o.token&&typeof o.token!="string"){e.pending=[];for(var g=2;g-1)return null;var l=e.indent.length-1,u=n[e.state];n:for(;;){for(var o=0;o 2 && rule.token && typeof rule.token != \"string\") {\n state.pending = [];\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n state.pending.push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n}\n\nfunction indentFunction(states, meta) {\n return function(state, textAfter) {\n if (state.indent == null || meta.dontIndentStates && meta.doneIndentState.indexOf(state.state) > -1)\n return null\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n}\n","import {simpleMode} from \"./simple-mode.js\"\n\nvar from = \"from\";\nvar fromRegex = new RegExp(\"^(\\\\s*)\\\\b(\" + from + \")\\\\b\", \"i\");\n\nvar shells = [\"run\", \"cmd\", \"entrypoint\", \"shell\"];\nvar shellsAsArrayRegex = new RegExp(\"^(\\\\s*)(\" + shells.join('|') + \")(\\\\s+\\\\[)\", \"i\");\n\nvar expose = \"expose\";\nvar exposeRegex = new RegExp(\"^(\\\\s*)(\" + expose + \")(\\\\s+)\", \"i\");\n\nvar others = [\n \"arg\", \"from\", \"maintainer\", \"label\", \"env\",\n \"add\", \"copy\", \"volume\", \"user\",\n \"workdir\", \"onbuild\", \"stopsignal\", \"healthcheck\", \"shell\"\n];\n\n// Collect all Dockerfile directives\nvar instructions = [from, expose].concat(shells).concat(others),\n instructionRegex = \"(\" + instructions.join('|') + \")\",\n instructionOnlyLine = new RegExp(\"^(\\\\s*)\" + instructionRegex + \"(\\\\s*)(#.*)?$\", \"i\"),\n instructionWithArguments = new RegExp(\"^(\\\\s*)\" + instructionRegex + \"(\\\\s+)\", \"i\");\n\nexport const dockerFile = simpleMode({\n start: [\n // Block comment: This is a line starting with a comment\n {\n regex: /^\\s*#.*$/,\n sol: true,\n token: \"comment\"\n },\n {\n regex: fromRegex,\n token: [null, \"keyword\"],\n sol: true,\n next: \"from\"\n },\n // Highlight an instruction without any arguments (for convenience)\n {\n regex: instructionOnlyLine,\n token: [null, \"keyword\", null, \"error\"],\n sol: true\n },\n {\n regex: shellsAsArrayRegex,\n token: [null, \"keyword\", null],\n sol: true,\n next: \"array\"\n },\n {\n regex: exposeRegex,\n token: [null, \"keyword\", null],\n sol: true,\n next: \"expose\"\n },\n // Highlight an instruction followed by arguments\n {\n regex: instructionWithArguments,\n token: [null, \"keyword\", null],\n sol: true,\n next: \"arguments\"\n },\n {\n regex: /./,\n token: null\n }\n ],\n from: [\n {\n regex: /\\s*$/,\n token: null,\n next: \"start\"\n },\n {\n // Line comment without instruction arguments is an error\n regex: /(\\s*)(#.*)$/,\n token: [null, \"error\"],\n next: \"start\"\n },\n {\n regex: /(\\s*\\S+\\s+)(as)/i,\n token: [null, \"keyword\"],\n next: \"start\"\n },\n // Fail safe return to start\n {\n token: null,\n next: \"start\"\n }\n ],\n single: [\n {\n regex: /(?:[^\\\\']|\\\\.)/,\n token: \"string\"\n },\n {\n regex: /'/,\n token: \"string\",\n pop: true\n }\n ],\n double: [\n {\n regex: /(?:[^\\\\\"]|\\\\.)/,\n token: \"string\"\n },\n {\n regex: /\"/,\n token: \"string\",\n pop: true\n }\n ],\n array: [\n {\n regex: /\\]/,\n token: null,\n next: \"start\"\n },\n {\n regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/,\n token: \"string\"\n }\n ],\n expose: [\n {\n regex: /\\d+$/,\n token: \"number\",\n next: \"start\"\n },\n {\n regex: /[^\\d]+$/,\n token: null,\n next: \"start\"\n },\n {\n regex: /\\d+/,\n token: \"number\"\n },\n {\n regex: /[^\\d]+/,\n token: null\n },\n // Fail safe return to start\n {\n token: null,\n next: \"start\"\n }\n ],\n arguments: [\n {\n regex: /^\\s*#.*$/,\n sol: true,\n token: \"comment\"\n },\n {\n regex: /\"(?:[^\\\\\"]|\\\\.)*\"?$/,\n token: \"string\",\n next: \"start\"\n },\n {\n regex: /\"/,\n token: \"string\",\n push: \"double\"\n },\n {\n regex: /'(?:[^\\\\']|\\\\.)*'?$/,\n token: \"string\",\n next: \"start\"\n },\n {\n regex: /'/,\n token: \"string\",\n push: \"single\"\n },\n {\n regex: /[^#\"']+[\\\\`]$/,\n token: null\n },\n {\n regex: /[^#\"']+$/,\n token: null,\n next: \"start\"\n },\n {\n regex: /[^#\"']+/,\n token: null\n },\n // Fail safe return to start\n {\n token: null,\n next: \"start\"\n }\n ],\n languageData: {\n commentTokens: {line: \"#\"}\n }\n});\n\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/dsv.7fe76a93.js b/gradio/templates/cdn/assets/dsv.7fe76a93.js new file mode 100644 index 0000000000000000000000000000000000000000..fd7a34bfb56dda82dfbc84dbca32dfe81c5c5b4d --- /dev/null +++ b/gradio/templates/cdn/assets/dsv.7fe76a93.js @@ -0,0 +1,6 @@ +var D={},A={},E=34,m=10,R=13;function I(r){return new Function("d","return {"+r.map(function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'}).join(",")+"}")}function B(r,t){var e=I(r);return function(a,c){return t(e(a),c,r)}}function F(r){var t=Object.create(null),e=[];return r.forEach(function(a){for(var c in a)c in t||e.push(t[c]=c)}),e}function f(r,t){var e=r+"",a=e.length;return a9999?"+"+f(r,6):f(r,4)}function S(r){var t=r.getUTCHours(),e=r.getUTCMinutes(),a=r.getUTCSeconds(),c=r.getUTCMilliseconds();return isNaN(r)?"Invalid Date":L(r.getUTCFullYear())+"-"+f(r.getUTCMonth()+1,2)+"-"+f(r.getUTCDate(),2)+(c?"T"+f(t,2)+":"+f(e,2)+":"+f(a,2)+"."+f(c,3)+"Z":a?"T"+f(t,2)+":"+f(e,2)+":"+f(a,2)+"Z":e||t?"T"+f(t,2)+":"+f(e,2)+"Z":"")}function Z(r){var t=new RegExp('["'+r+` +\r]`),e=r.charCodeAt(0);function a(n,o){var s,i,u=c(n,function(h,l){if(s)return s(h,l-1);i=h,s=o?B(h,o):I(h)});return u.columns=i||[],u}function c(n,o){var s=[],i=n.length,u=0,h=0,l,v=i<=0,C=!1;n.charCodeAt(i-1)===m&&--i,n.charCodeAt(i-1)===R&&--i;function w(){if(v)return A;if(C)return C=!1,D;var j,d=u,p;if(n.charCodeAt(d)===E){for(;u++=i?v=!0:(p=n.charCodeAt(u++))===m?C=!0:p===R&&(C=!0,n.charCodeAt(u)===m&&++u),n.slice(d+1,j-1).replace(/""/g,'"')}for(;u 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/frontmatter.daeef12a.js b/gradio/templates/cdn/assets/frontmatter.daeef12a.js new file mode 100644 index 0000000000000000000000000000000000000000..f12ceb2c49dd7949b278ebf355d2506a6c7cce37 --- /dev/null +++ b/gradio/templates/cdn/assets/frontmatter.daeef12a.js @@ -0,0 +1,2 @@ +import{s as m,t as a,f as s,a as i,p,S as l}from"./index.bb94c2e1.js";import{yaml as f}from"./yaml.44f733df.js";import"./index.7a68216a.js";import"./Blocks.1c8a32b7.js";import"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import"./BlockLabel.fd555cfa.js";import"./Empty.092ff864.js";/* empty css */import"./Copy.fa9f7398.js";import"./Download.e46fa6ff.js";const n=/^---\s*$/m,b={defineNodes:[{name:"Frontmatter",block:!0},"FrontmatterMark"],props:[m({Frontmatter:[a.documentMeta,a.monospace],FrontmatterMark:a.processingInstruction}),s.add({Frontmatter:i,FrontmatterMark:()=>null})],wrap:p(t=>{const{parser:e}=l.define(f);return t.type.name==="Frontmatter"?{parser:e,overlay:[{from:t.from+4,to:t.to-4}]}:null}),parseBlock:[{name:"Frontmatter",before:"HorizontalRule",parse:(t,e)=>{let r;const o=new Array;if(t.lineStart===0&&n.test(e.text)){for(o.push(t.elt("FrontmatterMark",0,4));t.nextLine();)if(n.test(e.text)){r=t.lineStart+4;break}return r!==void 0&&(o.push(t.elt("FrontmatterMark",r-4,r)),t.addElement(t.elt("Frontmatter",0,r,o))),!0}else return!1}}]};export{b as frontmatter}; +//# sourceMappingURL=frontmatter.daeef12a.js.map diff --git a/gradio/templates/cdn/assets/frontmatter.daeef12a.js.map b/gradio/templates/cdn/assets/frontmatter.daeef12a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..6023d4e0d58fbbd26c3feade85971054b8102373 --- /dev/null +++ b/gradio/templates/cdn/assets/frontmatter.daeef12a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"frontmatter.daeef12a.js","sources":["../../../../ui/packages/code/interactive/frontmatter.ts"],"sourcesContent":["import type {\n\tElement,\n\tMarkdownExtension,\n\tBlockContext,\n\tLine\n} from \"@lezer/markdown\";\nimport { parseMixed } from \"@lezer/common\";\nimport { yaml } from \"@codemirror/legacy-modes/mode/yaml\";\nimport { foldInside, foldNodeProp, StreamLanguage } from \"@codemirror/language\";\nimport { styleTags, tags } from \"@lezer/highlight\";\n\nconst frontMatterFence = /^---\\s*$/m;\n\nexport const frontmatter: MarkdownExtension = {\n\tdefineNodes: [{ name: \"Frontmatter\", block: true }, \"FrontmatterMark\"],\n\tprops: [\n\t\tstyleTags({\n\t\t\tFrontmatter: [tags.documentMeta, tags.monospace],\n\t\t\tFrontmatterMark: tags.processingInstruction\n\t\t}),\n\t\tfoldNodeProp.add({\n\t\t\tFrontmatter: foldInside,\n\t\t\tFrontmatterMark: () => null\n\t\t})\n\t],\n\twrap: parseMixed((node) => {\n\t\tconst { parser } = StreamLanguage.define(yaml);\n\t\tif (node.type.name === \"Frontmatter\") {\n\t\t\treturn {\n\t\t\t\tparser,\n\t\t\t\toverlay: [{ from: node.from + 4, to: node.to - 4 }]\n\t\t\t};\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}),\n\tparseBlock: [\n\t\t{\n\t\t\tname: \"Frontmatter\",\n\t\t\tbefore: \"HorizontalRule\",\n\t\t\tparse: (cx: BlockContext, line: Line): boolean => {\n\t\t\t\tlet end: number | undefined = undefined;\n\t\t\t\tconst children = new Array();\n\t\t\t\tif (cx.lineStart === 0 && frontMatterFence.test(line.text)) {\n\t\t\t\t\tchildren.push(cx.elt(\"FrontmatterMark\", 0, 4));\n\t\t\t\t\twhile (cx.nextLine()) {\n\t\t\t\t\t\tif (frontMatterFence.test(line.text)) {\n\t\t\t\t\t\t\tend = cx.lineStart + 4;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (end !== undefined) {\n\t\t\t\t\t\tchildren.push(cx.elt(\"FrontmatterMark\", end - 4, end));\n\t\t\t\t\t\tcx.addElement(cx.elt(\"Frontmatter\", 0, end, children));\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n};\n"],"names":[],"mappings":"4ZAWA,KAAM,GAAmB,YAEZ,EAAiC,CAC7C,YAAa,CAAC,CAAE,KAAM,cAAe,MAAO,IAAQ,iBAAiB,EACrE,MAAO,CACN,EAAU,CACT,YAAa,CAAC,EAAK,aAAc,EAAK,SAAS,EAC/C,gBAAiB,EAAK,sBACtB,EACD,EAAa,IAAI,CAChB,YAAa,EACb,gBAAiB,IAAM,KACvB,GAEF,KAAM,EAAW,AAAC,GAAS,MACpB,CAAE,UAAW,EAAe,OAAO,CAAI,QACzC,GAAK,KAAK,OAAS,cACf,CACN,SACA,QAAS,CAAC,CAAE,KAAM,EAAK,KAAO,EAAG,GAAI,EAAK,GAAK,EAAG,GAG5C,KAER,EACD,WAAY,CACX,CACC,KAAM,cACN,OAAQ,iBACR,MAAO,CAAC,EAAkB,IAAwB,IAC7C,QACE,GAAW,GAAI,UACjB,EAAG,YAAc,GAAK,EAAiB,KAAK,EAAK,IAAI,EAAG,OAClD,KAAK,EAAG,IAAI,kBAAmB,EAAG,CAAC,CAAC,EACtC,EAAG,eACL,EAAiB,KAAK,EAAK,IAAI,EAAG,GAC/B,EAAG,UAAY,cAInB,KAAQ,WACF,KAAK,EAAG,IAAI,kBAAmB,EAAM,EAAG,CAAG,CAAC,IAClD,WAAW,EAAG,IAAI,cAAe,EAAG,EAAK,CAAQ,CAAC,GAE/C,cAEA,KAKZ"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.00ec9920.css b/gradio/templates/cdn/assets/index.00ec9920.css new file mode 100644 index 0000000000000000000000000000000000000000..15c9d289c09b6f2581d92648fe1acdaebd8776fd --- /dev/null +++ b/gradio/templates/cdn/assets/index.00ec9920.css @@ -0,0 +1 @@ +.model3D.svelte-14ct53h{display:flex;position:relative;width:var(--size-full);height:var(--size-full)}canvas.svelte-14ct53h{width:var(--size-full);height:var(--size-full);object-fit:contain}.download.svelte-14ct53h{position:absolute;top:6px;right:6px}.input-model.svelte-wn75i6{display:flex;position:relative;justify-content:center;align-items:center;width:var(--size-full);height:var(--size-64)}canvas.svelte-wn75i6{width:var(--size-full);height:var(--size-full);object-fit:contain} diff --git a/gradio/templates/cdn/assets/index.06965fd8.js b/gradio/templates/cdn/assets/index.06965fd8.js new file mode 100644 index 0000000000000000000000000000000000000000..a74a0efc91d9a7c011ff3e3b1afaaef3e41806e0 --- /dev/null +++ b/gradio/templates/cdn/assets/index.06965fd8.js @@ -0,0 +1,2 @@ +import{S as T,i as D,s as G,F as b,H as C,G as y,B as u,f as v,D as h,J as q,p as k,c as N,m as R,o as A,t as B,l as I,N as j,A as z,O as E,K as J,af as fe,b as K,e as re,g as ue,h as _e,k as ce,n as oe,v as ge}from"./index.7a68216a.js";import"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{B as M}from"./BlockTitle.39fa370e.js";import"./Info.4b69e77f.js";const w=i=>{var e=null;return i<0?e=[52,152,219]:e=[231,76,60],me(he(Math.abs(i),[255,255,255],e))},he=(i,e,t)=>{i>1&&(i=1),i=Math.sqrt(i);var n=[0,0,0],o;for(o=0;o<3;o++)n[o]=Math.round(e[o]*(1-i)+t[o]*i);return n},me=i=>"rgb("+i[0]+", "+i[1]+", "+i[2]+")",U=(i,e,t,n,o)=>{var s=n/o,c=e/t,l=0,r=0,f=i?s>c:s{"interpretation"in s&&t(0,n=s.interpretation),"label"in s&&t(1,o=s.label)},[n,o]}class ke extends T{constructor(e){super(),D(this,e,ve,be,G,{interpretation:0,label:1})}}function Q(i,e,t){const n=i.slice();return n[3]=e[t],n[5]=t,n}function pe(i){let e;return{c(){e=C(i[2])},m(t,n){v(t,e,n)},p(t,n){n&4&&q(e,t[2])},d(t){t&&k(e)}}}function V(i){let e,t=i[3]+"",n,o,s;return{c(){e=b("li"),n=C(t),o=y(),u(e,"class","dropdown-item svelte-1cqwepf"),u(e,"style",s="background-color: "+w(i[0][i[5]]))},m(c,l){v(c,e,l),h(e,n),h(e,o)},p(c,l){l&2&&t!==(t=c[3]+"")&&q(n,t),l&1&&s!==(s="background-color: "+w(c[0][c[5]]))&&u(e,"style",s)},d(c){c&&k(e)}}}function we(i){let e,t,n,o,s;t=new M({props:{$$slots:{default:[pe]},$$scope:{ctx:i}}});let c=i[1],l=[];for(let r=0;r{"interpretation"in c&&t(0,n=c.interpretation),"choices"in c&&t(1,o=c.choices),"label"in c&&t(2,s=c.label)},[n,o,s]}class Se extends T{constructor(e){super(),D(this,e,ye,we,G,{interpretation:0,choices:1,label:2})}}function Ce(i){let e;return{c(){e=C(i[0])},m(t,n){v(t,e,n)},p(t,n){n&1&&q(e,t[0])},d(t){t&&k(e)}}}function qe(i){let e,t,n,o,s,c,l,r,f,a,_,g,m;return t=new M({props:{$$slots:{default:[Ce]},$$scope:{ctx:i}}}),{c(){e=b("div"),N(t.$$.fragment),n=y(),o=b("button"),s=b("div"),l=y(),r=b("div"),f=z("svg"),a=z("line"),_=z("line"),u(s,"class","checkbox svelte-1nw19ca"),u(s,"style",c="background-color: "+w(i[2][0])),u(a,"x1","-7.5"),u(a,"y1","0"),u(a,"x2","-2.5"),u(a,"y2","5"),u(a,"stroke","black"),u(a,"stroke-width","4"),u(a,"stroke-linecap","round"),u(_,"x1","-2.5"),u(_,"y1","5"),u(_,"x2","7.5"),u(_,"y2","-7.5"),u(_,"stroke","black"),u(_,"stroke-width","4"),u(_,"stroke-linecap","round"),u(f,"viewBox","-10 -10 20 20"),u(f,"class","svelte-1nw19ca"),u(r,"class","checkbox svelte-1nw19ca"),u(r,"style",g="background-color: "+w(i[2][1])),u(o,"class","checkbox-item svelte-1nw19ca"),E(o,"selected",i[1]),u(e,"class","input-checkbox svelte-1nw19ca")},m(d,p){v(d,e,p),R(t,e,null),h(e,n),h(e,o),h(o,s),h(o,l),h(o,r),h(r,f),h(f,a),h(f,_),m=!0},p(d,[p]){const S={};p&9&&(S.$$scope={dirty:p,ctx:d}),t.$set(S),(!m||p&4&&c!==(c="background-color: "+w(d[2][0])))&&u(s,"style",c),(!m||p&4&&g!==(g="background-color: "+w(d[2][1])))&&u(r,"style",g),p&2&&E(o,"selected",d[1])},i(d){m||(A(t.$$.fragment,d),m=!0)},o(d){B(t.$$.fragment,d),m=!1},d(d){d&&k(e),I(t)}}}function Ae(i,e,t){let{label:n=""}=e,{original:o}=e,{interpretation:s}=e;return i.$$set=c=>{"label"in c&&t(0,n=c.label),"original"in c&&t(1,o=c.original),"interpretation"in c&&t(2,s=c.interpretation)},[n,o,s]}class Be extends T{constructor(e){super(),D(this,e,Ae,qe,G,{label:0,original:1,interpretation:2})}}function W(i,e,t){const n=i.slice();return n[4]=e[t],n[6]=t,n}function Ne(i){let e;return{c(){e=C(i[3])},m(t,n){v(t,e,n)},p(t,n){n&8&&q(e,t[3])},d(t){t&&k(e)}}}function X(i){let e,t,n,o,s,c,l,r,f,a,_=i[4]+"",g,m;return{c(){e=b("button"),t=b("div"),o=y(),s=b("div"),c=z("svg"),l=z("line"),r=z("line"),a=y(),g=C(_),m=y(),u(t,"class","checkbox svelte-1cbhr6k"),u(t,"style",n="background-color: "+w(i[1][i[6]][0])),u(l,"x1","-7.5"),u(l,"y1","0"),u(l,"x2","-2.5"),u(l,"y2","5"),u(l,"stroke","black"),u(l,"stroke-width","4"),u(l,"stroke-linecap","round"),u(r,"x1","-2.5"),u(r,"y1","5"),u(r,"x2","7.5"),u(r,"y2","-7.5"),u(r,"stroke","black"),u(r,"stroke-width","4"),u(r,"stroke-linecap","round"),u(c,"viewBox","-10 -10 20 20"),u(c,"class","svelte-1cbhr6k"),u(s,"class","checkbox svelte-1cbhr6k"),u(s,"style",f="background-color: "+w(i[1][i[6]][1])),u(e,"class","checkbox-item svelte-1cbhr6k"),E(e,"selected",i[0].includes(i[4]))},m(d,p){v(d,e,p),h(e,t),h(e,o),h(e,s),h(s,c),h(c,l),h(c,r),h(e,a),h(e,g),h(e,m)},p(d,p){p&2&&n!==(n="background-color: "+w(d[1][d[6]][0]))&&u(t,"style",n),p&2&&f!==(f="background-color: "+w(d[1][d[6]][1]))&&u(s,"style",f),p&4&&_!==(_=d[4]+"")&&q(g,_),p&5&&E(e,"selected",d[0].includes(d[4]))},d(d){d&&k(e)}}}function Re(i){let e,t,n,o;t=new M({props:{$$slots:{default:[Ne]},$$scope:{ctx:i}}});let s=i[2],c=[];for(let l=0;l{"original"in l&&t(0,n=l.original),"interpretation"in l&&t(1,o=l.interpretation),"choices"in l&&t(2,s=l.choices),"label"in l&&t(3,c=l.label)},[n,o,s,c]}class Te extends T{constructor(e){super(),D(this,e,Ie,Re,G,{original:0,interpretation:1,choices:2,label:3})}}function Y(i,e,t){const n=i.slice();return n[6]=e[t],n}function De(i){let e;return{c(){e=C(i[5])},m(t,n){v(t,e,n)},p(t,n){n&32&&q(e,t[5])},d(t){t&&k(e)}}}function Z(i){let e,t;return{c(){e=b("div"),u(e,"style",t="background-color: "+w(i[6])),u(e,"class","svelte-1sxprr7")},m(n,o){v(n,e,o)},p(n,o){o&2&&t!==(t="background-color: "+w(n[6]))&&u(e,"style",t)},d(n){n&&k(e)}}}function Ge(i){let e,t,n,o,s,c,l,r,f,a;t=new M({props:{$$slots:{default:[De]},$$scope:{ctx:i}}});let _=i[1],g=[];for(let m=0;m<_.length;m+=1)g[m]=Z(Y(i,_,m));return{c(){e=b("div"),N(t.$$.fragment),n=y(),o=b("input"),s=y(),c=b("div");for(let m=0;m{"original"in f&&t(0,n=f.original),"interpretation"in f&&t(1,o=f.interpretation),"minimum"in f&&t(2,s=f.minimum),"maximum"in f&&t(3,c=f.maximum),"step"in f&&t(4,l=f.step),"label"in f&&t(5,r=f.label)},[n,o,s,c,l,r]}class je extends T{constructor(e){super(),D(this,e,Me,Ge,G,{original:0,interpretation:1,minimum:2,maximum:3,step:4,label:5})}}function x(i,e,t){const n=i.slice();return n[4]=e[t],n[6]=t,n}function ze(i){let e;return{c(){e=C(i[3])},m(t,n){v(t,e,n)},p(t,n){n&8&&q(e,t[3])},d(t){t&&k(e)}}}function $(i){let e,t,n,o,s=i[4]+"",c,l;return{c(){e=b("button"),t=b("div"),o=y(),c=C(s),l=y(),u(t,"class","radio-circle svelte-1nekfre"),u(t,"style",n="background-color: "+w(i[1][i[6]])),u(e,"class","radio-item svelte-1nekfre"),E(e,"selected",i[0]===i[4])},m(r,f){v(r,e,f),h(e,t),h(e,o),h(e,c),h(e,l)},p(r,f){f&2&&n!==(n="background-color: "+w(r[1][r[6]]))&&u(t,"style",n),f&4&&s!==(s=r[4]+"")&&q(c,s),f&5&&E(e,"selected",r[0]===r[4])},d(r){r&&k(e)}}}function Ee(i){let e,t,n,o;t=new M({props:{$$slots:{default:[ze]},$$scope:{ctx:i}}});let s=i[2],c=[];for(let l=0;l{"original"in l&&t(0,n=l.original),"interpretation"in l&&t(1,o=l.interpretation),"choices"in l&&t(2,s=l.choices),"label"in l&&t(3,c=l.label)},[n,o,s,c]}class Oe extends T{constructor(e){super(),D(this,e,Fe,Ee,G,{original:0,interpretation:1,choices:2,label:3})}}function He(i){let e;return{c(){e=C(i[1])},m(t,n){v(t,e,n)},p(t,n){n&2&&q(e,t[1])},d(t){t&&k(e)}}}function Je(i){let e,t,n,o,s,c,l,r,f,a;return t=new M({props:{$$slots:{default:[He]},$$scope:{ctx:i}}}),{c(){e=b("div"),N(t.$$.fragment),n=y(),o=b("div"),s=b("div"),c=b("canvas"),l=y(),r=b("img"),u(s,"class","interpretation svelte-h0dntu"),J(r.src,f=i[0])||u(r,"src",f),u(r,"class","svelte-h0dntu"),u(o,"class","image-preview svelte-h0dntu"),u(e,"class","input-image")},m(_,g){v(_,e,g),R(t,e,null),h(e,n),h(e,o),h(o,s),h(s,c),i[6](c),h(o,l),h(o,r),i[7](r),a=!0},p(_,[g]){const m={};g&514&&(m.$$scope={dirty:g,ctx:_}),t.$set(m),(!a||g&1&&!J(r.src,f=_[0]))&&u(r,"src",f)},i(_){a||(A(t.$$.fragment,_),a=!0)},o(_){B(t.$$.fragment,_),a=!1},d(_){_&&k(e),I(t),i[6](null),i[7](null)}}}function Ke(i,e,t){let{original:n}=e,{interpretation:o}=e,{shape:s}=e,{label:c=""}=e,l,r;const f=(g,m,d,p)=>{var S=d/g[0].length,F=p/g.length,O=0;g.forEach(function(se){var H=0;se.forEach(function(ae){m.fillStyle=w(ae),m.fillRect(H*S,O*F,S,F),H++}),O++})};fe(()=>{let g=U(!0,r.width,r.height,r.naturalWidth,r.naturalHeight);s&&(g=U(!0,g.width,g.height,s[0],s[1]));let m=g.width,d=g.height;l.setAttribute("height",`${d}`),l.setAttribute("width",`${m}`),f(o,l.getContext("2d"),m,d)});function a(g){K[g?"unshift":"push"](()=>{l=g,t(2,l)})}function _(g){K[g?"unshift":"push"](()=>{r=g,t(3,r)})}return i.$$set=g=>{"original"in g&&t(0,n=g.original),"interpretation"in g&&t(4,o=g.interpretation),"shape"in g&&t(5,s=g.shape),"label"in g&&t(1,c=g.label)},[n,c,l,r,o,s,a,_]}class Ue extends T{constructor(e){super(),D(this,e,Ke,Je,G,{original:0,interpretation:4,shape:5,label:1})}}function ee(i,e,t){const n=i.slice();return n[2]=e[t],n}function Le(i){let e;return{c(){e=C(i[1])},m(t,n){v(t,e,n)},p(t,n){n&2&&q(e,t[1])},d(t){t&&k(e)}}}function te(i){let e,t;return{c(){e=b("div"),u(e,"class","item svelte-13lmfcp"),u(e,"style",t="background-color: "+w(i[2]))},m(n,o){v(n,e,o)},p(n,o){o&1&&t!==(t="background-color: "+w(n[2]))&&u(e,"style",t)},d(n){n&&k(e)}}}function Pe(i){let e,t,n,o,s;t=new M({props:{$$slots:{default:[Le]},$$scope:{ctx:i}}});let c=i[0],l=[];for(let r=0;r{"interpretation"in s&&t(0,n=s.interpretation),"label"in s&&t(1,o=s.label)},[n,o]}class Ve extends T{constructor(e){super(),D(this,e,Qe,Pe,G,{interpretation:0,label:1})}}function le(i,e,t){const n=i.slice();return n[2]=e[t][0],n[3]=e[t][1],n}function We(i){let e;return{c(){e=C(i[0])},m(t,n){v(t,e,n)},p(t,n){n&1&&q(e,t[0])},d(t){t&&k(e)}}}function ne(i){let e,t=i[2]+"",n,o,s;return{c(){e=b("span"),n=C(t),o=y(),u(e,"class","text-span svelte-15c0u2m"),u(e,"style",s="background-color: "+w(i[3]))},m(c,l){v(c,e,l),h(e,n),h(e,o)},p(c,l){l&2&&t!==(t=c[2]+"")&&q(n,t),l&2&&s!==(s="background-color: "+w(c[3]))&&u(e,"style",s)},d(c){c&&k(e)}}}function Xe(i){let e,t,n,o;t=new M({props:{$$slots:{default:[We]},$$scope:{ctx:i}}});let s=i[1],c=[];for(let l=0;l{"label"in s&&t(0,n=s.label),"interpretation"in s&&t(1,o=s.interpretation)},[n,o]}class Ze extends T{constructor(e){super(),D(this,e,Ye,Xe,G,{label:0,interpretation:1})}}const xe={audio:Ve,dropdown:Se,checkbox:Be,checkboxgroup:Te,number:ke,slider:je,radio:Oe,image:Ue,textbox:Ze};function ie(i){let e,t,n;const o=[i[0],{original:i[1].original},{interpretation:i[1].interpretation}];var s=i[2];function c(l){let r={};for(let f=0;f{I(a,1)}),oe()}s?(e=new s(c()),N(e.$$.fragment),A(e.$$.fragment,1),R(e,t.parentNode,t)):e=null}else s&&e.$set(f)},i(l){n||(e&&A(e.$$.fragment,l),n=!0)},o(l){e&&B(e.$$.fragment,l),n=!1},d(l){l&&k(t),e&&I(e,l)}}}function $e(i){let e,t,n=i[1]&&ie(i);return{c(){n&&n.c(),e=re()},m(o,s){n&&n.m(o,s),v(o,e,s),t=!0},p(o,[s]){o[1]?n?(n.p(o,s),s&2&&A(n,1)):(n=ie(o),n.c(),A(n,1),n.m(e.parentNode,e)):n&&(ce(),B(n,1,1,()=>{n=null}),oe())},i(o){t||(A(n),t=!0)},o(o){B(n),t=!1},d(o){n&&n.d(o),o&&k(e)}}}function et(i,e,t){let n,{component:o}=e,{component_props:s}=e,{value:c}=e;return i.$$set=l=>{"component"in l&&t(3,o=l.component),"component_props"in l&&t(0,s=l.component_props),"value"in l&&t(1,c=l.value)},i.$$.update=()=>{i.$$.dirty&8&&t(2,n=xe[o])},[s,c,n,o]}class tt extends T{constructor(e){super(),D(this,e,et,$e,G,{component:3,component_props:0,value:1})}}var ct=tt;const ot=["dynamic"];export{ct as Component,ot as modes}; +//# sourceMappingURL=index.06965fd8.js.map diff --git a/gradio/templates/cdn/assets/index.06965fd8.js.map b/gradio/templates/cdn/assets/index.06965fd8.js.map new file mode 100644 index 0000000000000000000000000000000000000000..f5ba57f33fc26c96a373160cfad8cc70925015c4 --- /dev/null +++ b/gradio/templates/cdn/assets/index.06965fd8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.06965fd8.js","sources":["../../../../ui/packages/app/src/components/Interpretation/utils.ts","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Number.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Dropdown.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Checkbox.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/CheckboxGroup.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Slider.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Radio.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Image.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Audio.svelte","../../../../ui/packages/app/src/components/Interpretation/InterpretationComponents/Textbox.svelte","../../../../ui/packages/app/src/components/Interpretation/directory.ts","../../../../ui/packages/app/src/components/Interpretation/Interpretation.svelte","../../../../ui/packages/app/src/components/Interpretation/index.ts"],"sourcesContent":["export const getSaliencyColor = (value: number): string => {\n\tvar color: [number, number, number] | null = null;\n\tif (value < 0) {\n\t\tcolor = [52, 152, 219];\n\t} else {\n\t\tcolor = [231, 76, 60];\n\t}\n\treturn colorToString(interpolate(Math.abs(value), [255, 255, 255], color));\n};\n\nconst interpolate = (\n\tval: number,\n\trgb1: [number, number, number],\n\trgb2: [number, number, number]\n): [number, number, number] => {\n\tif (val > 1) {\n\t\tval = 1;\n\t}\n\tval = Math.sqrt(val);\n\tvar rgb: [number, number, number] = [0, 0, 0];\n\tvar i;\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = Math.round(rgb1[i] * (1.0 - val) + rgb2[i] * val);\n\t}\n\treturn rgb;\n};\n\nconst colorToString = (rgb: [number, number, number]): string => {\n\treturn \"rgb(\" + rgb[0] + \", \" + rgb[1] + \", \" + rgb[2] + \")\";\n};\n\nexport const getObjectFitSize = (\n\tcontains: boolean /* true = contain, false = cover */,\n\tcontainerWidth: number,\n\tcontainerHeight: number,\n\twidth: number,\n\theight: number\n) => {\n\tvar doRatio = width / height;\n\tvar cRatio = containerWidth / containerHeight;\n\tvar targetWidth = 0;\n\tvar targetHeight = 0;\n\tvar test = contains ? doRatio > cRatio : doRatio < cRatio;\n\n\tif (test) {\n\t\ttargetWidth = containerWidth;\n\t\ttargetHeight = targetWidth / doRatio;\n\t} else {\n\t\ttargetHeight = containerHeight;\n\t\ttargetWidth = targetHeight * doRatio;\n\t}\n\n\treturn {\n\t\twidth: targetWidth,\n\t\theight: targetHeight,\n\t\tx: (containerWidth - targetWidth) / 2,\n\t\ty: (containerHeight - targetHeight) / 2\n\t};\n};\n","\n\n
\n\t{label}\n\t
\n\t\t{#each interpretation as interpret_value}\n\t\t\t\n\t\t\t\t{interpret_value[0]}\n\t\t\t
\n\t\t{/each}\n\t
\n\n\n\n","\n\n
\n\t{label}\n\t
    \n\t\t{#each choices as choice, i}\n\t\t\t\n\t\t\t\t{choice}\n\t\t\t\n\t\t{/each}\n\t
\n
\n\n\n","\n\n
\n\t{label}\n\t
\n\t\n\n\n\n","\n\n
\n\t{label}\n\t{#each choices as choice, i}\n\t\t
\n\t\t\t{choice}\n\t\t\n\t{/each}\n\n\n\n","\n\n
\n\t{label}\n\t\n\t
\n\t\t{#each interpretation as interpret_value}\n\t\t\t
\n\t\t{/each}\n\t
\n\t
\n\t\t{original}\n\t
\n
\n\n\n","\n\n
\n\t{label}\n\t{#each choices as choice, i}\n\t\t\n\t{/each}\n
\n\n\n","\n\n
\n\t{label}\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t
\n
\n\n\n","\n\n
\n\t{label}\n\t
\n\t\t{#each interpretation as interpret_value}\n\t\t\t\n\t\t{/each}\n\t
\n
\n\n\n","\n\n
\n\t{label}\n\t{#each interpretation as [text, saliency]}\n\t\t\n\t\t\t{text}\n\t\t\n\t{/each}\n
\n\n\n","import InterpretationNumber from \"./InterpretationComponents/Number.svelte\";\nimport InterpretationDropdown from \"./InterpretationComponents/Dropdown.svelte\";\nimport InterpretationCheckbox from \"./InterpretationComponents/Checkbox.svelte\";\nimport InterpretationCheckboxGroup from \"./InterpretationComponents/CheckboxGroup.svelte\";\nimport InterpretationSlider from \"./InterpretationComponents/Slider.svelte\";\nimport InterpretationRadio from \"./InterpretationComponents/Radio.svelte\";\nimport InterpretationImage from \"./InterpretationComponents/Image.svelte\";\nimport InterpretationAudio from \"./InterpretationComponents/Audio.svelte\";\nimport InterpretationTextbox from \"./InterpretationComponents/Textbox.svelte\";\n\nexport const component_map = {\n\taudio: InterpretationAudio,\n\tdropdown: InterpretationDropdown,\n\tcheckbox: InterpretationCheckbox,\n\tcheckboxgroup: InterpretationCheckboxGroup,\n\tnumber: InterpretationNumber,\n\tslider: InterpretationSlider,\n\tradio: InterpretationRadio,\n\timage: InterpretationImage,\n\ttextbox: InterpretationTextbox\n};\n","\n\n{#if value}\n\t\n{/if}\n","export { default as Component } from \"./Interpretation.svelte\";\nexport const modes = [\"dynamic\"];\n"],"names":["InterpretationAudio","InterpretationDropdown","InterpretationCheckbox","InterpretationCheckboxGroup","InterpretationNumber","InterpretationSlider","InterpretationRadio","InterpretationImage","InterpretationTextbox"],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.0cc89e10.js b/gradio/templates/cdn/assets/index.0cc89e10.js new file mode 100644 index 0000000000000000000000000000000000000000..b163fcade117f299da639358bdc6e0a3a318ffb6 --- /dev/null +++ b/gradio/templates/cdn/assets/index.0cc89e10.js @@ -0,0 +1,14 @@ +import{P as lO,N as hO,c as $O,D as cO,e as T,T as m,I as eO,s as SO,t as l,y as P,j as _,L as pO,i as PO,w as W,z as fO,d as uO,f as ZO,a as gO,A as tO,b as XO,B as dO,C as mO,v as YO,E as U,m as bO,x as xO}from"./index.bb94c2e1.js";import"./index.7a68216a.js";import"./Blocks.1c8a32b7.js";import"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import"./BlockLabel.fd555cfa.js";import"./Empty.092ff864.js";/* empty css */import"./Copy.fa9f7398.js";import"./Download.e46fa6ff.js";class b{constructor(O,e,t,a,r,s,Q,n,o,$=0,h){this.p=O,this.stack=e,this.state=t,this.reducePos=a,this.pos=r,this.score=s,this.buffer=Q,this.bufferBase=n,this.curContext=o,this.lookAhead=$,this.parent=h}toString(){return`[${this.stack.filter((O,e)=>e%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(O,e,t=0){let a=O.parser.context;return new b(O,[],e,t,t,0,[],0,a?new C(a,a.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(O,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=O}reduce(O){var e;let t=O>>19,a=O&65535,{parser:r}=this.p,s=r.dynamicPrecedence(a);if(s&&(this.score+=s),t==0){this.pushState(r.getGoto(this.state,a,!0),this.reducePos),a=2e3&&!(!((e=this.p.parser.nodeSet.types[a])===null||e===void 0)&&e.isAnonymous)&&(n==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=o):this.p.lastBigReductionSizeQ;)this.stack.pop();this.reduceContext(a,n)}storeNode(O,e,t,a=4,r=!1){if(O==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&s.buffer[Q-4]==0&&s.buffer[Q-1]>-1){if(e==t)return;if(s.buffer[Q-2]>=e){s.buffer[Q-2]=t;return}}}if(!r||this.pos==t)this.buffer.push(O,e,t,a);else{let s=this.buffer.length;if(s>0&&this.buffer[s-4]!=0)for(;s>0&&this.buffer[s-2]>t;)this.buffer[s]=this.buffer[s-4],this.buffer[s+1]=this.buffer[s-3],this.buffer[s+2]=this.buffer[s-2],this.buffer[s+3]=this.buffer[s-1],s-=4,a>4&&(a-=4);this.buffer[s]=O,this.buffer[s+1]=e,this.buffer[s+2]=t,this.buffer[s+3]=a}}shift(O,e,t){let a=this.pos;if(O&131072)this.pushState(O&65535,this.pos);else if((O&262144)==0){let r=O,{parser:s}=this.p;(t>this.pos||e<=s.maxNode)&&(this.pos=t,s.stateFlag(r,1)||(this.reducePos=t)),this.pushState(r,a),this.shiftContext(e,a),e<=s.maxNode&&this.buffer.push(e,a,t,4)}else this.pos=t,this.shiftContext(e,a),e<=this.p.parser.maxNode&&this.buffer.push(e,a,t,4)}apply(O,e,t){O&65536?this.reduce(O):this.shift(O,e,t)}useNode(O,e){let t=this.p.reused.length-1;(t<0||this.p.reused[t]!=O)&&(this.p.reused.push(O),t++);let a=this.pos;this.reducePos=this.pos=a+O.length,this.pushState(e,a),this.buffer.push(t,a,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,O,this,this.p.stream.reset(this.pos-O.length)))}split(){let O=this,e=O.buffer.length;for(;e>0&&O.buffer[e-2]>O.reducePos;)e-=4;let t=O.buffer.slice(e),a=O.bufferBase+e;for(;O&&a==O.bufferBase;)O=O.parent;return new b(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,t,a,this.curContext,this.lookAhead,O)}recoverByDelete(O,e){let t=O<=this.p.parser.maxNode;t&&this.storeNode(O,this.pos,e,4),this.storeNode(0,this.pos,e,t?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(O){for(let e=new kO(this);;){let t=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,O);if(t==0)return!1;if((t&65536)==0)return!0;e.reduce(t)}}recoverByInsert(O){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>4<<1||this.stack.length>=120){let a=[];for(let r=0,s;rn&1&&Q==s)||a.push(e[r],s)}e=a}let t=[];for(let a=0;a>19,a=O&65535,r=this.stack.length-t*3;if(r<0||e.getGoto(this.stack[r],a,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(O),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:O}=this.p;return O.data[O.stateSlot(this.state,1)]==65535&&!O.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(O){if(this.state!=O.state||this.stack.length!=O.stack.length)return!1;for(let e=0;ethis.lookAhead&&(this.emitLookAhead(),this.lookAhead=O)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class C{constructor(O,e){this.tracker=O,this.context=e,this.hash=O.strict?O.hash(e):0}}var R;(function(i){i[i.Insert=200]="Insert",i[i.Delete=190]="Delete",i[i.Reduce=100]="Reduce",i[i.MaxNext=4]="MaxNext",i[i.MaxInsertStackDepth=300]="MaxInsertStackDepth",i[i.DampenInsertStackDepth=120]="DampenInsertStackDepth",i[i.MinBigReduction=2e3]="MinBigReduction"})(R||(R={}));class kO{constructor(O){this.start=O,this.state=O.state,this.stack=O.stack,this.base=this.stack.length}reduce(O){let e=O&65535,t=O>>19;t==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(t-1)*3;let a=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=a}}class x{constructor(O,e,t){this.stack=O,this.pos=e,this.index=t,this.buffer=O.buffer,this.index==0&&this.maybeNext()}static create(O,e=O.bufferBase+O.buffer.length){return new x(O,e,e-O.bufferBase)}maybeNext(){let O=this.stack.parent;O!=null&&(this.index=this.stack.bufferBase-O.bufferBase,this.stack=O,this.buffer=O.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new x(this.stack,this.pos,this.index)}}function d(i,O=Uint16Array){if(typeof i!="string")return i;let e=null;for(let t=0,a=0;t=92&&s--,s>=34&&s--;let n=s-32;if(n>=46&&(n-=46,Q=!0),r+=n,Q)break;r*=46}e?e[a++]=r:e=new O(r)}return e}class Y{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const z=new Y;class yO{constructor(O,e){this.input=O,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=z,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(O,e){let t=this.range,a=this.rangeIndex,r=this.pos+O;for(;rt.to:r>=t.to;){if(a==this.ranges.length-1)return null;let s=this.ranges[++a];r+=s.from-t.to,t=s}return r}clipPos(O){if(O>=this.range.from&&OO)return Math.max(O,e.from);return this.end}peek(O){let e=this.chunkOff+O,t,a;if(e>=0&&e=this.chunk2Pos&&tQ.to&&(this.chunk2=this.chunk2.slice(0,Q.to-t)),a=this.chunk2.charCodeAt(0)}}return t>=this.token.lookAhead&&(this.token.lookAhead=t+1),a}acceptToken(O,e=0){let t=e?this.resolveOffset(e,-1):this.pos;if(t==null||t=this.chunk2Pos&&this.posthis.range.to?O.slice(0,this.range.to-this.pos):O,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(O=1){for(this.chunkOff+=O;this.pos+O>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();O-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=O,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(O,e){if(e?(this.token=e,e.start=O,e.lookAhead=O+1,e.value=e.extended=-1):this.token=z,this.pos!=O){if(this.pos=O,O==this.end)return this.setDone(),this;for(;O=this.range.to;)this.range=this.ranges[++this.rangeIndex];O>=this.chunkPos&&O=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(O-this.chunkPos,e-this.chunkPos);if(O>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(O-this.chunk2Pos,e-this.chunk2Pos);if(O>=this.range.from&&e<=this.range.to)return this.input.read(O,e);let t="";for(let a of this.ranges){if(a.from>=e)break;a.to>O&&(t+=this.input.read(Math.max(a.from,O),Math.min(a.to,e)))}return t}}class g{constructor(O,e){this.data=O,this.id=e}token(O,e){let{parser:t}=e.p;iO(this.data,O,e,this.id,t.data,t.tokenPrecTable)}}g.prototype.contextual=g.prototype.fallback=g.prototype.extend=!1;class V{constructor(O,e,t){this.precTable=e,this.elseToken=t,this.data=typeof O=="string"?d(O):O}token(O,e){let t=O.pos,a;for(;a=O.pos,iO(this.data,O,e,0,this.data,this.precTable),!(O.token.value>-1);){if(this.elseToken==null)return;if(O.next<0)break;O.advance(),O.reset(a+1,O.token)}a>t&&(O.reset(t,O.token),O.acceptToken(this.elseToken,a-t))}}V.prototype.contextual=g.prototype.fallback=g.prototype.extend=!1;class G{constructor(O,e={}){this.token=O,this.contextual=!!e.contextual,this.fallback=!!e.fallback,this.extend=!!e.extend}}function iO(i,O,e,t,a,r){let s=0,Q=1<0){let p=i[S];if(n.allows(p)&&(O.token.value==-1||O.token.value==p||WO(p,O.token.value,a,r))){O.acceptToken(p);break}}let $=O.next,h=0,c=i[s+2];if(O.next<0&&c>h&&i[o+c*3-3]==65535&&i[o+c*3-3]==65535){s=i[o+c*3-1];continue O}for(;h>1,p=o+S+(S<<1),nO=i[p],oO=i[p+1]||65536;if($=oO)h=S+1;else{s=i[p+2],O.advance();continue O}}break}}function I(i,O,e){for(let t=O,a;(a=i[t])!=65535;t++)if(a==e)return t-O;return-1}function WO(i,O,e,t){let a=I(e,t,O);return a<0||I(e,t,i)O)&&!t.type.isError)return e<0?Math.max(0,Math.min(t.to-1,O-25)):Math.min(i.length,Math.max(t.from+1,O+25));if(e<0?t.prevSibling():t.nextSibling())break;if(!t.parent())return e<0?0:i.length}}class UO{constructor(O,e){this.fragments=O,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let O=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(O){for(this.safeFrom=O.openStart?E(O.tree,O.from+O.offset,1)-O.offset:O.from,this.safeTo=O.openEnd?E(O.tree,O.to+O.offset,-1)-O.offset:O.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(O.tree),this.start.push(-O.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(O){if(OO)return this.nextStart=s,null;if(r instanceof m){if(s==O){if(s=Math.max(this.safeFrom,O)&&(this.trees.push(r),this.start.push(s),this.index.push(0))}else this.index[e]++,this.nextStart=s+r.length}}}class jO{constructor(O,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=O.tokenizers.map(t=>new Y)}getActions(O){let e=0,t=null,{parser:a}=O.p,{tokenizers:r}=a,s=a.stateSlot(O.state,3),Q=O.curContext?O.curContext.hash:0,n=0;for(let o=0;oh.end+25&&(n=Math.max(h.lookAhead,n)),h.value!=0)){let c=e;if(h.extended>-1&&(e=this.addActions(O,h.extended,h.end,e)),e=this.addActions(O,h.value,h.end,e),!$.extend&&(t=h,e>c))break}}for(;this.actions.length>e;)this.actions.pop();return n&&O.setLookAhead(n),!t&&O.pos==this.stream.end&&(t=new Y,t.value=O.p.parser.eofTerm,t.start=t.end=O.pos,e=this.addActions(O,t.value,t.end,e)),this.mainToken=t,this.actions}getMainToken(O){if(this.mainToken)return this.mainToken;let e=new Y,{pos:t,p:a}=O;return e.start=t,e.end=Math.min(t+1,a.stream.end),e.value=t==a.stream.end?a.parser.eofTerm:0,e}updateCachedToken(O,e,t){let a=this.stream.clipPos(t.pos);if(e.token(this.stream.reset(a,O),t),O.value>-1){let{parser:r}=t.p;for(let s=0;s=0&&t.p.parser.dialect.allows(Q>>1)){(Q&1)==0?O.value=Q>>1:O.extended=Q>>1;break}}}else O.value=0,O.end=this.stream.clipPos(a+1)}putAction(O,e,t,a){for(let r=0;rO.bufferLength*4?new UO(t,O.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let O=this.stacks,e=this.minStackPos,t=this.stacks=[],a,r;if(this.bigReductionCount>300&&O.length==1){let[s]=O;for(;s.forceReduce()&&s.stack.length&&s.stack[s.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let s=0;se)t.push(Q);else{if(this.advanceStack(Q,t,O))continue;{a||(a=[],r=[]),a.push(Q);let n=this.tokens.getMainToken(Q);r.push(n.value,n.end)}}break}}if(!t.length){let s=a&&TO(a);if(s)return this.stackToTree(s);if(this.parser.strict)throw f&&a&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+e);this.recovering||(this.recovering=5)}if(this.recovering&&a){let s=this.stoppedAt!=null&&a[0].pos>this.stoppedAt?a[0]:this.runRecovery(a,r,t);if(s)return this.stackToTree(s.forceAll())}if(this.recovering){let s=this.recovering==1?1:this.recovering*3;if(t.length>s)for(t.sort((Q,n)=>n.score-Q.score);t.length>s;)t.pop();t.some(Q=>Q.reducePos>e)&&this.recovering--}else if(t.length>1){O:for(let s=0;s500&&o.buffer.length>500)if((Q.score-o.score||Q.buffer.length-o.buffer.length)>0)t.splice(n--,1);else{t.splice(s--,1);continue O}}}t.length>12&&t.splice(12,t.length-12)}this.minStackPos=t[0].pos;for(let s=1;s ":"";if(this.stoppedAt!=null&&a>this.stoppedAt)return O.forceReduce()?O:null;if(this.fragments){let o=O.curContext&&O.curContext.tracker.strict,$=o?O.curContext.hash:0;for(let h=this.fragments.nodeAt(a);h;){let c=this.parser.nodeSet.types[h.type.id]==h.type?r.getGoto(O.state,h.type.id):-1;if(c>-1&&h.length&&(!o||(h.prop(T.contextHash)||0)==$))return O.useNode(h,c),f&&console.log(s+this.stackID(O)+` (via reuse of ${r.getName(h.type.id)})`),!0;if(!(h instanceof m)||h.children.length==0||h.positions[0]>0)break;let S=h.children[0];if(S instanceof m&&h.positions[0]==0)h=S;else break}}let Q=r.stateSlot(O.state,4);if(Q>0)return O.reduce(Q),f&&console.log(s+this.stackID(O)+` (via always-reduce ${r.getName(Q&65535)})`),!0;if(O.stack.length>=15e3)for(;O.stack.length>9e3&&O.forceReduce(););let n=this.tokens.getActions(O);for(let o=0;oa?e.push(p):t.push(p)}return!1}advanceFully(O,e){let t=O.pos;for(;;){if(!this.advanceStack(O,null,null))return!1;if(O.pos>t)return J(O,e),!0}}runRecovery(O,e,t){let a=null,r=!1;for(let s=0;s ":"";if(Q.deadEnd&&(r||(r=!0,Q.restart(),f&&console.log($+this.stackID(Q)+" (restarted)"),this.advanceFully(Q,t))))continue;let h=Q.split(),c=$;for(let S=0;h.forceReduce()&&S<10&&(f&&console.log(c+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,t));S++)f&&(c=this.stackID(h)+" -> ");for(let S of Q.recoverByInsert(n))f&&console.log($+this.stackID(S)+" (via recover-insert)"),this.advanceFully(S,t);this.stream.end>Q.pos?(o==Q.pos&&(o++,n=0),Q.recoverByDelete(n,o),f&&console.log($+this.stackID(Q)+` (via recover-delete ${this.parser.getName(n)})`),J(Q,t)):(!a||a.scorei;class VO{constructor(O){this.start=O.start,this.shift=O.shift||v,this.reduce=O.reduce||v,this.reuse=O.reuse||v,this.hash=O.hash||(()=>0),this.strict=O.strict!==!1}}class k extends lO{constructor(O){if(super(),this.wrappers=[],O.version!=14)throw new RangeError(`Parser version (${O.version}) doesn't match runtime version (${14})`);let e=O.nodeNames.split(" ");this.minRepeatTerm=e.length;for(let Q=0;QO.topRules[Q][1]),a=[];for(let Q=0;Q=0)r($,n,Q[o++]);else{let h=Q[o+-$];for(let c=-$;c>0;c--)r(Q[o++],n,h);o++}}}this.nodeSet=new hO(e.map((Q,n)=>$O.define({name:n>=this.minRepeatTerm?void 0:Q,id:n,props:a[n],top:t.indexOf(n)>-1,error:n==0,skipped:O.skippedNodes&&O.skippedNodes.indexOf(n)>-1}))),O.propSources&&(this.nodeSet=this.nodeSet.extend(...O.propSources)),this.strict=!1,this.bufferLength=cO;let s=d(O.tokenData);this.context=O.context,this.specializerSpecs=O.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let Q=0;Qtypeof Q=="number"?new g(s,Q):Q),this.topRules=O.topRules,this.dialects=O.dialects||{},this.dynamicPrecedences=O.dynamicPrecedences||null,this.tokenPrecTable=O.tokenPrec,this.termNames=O.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(O,e,t){let a=new vO(this,O,e,t);for(let r of this.wrappers)a=r(a,O,e,t);return a}getGoto(O,e,t=!1){let a=this.goto;if(e>=a[0])return-1;for(let r=a[e+1];;){let s=a[r++],Q=s&1,n=a[r++];if(Q&&t)return n;for(let o=r+(s>>1);r0}validAction(O,e){if(e==this.stateSlot(O,4))return!0;for(let t=this.stateSlot(O,1);;t+=3){if(this.data[t]==65535)if(this.data[t+1]==1)t=u(this.data,t+2);else return!1;if(e==u(this.data,t+1))return!0}}nextStates(O){let e=[];for(let t=this.stateSlot(O,1);;t+=3){if(this.data[t]==65535)if(this.data[t+1]==1)t=u(this.data,t+2);else break;if((this.data[t+2]&1)==0){let a=this.data[t+1];e.some((r,s)=>s&1&&r==a)||e.push(this.data[t],a)}}return e}configure(O){let e=Object.assign(Object.create(k.prototype),this);if(O.props&&(e.nodeSet=this.nodeSet.extend(...O.props)),O.top){let t=this.topRules[O.top];if(!t)throw new RangeError(`Invalid top rule name ${O.top}`);e.top=t}return O.tokenizers&&(e.tokenizers=this.tokenizers.map(t=>{let a=O.tokenizers.find(r=>r.from==t);return a?a.to:t})),O.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map((t,a)=>{let r=O.specializers.find(Q=>Q.from==t.external);if(!r)return t;let s=Object.assign(Object.assign({},t),{external:r.to});return e.specializers[a]=L(s),s})),O.contextTracker&&(e.context=O.contextTracker),O.dialect&&(e.dialect=this.parseDialect(O.dialect)),O.strict!=null&&(e.strict=O.strict),O.wrap&&(e.wrappers=e.wrappers.concat(O.wrap)),O.bufferLength!=null&&(e.bufferLength=O.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(O){return this.termNames?this.termNames[O]:String(O<=this.maxNode&&this.nodeSet.types[O].name||O)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(O){let e=this.dynamicPrecedences;return e==null?0:e[O]||0}parseDialect(O){let e=Object.keys(this.dialects),t=e.map(()=>!1);if(O)for(let r of O.split(" ")){let s=e.indexOf(r);s>=0&&(t[s]=!0)}let a=null;for(let r=0;rt)&&e.p.parser.stateFlag(e.state,2)&&(!O||O.scorei.external(e,t)<<1|O}return i.get}const D=301,B=1,_O=2,M=302,GO=304,qO=305,CO=3,RO=4,zO=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],aO=125,IO=59,H=47,AO=42,EO=43,NO=45,JO=new VO({start:!1,shift(i,O){return O==CO||O==RO||O==GO?i:O==qO},strict:!1}),LO=new G((i,O)=>{let{next:e}=i;(e==aO||e==-1||O.context)&&O.canShift(M)&&i.acceptToken(M)},{contextual:!0,fallback:!0}),DO=new G((i,O)=>{let{next:e}=i,t;zO.indexOf(e)>-1||e==H&&((t=i.peek(1))==H||t==AO)||e!=aO&&e!=IO&&e!=-1&&!O.context&&O.canShift(D)&&i.acceptToken(D)},{contextual:!0}),BO=new G((i,O)=>{let{next:e}=i;if((e==EO||e==NO)&&(i.advance(),e==i.next)){i.advance();let t=!O.context&&O.canShift(B);i.acceptToken(t?B:_O)}},{contextual:!0}),MO=SO({"get set async static":l.modifier,"for while do if else switch try catch finally return throw break continue default case":l.controlKeyword,"in of await yield void typeof delete instanceof":l.operatorKeyword,"let var const function class extends":l.definitionKeyword,"import export from":l.moduleKeyword,"with debugger as new":l.keyword,TemplateString:l.special(l.string),super:l.atom,BooleanLiteral:l.bool,this:l.self,null:l.null,Star:l.modifier,VariableName:l.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":l.function(l.variableName),VariableDefinition:l.definition(l.variableName),Label:l.labelName,PropertyName:l.propertyName,PrivatePropertyName:l.special(l.propertyName),"CallExpression/MemberExpression/PropertyName":l.function(l.propertyName),"FunctionDeclaration/VariableDefinition":l.function(l.definition(l.variableName)),"ClassDeclaration/VariableDefinition":l.definition(l.className),PropertyDefinition:l.definition(l.propertyName),PrivatePropertyDefinition:l.definition(l.special(l.propertyName)),UpdateOp:l.updateOperator,LineComment:l.lineComment,BlockComment:l.blockComment,Number:l.number,String:l.string,Escape:l.escape,ArithOp:l.arithmeticOperator,LogicOp:l.logicOperator,BitOp:l.bitwiseOperator,CompareOp:l.compareOperator,RegExp:l.regexp,Equals:l.definitionOperator,Arrow:l.function(l.punctuation),": Spread":l.punctuation,"( )":l.paren,"[ ]":l.squareBracket,"{ }":l.brace,"InterpolationStart InterpolationEnd":l.special(l.brace),".":l.derefOperator,", ;":l.separator,"@":l.meta,TypeName:l.typeName,TypeDefinition:l.definition(l.typeName),"type enum interface implements namespace module declare":l.definitionKeyword,"abstract global Privacy readonly override":l.modifier,"is keyof unique infer":l.operatorKeyword,JSXAttributeValue:l.attributeValue,JSXText:l.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":l.angleBracket,"JSXIdentifier JSXNameSpacedName":l.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":l.attributeName,"JSXBuiltin/JSXIdentifier":l.standard(l.tagName)}),HO={__proto__:null,export:14,as:19,from:27,default:30,async:35,function:36,extends:46,this:50,true:58,false:58,null:70,void:74,typeof:78,super:96,new:130,delete:146,yield:155,await:159,class:164,public:219,private:219,protected:219,readonly:221,instanceof:240,satisfies:243,in:244,const:246,import:278,keyof:333,unique:337,infer:343,is:379,abstract:399,implements:401,type:403,let:406,var:408,interface:415,enum:419,namespace:425,module:427,declare:431,global:435,for:456,of:465,while:468,with:472,do:476,if:480,else:482,switch:486,case:492,try:498,catch:502,finally:506,return:510,throw:514,break:518,continue:522,debugger:526},FO={__proto__:null,async:117,get:119,set:121,public:181,private:181,protected:181,static:183,abstract:185,override:187,readonly:193,accessor:195,new:383},KO={__proto__:null,"<":137},Oe=k.deserialize({version:14,states:"$BhO`QUOOO%QQUOOO'TQWOOP(_OSOOO*mQ(CjO'#CfO*tOpO'#CgO+SO!bO'#CgO+bO07`O'#DZO-sQUO'#DaO.TQUO'#DlO%QQUO'#DvO0[QUO'#EOOOQ(CY'#EW'#EWO0rQSO'#ETOOQO'#I_'#I_O0zQSO'#GjOOQO'#Eh'#EhO1VQSO'#EgO1[QSO'#EgO3^Q(CjO'#JbO5}Q(CjO'#JcO6kQSO'#FVO6pQ#tO'#FnOOQ(CY'#F_'#F_O6{O&jO'#F_O7ZQ,UO'#FuO8qQSO'#FtOOQ(CY'#Jc'#JcOOQ(CW'#Jb'#JbOOQQ'#J|'#J|O8vQSO'#IOO8{Q(C[O'#IPOOQQ'#JO'#JOOOQQ'#IT'#ITQ`QUOOO%QQUO'#DnO9TQUO'#DzO%QQUO'#D|O9[QSO'#GjO9aQ,UO'#ClO9oQSO'#EfO9zQSO'#EqO:PQ,UO'#F^O:nQSO'#GjO:sQSO'#GnO;OQSO'#GnO;^QSO'#GqO;^QSO'#GrO;^QSO'#GtO9[QSO'#GwO;}QSO'#GzO=`QSO'#CbO=pQSO'#HXO=xQSO'#H_O=xQSO'#HaO`QUO'#HcO=xQSO'#HeO=xQSO'#HhO=}QSO'#HnO>SQ(C]O'#HtO%QQUO'#HvO>_Q(C]O'#HxO>jQ(C]O'#HzO8{Q(C[O'#H|O>uQ(CjO'#CfO?wQWO'#DfQOQSOOO@_QSO'#EPO9aQ,UO'#EfO@jQSO'#EfO@uQ`O'#F^OOQQ'#Cd'#CdOOQ(CW'#Dk'#DkOOQ(CW'#Jf'#JfO%QQUO'#JfOBOQWO'#E_OOQ(CW'#E^'#E^OBYQ(C`O'#E_OBtQWO'#ESOOQO'#Ji'#JiOCYQWO'#ESOCgQWO'#E_OC}QWO'#EeODQQWO'#E_O@}QWO'#E_OBtQWO'#E_PDkO?MpO'#C`POOO)CDm)CDmOOOO'#IU'#IUODvOpO,59ROOQ(CY,59R,59ROOOO'#IV'#IVOEUO!bO,59RO%QQUO'#D]OOOO'#IX'#IXOEdO07`O,59uOOQ(CY,59u,59uOErQUO'#IYOFVQSO'#JdOHXQbO'#JdO+pQUO'#JdOH`QSO,59{OHvQSO'#EhOITQSO'#JqOI`QSO'#JpOI`QSO'#JpOIhQSO,5;UOImQSO'#JoOOQ(CY,5:W,5:WOItQUO,5:WOKuQ(CjO,5:bOLfQSO,5:jOLkQSO'#JmOMeQ(C[O'#JnO:sQSO'#JmOMlQSO'#JmOMtQSO,5;TOMyQSO'#JmOOQ(CY'#Cf'#CfO%QQUO'#EOONmQ`O,5:oOOQO'#Jj'#JjOOQO-E<]-E<]O9[QSO,5=UO! TQSO,5=UO! YQUO,5;RO!#]Q,UO'#EcO!$pQSO,5;RO!&YQ,UO'#DpO!&aQUO'#DuO!&kQWO,5;[O!&sQWO,5;[O%QQUO,5;[OOQQ'#E}'#E}OOQQ'#FP'#FPO%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]OOQQ'#FT'#FTO!'RQUO,5;nOOQ(CY,5;s,5;sOOQ(CY,5;t,5;tO!)UQSO,5;tOOQ(CY,5;u,5;uO%QQUO'#IeO!)^Q(C[O,5jOOQQ'#JW'#JWOOQQ,5>k,5>kOOQQ-EgQWO'#EkOOQ(CW'#Jo'#JoO!>nQ(C[O'#J}O8{Q(C[O,5=YO;^QSO,5=`OOQO'#Cr'#CrO!>yQWO,5=]O!?RQ,UO,5=^O!?^QSO,5=`O!?cQ`O,5=cO=}QSO'#G|O9[QSO'#HOO!?kQSO'#HOO9aQ,UO'#HRO!?pQSO'#HROOQQ,5=f,5=fO!?uQSO'#HSO!?}QSO'#ClO!@SQSO,58|O!@^QSO,58|O!BfQUO,58|OOQQ,58|,58|O!BsQ(C[O,58|O%QQUO,58|O!COQUO'#HZOOQQ'#H['#H[OOQQ'#H]'#H]O`QUO,5=sO!C`QSO,5=sO`QUO,5=yO`QUO,5={O!CeQSO,5=}O`QUO,5>PO!CjQSO,5>SO!CoQUO,5>YOOQQ,5>`,5>`O%QQUO,5>`O8{Q(C[O,5>bOOQQ,5>d,5>dO!GvQSO,5>dOOQQ,5>f,5>fO!GvQSO,5>fOOQQ,5>h,5>hO!G{QWO'#DXO%QQUO'#JfO!HjQWO'#JfO!IXQWO'#DgO!IjQWO'#DgO!K{QUO'#DgO!LSQSO'#JeO!L[QSO,5:QO!LaQSO'#ElO!LoQSO'#JrO!LwQSO,5;VO!L|QWO'#DgO!MZQWO'#EROOQ(CY,5:k,5:kO%QQUO,5:kO!MbQSO,5:kO=}QSO,5;QO!;xQWO,5;QO!tO+pQUO,5>tOOQO,5>z,5>zO#$vQUO'#IYOOQO-EtO$8XQSO1G5jO$8aQSO1G5vO$8iQbO1G5wO:sQSO,5>zO$8sQSO1G5sO$8sQSO1G5sO:sQSO1G5sO$8{Q(CjO1G5tO%QQUO1G5tO$9]Q(C[O1G5tO$9nQSO,5>|O:sQSO,5>|OOQO,5>|,5>|O$:SQSO,5>|OOQO-E<`-E<`OOQO1G0]1G0]OOQO1G0_1G0_O!)XQSO1G0_OOQQ7+([7+([O!#]Q,UO7+([O%QQUO7+([O$:bQSO7+([O$:mQ,UO7+([O$:{Q(CjO,59nO$=TQ(CjO,5UOOQQ,5>U,5>UO%QQUO'#HkO%&qQSO'#HmOOQQ,5>[,5>[O:sQSO,5>[OOQQ,5>^,5>^OOQQ7+)`7+)`OOQQ7+)f7+)fOOQQ7+)j7+)jOOQQ7+)l7+)lO%&vQWO1G5lO%'[Q$IUO1G0rO%'fQSO1G0rOOQO1G/m1G/mO%'qQ$IUO1G/mO=}QSO1G/mO!'RQUO'#DgOOQO,5>u,5>uOOQO-E{,5>{OOQO-E<_-E<_O!;xQWO1G/mOOQO-E<[-E<[OOQ(CY1G0X1G0XOOQ(CY7+%q7+%qO!MeQSO7+%qOOQ(CY7+&W7+&WO=}QSO7+&WO!;xQWO7+&WOOQO7+%t7+%tO$7kQ(CjO7+&POOQO7+&P7+&PO%QQUO7+&PO%'{Q(C[O7+&PO=}QSO7+%tO!;xQWO7+%tO%(WQ(C[O7+&POBtQWO7+%tO%(fQ(C[O7+&PO%(zQ(C`O7+&PO%)UQWO7+%tOBtQWO7+&PO%)cQWO7+&PO%)yQSO7++_O%)yQSO7++_O%*RQ(CjO7++`O%QQUO7++`OOQO1G4h1G4hO:sQSO1G4hO%*cQSO1G4hOOQO7+%y7+%yO!MeQSO<vOOQO-EwO%QQUO,5>wOOQO-ESQ$IUO1G0wO%>ZQ$IUO1G0wO%@RQ$IUO1G0wO%@fQ(CjO<VOOQQ,5>X,5>XO&#WQSO1G3vO:sQSO7+&^O!'RQUO7+&^OOQO7+%X7+%XO&#]Q$IUO1G5wO=}QSO7+%XOOQ(CY<zAN>zO%QQUOAN?VO=}QSOAN>zO&<^Q(C[OAN?VO!;xQWOAN>zO&zO&RO!V+iO^(qX'j(qX~O#W+mO'|%OO~Og+pO!X$yO'|%OO~O!X+rO~Oy+tO!XXO~O!t+yO~Ob,OO~O's#jO!W(sP~Ob%lO~O%a!OO's%|O~PRO!V,yO!W(fa~O!W2SO~P'TO^%^O#W2]O'j%^O~O^%^O!a#rO#W2]O'j%^O~O^%^O!a#rO!h%ZO!l2aO#W2]O'j%^O'|%OO(`'dO~O!]2bO!^2bO't!iO~PBtO![2eO!]2bO!^2bO#S2fO#T2fO't!iO~PBtO![2eO!]2bO!^2bO#P2gO#S2fO#T2fO't!iO~PBtO^%^O!a#rO!l2aO#W2]O'j%^O(`'dO~O^%^O'j%^O~P!3jO!V$^Oo$ja~O!S&|i!V&|i~P!3jO!V'xO!S(Wi~O!V(PO!S(di~O!S(ei!V(ei~P!3jO!V(]O!g(ai~O!V(bi!g(bi^(bi'j(bi~P!3jO#W2kO!V(bi!g(bi^(bi'j(bi~O|%vO!X%wO!x]O#a2nO#b2mO's%eO~O|%vO!X%wO#b2mO's%eO~Og2uO!X'QO%`2tO~Og2uO!X'QO%`2tO'|%OO~O#cvaPvaXva^vakva!eva!fva!hva!lva#fva#gva#hva#iva#jva#kva#lva#mva#nva#pva#rva#tva#uva'jva(Qva(`va!gva!Sva'hvaova!Xva%`va!ava~P#M{O#c$kaP$kaX$ka^$kak$kaz$ka!e$ka!f$ka!h$ka!l$ka#f$ka#g$ka#h$ka#i$ka#j$ka#k$ka#l$ka#m$ka#n$ka#p$ka#r$ka#t$ka#u$ka'j$ka(Q$ka(`$ka!g$ka!S$ka'h$kao$ka!X$ka%`$ka!a$ka~P#NqO#c$maP$maX$ma^$mak$maz$ma!e$ma!f$ma!h$ma!l$ma#f$ma#g$ma#h$ma#i$ma#j$ma#k$ma#l$ma#m$ma#n$ma#p$ma#r$ma#t$ma#u$ma'j$ma(Q$ma(`$ma!g$ma!S$ma'h$mao$ma!X$ma%`$ma!a$ma~P$ dO#c${aP${aX${a^${ak${az${a!V${a!e${a!f${a!h${a!l${a#f${a#g${a#h${a#i${a#j${a#k${a#l${a#m${a#n${a#p${a#r${a#t${a#u${a'j${a(Q${a(`${a!g${a!S${a'h${a#W${ao${a!X${a%`${a!a${a~P#(yO^#Zq!V#Zq'j#Zq'h#Zq!S#Zq!g#Zqo#Zq!X#Zq%`#Zq!a#Zq~P!3jOd'OX!V'OX~P!$uO!V._Od(Za~O!U2}O!V'PX!g'PX~P%QO!V.bO!g([a~O!V.bO!g([a~P!3jO!S3QO~O#x!ja!W!ja~PI{O#x!ba!V!ba!W!ba~P#?dO#x!na!W!na~P!6TO#x!pa!W!pa~P!8nO!X3dO$TfO$^3eO~O!W3iO~Oo3jO~P#(yO^$gq!V$gq'j$gq'h$gq!S$gq!g$gqo$gq!X$gq%`$gq!a$gq~P!3jO!S3kO~Ol.}O'uTO'xUO~Oy)sO|)tO(h)xOg%Wi(g%Wi!V%Wi#W%Wi~Od%Wi#x%Wi~P$HbOy)sO|)tOg%Yi(g%Yi(h%Yi!V%Yi#W%Yi~Od%Yi#x%Yi~P$ITO(`$WO~P#(yO!U3nO's%eO!V'YX!g'YX~O!V/VO!g(ma~O!V/VO!a#rO!g(ma~O!V/VO!a#rO(`'dO!g(ma~Od$ti!V$ti#W$ti#x$ti~P!-jO!U3vO's*UO!S'[X!V'[X~P!.XO!V/_O!S(na~O!V/_O!S(na~P#(yO!a#rO~O!a#rO#n4OO~Ok4RO!a#rO(`'dO~Od(Oi!V(Oi~P!-jO#W4UOd(Oi!V(Oi~P!-jO!g4XO~O^$hq!V$hq'j$hq'h$hq!S$hq!g$hqo$hq!X$hq%`$hq!a$hq~P!3jO!V4]O!X(oX~P#(yO!f#tO~P3zO!X$rX%TYX^$rX!V$rX'j$rX~P!,aO%T4_OghXyhX|hX!XhX(ghX(hhX^hX!VhX'jhX~O%T4_O~O%a4fO's+WO'uTO'xUO!V'eX!W'eX~O!V0_O!W(ua~OX4jO~O]4kO~O!S4oO~O^%^O'j%^O~P#(yO!X$yO~P#(yO!V4tO#W4vO!W(rX~O!W4wO~Ol!kO|4yO![5WO!]4}O!^4}O!x;oO!|5VO!}5UO#O5UO#P5TO#S5SO#T!wO't!iO'uTO'xUO(T!jO(_!nO~O!W5RO~P%#XOg5]O!X0zO%`5[O~Og5]O!X0zO%`5[O'|%OO~O's#jO!V'dX!W'dX~O!V1VO!W(sa~O'uTO'xUO(T5fO~O]5jO~O!g5mO~P%QO^5oO~O^5oO~P%QO#n5qO&Q5rO~PMPO_1mO!W5vO&`1lO~P`O!a5xO~O!a5zO!V(Yi!W(Yi!a(Yi!h(Yi'|(Yi~O!V#`i!W#`i~P#?dO#W5{O!V#`i!W#`i~O!V!Zi!W!Zi~P#?dO^%^O#W6UO'j%^O~O^%^O!a#rO#W6UO'j%^O~O^%^O!a#rO!l6ZO#W6UO'j%^O(`'dO~O!h%ZO'|%OO~P%(fO!]6[O!^6[O't!iO~PBtO![6_O!]6[O!^6[O#S6`O#T6`O't!iO~PBtO!V(]O!g(aq~O!V(bq!g(bq^(bq'j(bq~P!3jO|%vO!X%wO#b6dO's%eO~O!X'QO%`6gO~Og6jO!X'QO%`6gO~O#c%WiP%WiX%Wi^%Wik%Wiz%Wi!e%Wi!f%Wi!h%Wi!l%Wi#f%Wi#g%Wi#h%Wi#i%Wi#j%Wi#k%Wi#l%Wi#m%Wi#n%Wi#p%Wi#r%Wi#t%Wi#u%Wi'j%Wi(Q%Wi(`%Wi!g%Wi!S%Wi'h%Wio%Wi!X%Wi%`%Wi!a%Wi~P$HbO#c%YiP%YiX%Yi^%Yik%Yiz%Yi!e%Yi!f%Yi!h%Yi!l%Yi#f%Yi#g%Yi#h%Yi#i%Yi#j%Yi#k%Yi#l%Yi#m%Yi#n%Yi#p%Yi#r%Yi#t%Yi#u%Yi'j%Yi(Q%Yi(`%Yi!g%Yi!S%Yi'h%Yio%Yi!X%Yi%`%Yi!a%Yi~P$ITO#c$tiP$tiX$ti^$tik$tiz$ti!V$ti!e$ti!f$ti!h$ti!l$ti#f$ti#g$ti#h$ti#i$ti#j$ti#k$ti#l$ti#m$ti#n$ti#p$ti#r$ti#t$ti#u$ti'j$ti(Q$ti(`$ti!g$ti!S$ti'h$ti#W$tio$ti!X$ti%`$ti!a$ti~P#(yOd'Oa!V'Oa~P!-jO!V'Pa!g'Pa~P!3jO!V.bO!g([i~O#x#Zi!V#Zi!W#Zi~P#?dOP$YOy#vOz#wO|#xO!f#tO!h#uO!l$YO(QVOX#eik#ei!e#ei#g#ei#h#ei#i#ei#j#ei#k#ei#l#ei#m#ei#n#ei#p#ei#r#ei#t#ei#u#ei#x#ei(`#ei(g#ei(h#ei!V#ei!W#ei~O#f#ei~P%2xO#f;wO~P%2xOP$YOy#vOz#wO|#xO!f#tO!h#uO!l$YO#f;wO#g;xO#h;xO#i;xO(QVOX#ei!e#ei#j#ei#k#ei#l#ei#m#ei#n#ei#p#ei#r#ei#t#ei#u#ei#x#ei(`#ei(g#ei(h#ei!V#ei!W#ei~Ok#ei~P%5TOk;yO~P%5TOP$YOk;yOy#vOz#wO|#xO!f#tO!h#uO!l$YO#f;wO#g;xO#h;xO#i;xO#j;zO(QVO#p#ei#r#ei#t#ei#u#ei#x#ei(`#ei(g#ei(h#ei!V#ei!W#ei~OX#ei!e#ei#k#ei#l#ei#m#ei#n#ei~P%7`OXbO^#vy!V#vy'j#vy'h#vy!S#vy!g#vyo#vy!X#vy%`#vy!a#vy~P!3jOg=jOy)sO|)tO(g)vO(h)xO~OP#eiX#eik#eiz#ei!e#ei!f#ei!h#ei!l#ei#f#ei#g#ei#h#ei#i#ei#j#ei#k#ei#l#ei#m#ei#n#ei#p#ei#r#ei#t#ei#u#ei#x#ei(Q#ei(`#ei!V#ei!W#ei~P%AYO!f#tOP(PXX(PXg(PXk(PXy(PXz(PX|(PX!e(PX!h(PX!l(PX#f(PX#g(PX#h(PX#i(PX#j(PX#k(PX#l(PX#m(PX#n(PX#p(PX#r(PX#t(PX#u(PX#x(PX(Q(PX(`(PX(g(PX(h(PX!V(PX!W(PX~O#x#yi!V#yi!W#yi~P#?dO#x!ni!W!ni~P$!qO!W6vO~O!V'Xa!W'Xa~P#?dO!a#rO(`'dO!V'Ya!g'Ya~O!V/VO!g(mi~O!V/VO!a#rO!g(mi~Od$tq!V$tq#W$tq#x$tq~P!-jO!S'[a!V'[a~P#(yO!a6}O~O!V/_O!S(ni~P#(yO!V/_O!S(ni~O!S7RO~O!a#rO#n7WO~Ok7XO!a#rO(`'dO~O!S7ZO~Od$vq!V$vq#W$vq#x$vq~P!-jO^$hy!V$hy'j$hy'h$hy!S$hy!g$hyo$hy!X$hy%`$hy!a$hy~P!3jO!V4]O!X(oa~O^#Zy!V#Zy'j#Zy'h#Zy!S#Zy!g#Zyo#Zy!X#Zy%`#Zy!a#Zy~P!3jOX7`O~O!V0_O!W(ui~O]7fO~O!a5zO~O(T(qO!V'aX!W'aX~O!V4tO!W(ra~O!h%ZO'|%OO^(YX!a(YX!l(YX#W(YX'j(YX(`(YX~O's7oO~P.[O!x;oO!|7rO!}7qO#O7qO#P7pO#S'bO#T'bO~PBtO^%^O!a#rO!l'hO#W'fO'j%^O(`'dO~O!W7vO~P%#XOl!kO'uTO'xUO(T!jO(_!nO~O|7wO~P%MdO![7{O!]7zO!^7zO#P7pO#S'bO#T'bO't!iO~PBtO![7{O!]7zO!^7zO!}7|O#O7|O#P7pO#S'bO#T'bO't!iO~PBtO!]7zO!^7zO't!iO(T!jO(_!nO~O!X0zO~O!X0zO%`8OO~Og8RO!X0zO%`8OO~OX8WO!V'da!W'da~O!V1VO!W(si~O!g8[O~O!g8]O~O!g8^O~O!g8^O~P%QO^8`O~O!a8cO~O!g8dO~O!V(ei!W(ei~P#?dO^%^O#W8lO'j%^O~O^%^O!a#rO#W8lO'j%^O~O^%^O!a#rO!l8pO#W8lO'j%^O(`'dO~O!h%ZO'|%OO~P&$QO!]8qO!^8qO't!iO~PBtO!V(]O!g(ay~O!V(by!g(by^(by'j(by~P!3jO!X'QO%`8uO~O#c$tqP$tqX$tq^$tqk$tqz$tq!V$tq!e$tq!f$tq!h$tq!l$tq#f$tq#g$tq#h$tq#i$tq#j$tq#k$tq#l$tq#m$tq#n$tq#p$tq#r$tq#t$tq#u$tq'j$tq(Q$tq(`$tq!g$tq!S$tq'h$tq#W$tqo$tq!X$tq%`$tq!a$tq~P#(yO#c$vqP$vqX$vq^$vqk$vqz$vq!V$vq!e$vq!f$vq!h$vq!l$vq#f$vq#g$vq#h$vq#i$vq#j$vq#k$vq#l$vq#m$vq#n$vq#p$vq#r$vq#t$vq#u$vq'j$vq(Q$vq(`$vq!g$vq!S$vq'h$vq#W$vqo$vq!X$vq%`$vq!a$vq~P#(yO!V'Pi!g'Pi~P!3jO#x#Zq!V#Zq!W#Zq~P#?dOy/yOz/yO|/zOPvaXvagvakva!eva!fva!hva!lva#fva#gva#hva#iva#jva#kva#lva#mva#nva#pva#rva#tva#uva#xva(Qva(`va(gva(hva!Vva!Wva~Oy)sO|)tOP$kaX$kag$kak$kaz$ka!e$ka!f$ka!h$ka!l$ka#f$ka#g$ka#h$ka#i$ka#j$ka#k$ka#l$ka#m$ka#n$ka#p$ka#r$ka#t$ka#u$ka#x$ka(Q$ka(`$ka(g$ka(h$ka!V$ka!W$ka~Oy)sO|)tOP$maX$mag$mak$maz$ma!e$ma!f$ma!h$ma!l$ma#f$ma#g$ma#h$ma#i$ma#j$ma#k$ma#l$ma#m$ma#n$ma#p$ma#r$ma#t$ma#u$ma#x$ma(Q$ma(`$ma(g$ma(h$ma!V$ma!W$ma~OP${aX${ak${az${a!e${a!f${a!h${a!l${a#f${a#g${a#h${a#i${a#j${a#k${a#l${a#m${a#n${a#p${a#r${a#t${a#u${a#x${a(Q${a(`${a!V${a!W${a~P%AYO#x$gq!V$gq!W$gq~P#?dO#x$hq!V$hq!W$hq~P#?dO!W9PO~O#x9QO~P!-jO!a#rO!V'Yi!g'Yi~O!a#rO(`'dO!V'Yi!g'Yi~O!V/VO!g(mq~O!S'[i!V'[i~P#(yO!V/_O!S(nq~O!S9WO~P#(yO!S9WO~Od(Oy!V(Oy~P!-jO!V'_a!X'_a~P#(yO!X%Sq^%Sq!V%Sq'j%Sq~P#(yOX9]O~O!V0_O!W(uq~O#W9aO!V'aa!W'aa~O!V4tO!W(ri~P#?dOPYXXYXkYXyYXzYX|YX!SYX!VYX!eYX!fYX!hYX!lYX#WYX#ccX#fYX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#pYX#rYX#tYX#uYX#zYX(QYX(`YX(gYX(hYX~O!a%QX#n%QX~P&6lO#S-cO#T-cO~PBtO#P9eO#S-cO#T-cO~PBtO!}9fO#O9fO#P9eO#S-cO#T-cO~PBtO!]9iO!^9iO't!iO(T!jO(_!nO~O![9lO!]9iO!^9iO#P9eO#S-cO#T-cO't!iO~PBtO!X0zO%`9oO~O'uTO'xUO(T9tO~O!V1VO!W(sq~O!g9wO~O!g9wO~P%QO!g9yO~O!g9zO~O#W9|O!V#`y!W#`y~O!V#`y!W#`y~P#?dO^%^O#W:QO'j%^O~O^%^O!a#rO#W:QO'j%^O~O^%^O!a#rO!l:UO#W:QO'j%^O(`'dO~O!X'QO%`:XO~O#x#vy!V#vy!W#vy~P#?dOP$tiX$tik$tiz$ti!e$ti!f$ti!h$ti!l$ti#f$ti#g$ti#h$ti#i$ti#j$ti#k$ti#l$ti#m$ti#n$ti#p$ti#r$ti#t$ti#u$ti#x$ti(Q$ti(`$ti!V$ti!W$ti~P%AYOy)sO|)tO(h)xOP%WiX%Wig%Wik%Wiz%Wi!e%Wi!f%Wi!h%Wi!l%Wi#f%Wi#g%Wi#h%Wi#i%Wi#j%Wi#k%Wi#l%Wi#m%Wi#n%Wi#p%Wi#r%Wi#t%Wi#u%Wi#x%Wi(Q%Wi(`%Wi(g%Wi!V%Wi!W%Wi~Oy)sO|)tOP%YiX%Yig%Yik%Yiz%Yi!e%Yi!f%Yi!h%Yi!l%Yi#f%Yi#g%Yi#h%Yi#i%Yi#j%Yi#k%Yi#l%Yi#m%Yi#n%Yi#p%Yi#r%Yi#t%Yi#u%Yi#x%Yi(Q%Yi(`%Yi(g%Yi(h%Yi!V%Yi!W%Yi~O#x$hy!V$hy!W$hy~P#?dO#x#Zy!V#Zy!W#Zy~P#?dO!a#rO!V'Yq!g'Yq~O!V/VO!g(my~O!S'[q!V'[q~P#(yO!S:`O~P#(yO!V0_O!W(uy~O!V4tO!W(rq~O#S2fO#T2fO~PBtO#P:gO#S2fO#T2fO~PBtO!]:kO!^:kO't!iO(T!jO(_!nO~O!X0zO%`:nO~O!g:qO~O^%^O#W:vO'j%^O~O^%^O!a#rO#W:vO'j%^O~O!X'QO%`:{O~OP$tqX$tqk$tqz$tq!e$tq!f$tq!h$tq!l$tq#f$tq#g$tq#h$tq#i$tq#j$tq#k$tq#l$tq#m$tq#n$tq#p$tq#r$tq#t$tq#u$tq#x$tq(Q$tq(`$tq!V$tq!W$tq~P%AYOP$vqX$vqk$vqz$vq!e$vq!f$vq!h$vq!l$vq#f$vq#g$vq#h$vq#i$vq#j$vq#k$vq#l$vq#m$vq#n$vq#p$vq#r$vq#t$vq#u$vq#x$vq(Q$vq(`$vq!V$vq!W$vq~P%AYOd%[!Z!V%[!Z#W%[!Z#x%[!Z~P!-jO!V'aq!W'aq~P#?dO#S6`O#T6`O~PBtO!V#`!Z!W#`!Z~P#?dO^%^O#W;ZO'j%^O~O#c%[!ZP%[!ZX%[!Z^%[!Zk%[!Zz%[!Z!V%[!Z!e%[!Z!f%[!Z!h%[!Z!l%[!Z#f%[!Z#g%[!Z#h%[!Z#i%[!Z#j%[!Z#k%[!Z#l%[!Z#m%[!Z#n%[!Z#p%[!Z#r%[!Z#t%[!Z#u%[!Z'j%[!Z(Q%[!Z(`%[!Z!g%[!Z!S%[!Z'h%[!Z#W%[!Zo%[!Z!X%[!Z%`%[!Z!a%[!Z~P#(yOP%[!ZX%[!Zk%[!Zz%[!Z!e%[!Z!f%[!Z!h%[!Z!l%[!Z#f%[!Z#g%[!Z#h%[!Z#i%[!Z#j%[!Z#k%[!Z#l%[!Z#m%[!Z#n%[!Z#p%[!Z#r%[!Z#t%[!Z#u%[!Z#x%[!Z(Q%[!Z(`%[!Z!V%[!Z!W%[!Z~P%AYOo(UX~P1dO't!iO~P!'RO!ScX!VcX#WcX~P&6lOPYXXYXkYXyYXzYX|YX!VYX!VcX!eYX!fYX!hYX!lYX#WYX#WcX#ccX#fYX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#pYX#rYX#tYX#uYX#zYX(QYX(`YX(gYX(hYX~O!acX!gYX!gcX(`cX~P'!sOP;nOQ;nOa=_Ob!fOikOk;nOlkOmkOskOu;nOw;nO|WO!QkO!RkO!XXO!c;qO!hZO!k;nO!l;nO!m;nO!o;rO!q;sO!t!eO$P!hO$TfO's)RO'uTO'xUO(QVO(_[O(l=]O~O!Vv!>v!BnPPP!BuHdPPPPPPPPPPP!FTP!GiPPHd!HyPHdPHdHdHdHdPHd!J`PP!MiP#!nP#!r#!|##Q##QP!MfP##U##UP#&ZP#&_HdHd#&e#)iAQPAQPAQAQP#*sAQAQ#,mAQ#.zAQ#0nAQAQ#1[#3W#3W#3[#3d#3W#3lP#3WPAQ#4hAQ#5pAQAQ6iPPP#6{PP#7e#7eP#7eP#7z#7ePP#8QP#7wP#7w#8d!1p#7w#9O#9U6f(}#9X(}P#9`#9`#9`P(}P(}P(}P(}PP(}P#9f#9iP#9i(}P#9mP#9pP(}P(}P(}P(}P(}P(}(}PP#9v#9|#:W#:^#:d#:j#:p#;O#;U#;[#;f#;l#b#?r#@Q#@W#@^#@d#@j#@t#@z#AQ#A[#An#AtPPPPPPPPPP#AzPPPPPPP#Bn#FYP#Gu#G|#HUPPPP#L`$ U$'t$'w$'z$)w$)z$)}$*UPP$*[$*`$+X$,X$,]$,qPP$,u$,{$-PP$-S$-W$-Z$.P$.g$.l$.o$.r$.x$.{$/P$/TR!yRmpOXr!X#a%]&d&f&g&i,^,c1g1jU!pQ'Q-OQ%ctQ%kwQ%rzQ&[!TS&x!c,vQ'W!f[']!m!r!s!t!u!vS*[$y*aQ+U%lQ+c%tQ+}&UQ,|'PQ-W'XW-`'^'_'`'aQ/p*cQ1U,OU2b-b-d-eS4}0z5QS6[2e2gU7z5U5V5WQ8q6_S9i7{7|Q:k9lR TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp < ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXStartTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody MethodDeclaration AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:362,context:JO,nodeProps:[["group",-26,6,14,16,62,198,202,205,206,208,211,214,225,227,233,235,237,239,242,248,254,256,258,260,262,264,265,"Statement",-32,10,11,25,28,29,35,45,48,49,51,56,64,72,76,78,80,81,102,103,112,113,130,133,135,136,137,138,140,141,161,162,164,"Expression",-23,24,26,30,34,36,38,165,167,169,170,172,173,174,176,177,178,180,181,182,192,194,196,197,"Type",-3,84,95,101,"ClassItem"],["openedBy",31,"InterpolationStart",50,"[",54,"{",69,"(",142,"JSXStartTag",154,"JSXStartTag JSXStartCloseTag"],["closedBy",33,"InterpolationEnd",44,"]",55,"}",70,")",143,"JSXSelfCloseEndTag JSXEndTag",159,"JSXEndTag"]],propSources:[MO],skippedNodes:[0,3,4,268],repeatNodeCount:32,tokenData:"$>y(CSR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tu>PuvBavwDxwxGgxyMvyz! Qz{!![{|!%O|}!&]}!O!%O!O!P!'g!P!Q!1w!Q!R#0t!R![#3T![!]#@T!]!^#Aa!^!_#Bk!_!`#GS!`!a#In!a!b#N{!b!c$$z!c!}>P!}#O$&U#O#P$'`#P#Q$,w#Q#R$.R#R#S>P#S#T$/`#T#o$0j#o#p$4z#p#q$5p#q#r$7Q#r#s$8^#s$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$I|>P$I|$I}$P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(n%d_$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$c&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$c&j'y!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU'y!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$c&j'vpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU'vpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX'vp'y!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z(CS+rq$c&j'vp'y!b'l(;dOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z(CS.ST'w#S$c&j'm(;dO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c(CS.n_$c&j'vp'y!b'm(;dOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`/x`$c&j!l$Ip'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S1V`#p$Id$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S2d_#p$Id$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$2b3l_'u$(n$c&j'y!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k*r4r_$c&j'y!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k)`5vX$c&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q)`6jT$^#t$c&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#t6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y#t7bO$^#t#t7eP;=`<%l6y)`7kP;=`<%l5q*r7w]$^#t$c&j'y!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}%W8uZ'y!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p%W9oU$^#t'y!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}%W:UP;=`<%l8p*r:[P;=`<%l4k#%|:hg$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}st%Ztu`k$c&j'vp'y!b(T!LY's&;d$V#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P+d@`k$c&j'vp'y!b$V#tOY%ZYZ&cZr%Zrs&}st%Ztu@Tuw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![@T![!^%Z!^!_*g!_!c%Z!c!}@T!}#O%Z#O#P&c#P#R%Z#R#S@T#S#T%Z#T#o@T#o#p*g#p$g%Z$g;'S@T;'S;=`BT<%lO@T+dBWP;=`<%l@T(CSB^P;=`<%l>P%#SBl`$c&j'vp'y!b#h$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Cn!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#SCy_$c&j#z$Id'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%DfETa(h%Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$/l#>fi$c&j'vp'y!bl$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#>Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#b%Z#b#c#5T#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%Gh#@b_!a$b$c&j#x%Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$JT>P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(CS$=Uk$c&j'vp'y!b'm(;d(T!LY's&;d$V#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P",tokenizers:[DO,BO,2,3,4,5,6,7,8,9,10,11,12,13,LO,new V("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOq~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!O~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(S~~",141,325),new V("j~RQYZXz{^~^O'p~~aP!P!Qd~iO'q~~",25,307)],topRules:{Script:[0,5],SingleExpression:[1,266],SingleClassItem:[2,267]},dialects:{jsx:13213,ts:13215},dynamicPrecedences:{"76":1,"78":1,"162":1,"190":1},specialized:[{term:311,get:i=>HO[i]||-1},{term:327,get:i=>FO[i]||-1},{term:67,get:i=>KO[i]||-1}],tokenPrec:13238}),ee=[P("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),P("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),P("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),P("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),P("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),P(`try { + \${} +} catch (\${error}) { + \${} +}`,{label:"try",detail:"/ catch block",type:"keyword"}),P("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),P(`if (\${}) { + \${} +} else { + \${} +}`,{label:"if",detail:"/ else block",type:"keyword"}),P(`class \${name} { + constructor(\${params}) { + \${} + } +}`,{label:"class",detail:"definition",type:"keyword"}),P('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),P('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],F=new xO,sO=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function X(i){return(O,e)=>{let t=O.node.getChild("VariableDefinition");return t&&e(t,i),!0}}const te=["FunctionDeclaration"],ie={FunctionDeclaration:X("function"),ClassDeclaration:X("class"),ClassExpression:()=>!0,EnumDeclaration:X("constant"),TypeAliasDeclaration:X("type"),NamespaceDeclaration:X("namespace"),VariableDefinition(i,O){i.matchContext(te)||O(i,"variable")},TypeDefinition(i,O){O(i,"type")},__proto__:null};function rO(i,O){let e=F.get(O);if(e)return e;let t=[],a=!0;function r(s,Q){let n=i.sliceString(s.from,s.to);t.push({label:n,type:Q})}return O.cursor(eO.IncludeAnonymous).iterate(s=>{if(a)a=!1;else if(s.name){let Q=ie[s.name];if(Q&&Q(s,r)||sO.has(s.name))return!1}else if(s.to-s.from>8192){for(let Q of rO(i,s.node))t.push(Q);return!1}}),F.set(O,t),t}const y=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,q=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName"];function ae(i){let O=_(i.state).resolveInner(i.pos,-1);if(q.indexOf(O.name)>-1)return null;let e=O.name=="VariableName"||O.to-O.from<20&&y.test(i.state.sliceDoc(O.from,O.to));if(!e&&!i.explicit)return null;let t=[];for(let a=O;a;a=a.parent)sO.has(a.name)&&(t=t.concat(rO(i.state.doc,a)));return{options:t,from:e?O.from:i.pos,validFor:y}}function w(i,O,e){var t;let a=[];for(;;){let r=O.firstChild,s;if(r?.name=="VariableName")return a.push(i(r)),{path:a.reverse(),name:e};if(r?.name=="MemberExpression"&&((t=s=r.lastChild)===null||t===void 0?void 0:t.name)=="PropertyName")a.push(i(s)),O=r;else return null}}function se(i){let O=t=>i.state.doc.sliceString(t.from,t.to),e=_(i.state).resolveInner(i.pos,-1);return e.name=="PropertyName"?w(O,e.parent,O(e)):q.indexOf(e.name)>-1?null:e.name=="VariableName"||e.to-e.from<20&&y.test(O(e))?{path:[],name:O(e)}:(e.name=="."||e.name=="?.")&&e.parent.name=="MemberExpression"?w(O,e.parent,""):e.name=="MemberExpression"?w(O,e,""):i.explicit?{path:[],name:""}:null}function re(i,O){let e=[],t=new Set;for(let a=0;;a++){for(let s of(Object.getOwnPropertyNames||Object.keys)(i)){if(t.has(s))continue;t.add(s);let Q;try{Q=i[s]}catch{continue}e.push({label:s,type:typeof Q=="function"?/^[A-Z]/.test(s)?"class":O?"function":"method":O?"variable":"property",boost:-a})}let r=Object.getPrototypeOf(i);if(!r)return e;i=r}}function Ye(i){let O=new Map;return e=>{let t=se(e);if(!t)return null;let a=i;for(let s of t.path)if(a=a[s],!a)return null;let r=O.get(a);return r||O.set(a,r=re(a,!t.path.length)),{from:e.pos-t.name.length,options:r,validFor:y}}}const Z=pO.define({name:"javascript",parser:Oe.configure({props:[PO.add({IfStatement:W({except:/^\s*({|else\b)/}),TryStatement:W({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:fO,SwitchBody:i=>{let O=i.textAfter,e=/^\s*\}/.test(O),t=/^\s*(case|default)\b/.test(O);return i.baseIndent+(e?0:t?1:2)*i.unit},Block:uO({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":W({except:/^{/}),JSXElement(i){let O=/^\s*<\//.test(i.textAfter);return i.lineIndent(i.node.from)+(O?0:i.unit)},JSXEscape(i){let O=/\s*\}/.test(i.textAfter);return i.lineIndent(i.node.from)+(O?0:i.unit)},"JSXOpenTag JSXSelfClosingTag"(i){return i.column(i.node.from)+i.unit}}),ZO.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":gO,BlockComment(i){return{from:i.from+2,to:i.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),QO={test:i=>/^JSX/.test(i.name),facet:bO({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Qe=Z.configure({dialect:"ts"},"typescript"),ne=Z.configure({dialect:"jsx",props:[tO.add(i=>i.isTop?[QO]:void 0)]}),oe=Z.configure({dialect:"jsx ts",props:[tO.add(i=>i.isTop?[QO]:void 0)]},"typescript"),le="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(i=>({label:i,type:"keyword"}));function be(i={}){let O=i.jsx?i.typescript?oe:ne:i.typescript?Qe:Z;return new XO(O,[Z.data.of({autocomplete:dO(q,mO(ee.concat(le)))}),Z.data.of({autocomplete:ae}),i.jsx?ce:[]])}function he(i){for(;;){if(i.name=="JSXOpenTag"||i.name=="JSXSelfClosingTag"||i.name=="JSXFragmentTag")return i;if(!i.parent)return null;i=i.parent}}function K(i,O,e=i.length){for(let t=O?.firstChild;t;t=t.nextSibling)if(t.name=="JSXIdentifier"||t.name=="JSXBuiltin"||t.name=="JSXNamespacedName"||t.name=="JSXMemberExpression")return i.sliceString(t.from,Math.min(t.to,e));return""}const $e=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),ce=YO.inputHandler.of((i,O,e,t)=>{if(($e?i.composing:i.compositionStarted)||i.state.readOnly||O!=e||t!=">"&&t!="/"||!Z.isActiveAt(i.state,O,-1))return!1;let{state:a}=i,r=a.changeByRange(s=>{var Q,n;let{head:o}=s,$=_(a).resolveInner(o,-1),h;if($.name=="JSXStartTag"&&($=$.parent),t==">"&&$.name=="JSXFragmentTag")return{range:U.cursor(o+1),changes:{from:o,insert:">"}};if(t=="/"&&$.name=="JSXFragmentTag"){let c=$.parent,S=c?.parent;if(c.from==o-1&&((Q=S.lastChild)===null||Q===void 0?void 0:Q.name)!="JSXEndTag"&&(h=K(a.doc,S?.firstChild,o))){let p=`/${h}>`;return{range:U.cursor(o+p.length),changes:{from:o,insert:p}}}}else if(t==">"){let c=he($);if(c&&((n=c.lastChild)===null||n===void 0?void 0:n.name)!="JSXEndTag"&&a.sliceDoc(o,o+2)!="`}}}return{range:s}});return r.changes.empty?!1:(i.dispatch(r,{userEvent:"input.type",scrollIntoView:!0}),!0)});function xe(i,O){return O||(O={parserOptions:{ecmaVersion:2019,sourceType:"module"},env:{browser:!0,node:!0,es6:!0,es2015:!0,es2017:!0,es2020:!0},rules:{}},i.getRules().forEach((e,t)=>{e.meta.docs.recommended&&(O.rules[t]=2)})),e=>{let{state:t}=e,a=[];for(let{from:r,to:s}of Z.findRegions(t)){let Q=t.doc.lineAt(r),n={line:Q.number-1,col:r-Q.from,pos:r};for(let o of i.verify(t.sliceDoc(r,s),O))a.push(Se(o,t.doc,n))}return a}}function OO(i,O,e,t){return e.line(i+t.line).from+O+(i==1?t.col-1:-1)}function Se(i,O,e){let t=OO(i.line,i.column,O,e),a={from:t,to:i.endLine!=null&&i.endColumn!=1?OO(i.endLine,i.endColumn,O,e):t,message:i.message,source:i.ruleId?"eslint:"+i.ruleId:"eslint",severity:i.severity==1?"warning":"error"};if(i.fix){let{range:r,text:s}=i.fix,Q=r[0]+e.pos-t,n=r[1]+e.pos-t;a.actions=[{name:"fix",apply(o,$){o.dispatch({changes:{from:$+Q,to:$+n,insert:s},scrollIntoView:!0})}}]}return a}export{ce as autoCloseTags,se as completionPath,xe as esLint,be as javascript,Z as javascriptLanguage,ne as jsxLanguage,ae as localCompletionSource,Ye as scopeCompletionSource,ee as snippets,oe as tsxLanguage,Qe as typescriptLanguage}; +//# sourceMappingURL=index.0cc89e10.js.map diff --git a/gradio/templates/cdn/assets/index.0cc89e10.js.map b/gradio/templates/cdn/assets/index.0cc89e10.js.map new file mode 100644 index 0000000000000000000000000000000000000000..72fe8c3b6238ee9ec8ed8317bc14dfc50e47c581 --- /dev/null +++ b/gradio/templates/cdn/assets/index.0cc89e10.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.0cc89e10.js","sources":["../../../../ui/node_modules/.pnpm/@lezer+lr@1.3.3/node_modules/@lezer/lr/dist/index.js","../../../../ui/node_modules/.pnpm/@lezer+javascript@1.4.1/node_modules/@lezer/javascript/dist/index.es.js","../../../../ui/node_modules/.pnpm/@codemirror+lang-javascript@6.1.4/node_modules/@codemirror/lang-javascript/dist/index.js"],"sourcesContent":["import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/// A parse stack. These are used internally by the parser to track\n/// parsing progress. They also provide some properties and methods\n/// that external code such as a tokenizer can use to get information\n/// about the parse state.\nclass Stack {\n /// @internal\n constructor(\n /// The parse that this stack is part of @internal\n p, \n /// Holds state, input pos, buffer index triplets for all but the\n /// top state @internal\n stack, \n /// The current parse state @internal\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /// @internal\n reducePos, \n /// The input position up to which this stack has parsed.\n pos, \n /// The dynamic score of the stack, including dynamic precedence\n /// and error-recovery penalties\n /// @internal\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /// @internal\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /// @internal\n bufferBase, \n /// @internal\n curContext, \n /// @internal\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /// @internal\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /// @internal\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /// @internal\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /// The stack's current [context](#lr.ContextTracker) value, if\n /// any. Its type will depend on the context tracker's type\n /// parameter, or it will be `null` if there is no context\n /// tracker.\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /// @internal\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /// @internal\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /// @internal\n storeNode(term, start, end, size = 4, isReduce = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!isReduce || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /// @internal\n shift(action, next, nextEnd) {\n let start = this.pos;\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (nextEnd > this.pos || next <= parser.maxNode) {\n this.pos = nextEnd;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = nextEnd;\n }\n this.pushState(nextState, start);\n this.shiftContext(next, start);\n if (next <= parser.maxNode)\n this.buffer.push(next, start, nextEnd, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = nextEnd;\n this.shiftContext(next, start);\n if (next <= this.p.parser.maxNode)\n this.buffer.push(next, start, nextEnd, 4);\n }\n }\n // Apply an action\n /// @internal\n apply(action, next, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /// @internal\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /// @internal\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /// @internal\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /// Check if the given term would be able to be shifted (optionally\n /// after some reductions) on this stack. This can be useful for\n /// external tokenizers that want to make sure they only provide a\n /// given token when it applies.\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /// @internal\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /// @internal\n forceReduce() {\n let reduce = this.p.parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n let { parser } = this.p;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0)\n return false;\n this.storeNode(0 /* Term.Err */, this.reducePos, this.reducePos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /// @internal\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /// Check whether this state has no further actions (assumed to be a direct descendant of the\n /// top state, since any other states must be able to continue\n /// somehow). @internal\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /// Restart the stack (put it back in its start state). Only safe\n /// when this.stack.length == 3 (state is directly below the top\n /// state). @internal\n restart() {\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /// @internal\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /// Get the parser used by this stack.\n get parser() { return this.p.parser; }\n /// Test whether a given dialect (by numeric ID, as exported from\n /// the terms file) is enabled.\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /// @internal\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.reducePos, this.reducePos, -3);\n }\n /// @internal\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.reducePos, this.reducePos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /// @internal\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /// @internal\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\nvar Recover;\n(function (Recover) {\n Recover[Recover[\"Insert\"] = 200] = \"Insert\";\n Recover[Recover[\"Delete\"] = 190] = \"Delete\";\n Recover[Recover[\"Reduce\"] = 100] = \"Reduce\";\n Recover[Recover[\"MaxNext\"] = 4] = \"MaxNext\";\n Recover[Recover[\"MaxInsertStackDepth\"] = 300] = \"MaxInsertStackDepth\";\n Recover[Recover[\"DampenInsertStackDepth\"] = 120] = \"DampenInsertStackDepth\";\n Recover[Recover[\"MinBigReduction\"] = 2000] = \"MinBigReduction\";\n})(Recover || (Recover = {}));\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/// [Tokenizers](#lr.ExternalTokenizer) interact with the input\n/// through this interface. It presents the input as a stream of\n/// characters, tracking lookahead and hiding the complexity of\n/// [ranges](#common.Parser.parse^ranges) from tokenizer code.\nclass InputStream {\n /// @internal\n constructor(\n /// @internal\n input, \n /// @internal\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /// @internal\n this.chunk = \"\";\n /// @internal\n this.chunkOff = 0;\n /// Backup chunk\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /// The character code of the next code unit in the input, or -1\n /// when the stream is at the end of the input.\n this.next = -1;\n /// @internal\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /// @internal\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /// @internal\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /// Look at a code unit near the stream position. `.peek(0)` equals\n /// `.next`, `.peek(-1)` gives you the previous character, and so\n /// on.\n ///\n /// Note that looking around during tokenizing creates dependencies\n /// on potentially far-away content, which may reduce the\n /// effectiveness incremental parsing—when looking forward—or even\n /// cause invalid reparses when looking backward more than 25 code\n /// units, since the library does not track lookbehind.\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /// Accept a token. By default, the end of the token is set to the\n /// current stream position, but you can pass an offset (relative to\n /// the stream position) to change that.\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /// Move the stream forward N (defaults to 1) code units. Returns\n /// the new value of [`next`](#lr.InputStream.next).\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /// @internal\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /// @internal\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/// @internal\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/// @hide\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, cur;\n for (;;) {\n cur = input.pos;\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (input.next < 0)\n break;\n input.advance();\n input.reset(cur + 1, input.token);\n }\n if (cur > start) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, cur - start);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/// `@external tokens` declarations in the grammar should resolve to\n/// an instance of this class.\nclass ExternalTokenizer {\n /// Create a tokenizer. The first argument is the function that,\n /// given an input stream, scans for the types of tokens it\n /// recognizes at the stream's position, and calls\n /// [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n /// one.\n constructor(\n /// @internal\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */ && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nvar Safety;\n(function (Safety) {\n Safety[Safety[\"Margin\"] = 25] = \"Margin\";\n})(Safety || (Safety = {}));\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Safety.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Safety.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Safety.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nvar Rec;\n(function (Rec) {\n Rec[Rec[\"Distance\"] = 5] = \"Distance\";\n Rec[Rec[\"MaxRemainingPerStep\"] = 3] = \"MaxRemainingPerStep\";\n // When two stacks have been running independently long enough to\n // add this many elements to their buffers, prune one.\n Rec[Rec[\"MinBufferLengthPrune\"] = 500] = \"MinBufferLengthPrune\";\n Rec[Rec[\"ForceReduceLimit\"] = 10] = \"ForceReduceLimit\";\n // Once a stack reaches this depth (in .stack.length) force-reduce\n // it back to CutTo to avoid creating trees that overflow the stack\n // on recursive traversal.\n Rec[Rec[\"CutDepth\"] = 15000] = \"CutDepth\";\n Rec[Rec[\"CutTo\"] = 9000] = \"CutTo\";\n Rec[Rec[\"MaxLeftAssociativeReductionCount\"] = 300] = \"MaxLeftAssociativeReductionCount\";\n // The maximum number of non-recovering stacks to explore (to avoid\n // getting bogged down with exponentially multiplying stacks in\n // ambiguous content)\n Rec[Rec[\"MaxStackCount\"] = 12] = \"MaxStackCount\";\n})(Rec || (Rec = {}));\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished)\n return this.stackToTree(finished);\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished)\n return this.stackToTree(finished.forceAll());\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 15000 /* Rec.CutDepth */) {\n while (stack.stack.length > 9000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n localStack.apply(action, term, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/// Context trackers are used to track stateful context (such as\n/// indentation in the Python grammar, or parent elements in the XML\n/// grammar) needed by external tokenizers. You declare them in a\n/// grammar file as `@context exportName from \"module\"`.\n///\n/// Context values should be immutable, and can be updated (replaced)\n/// on shift or reduce actions.\n///\n/// The export used in a `@context` declaration should be of this\n/// type.\nclass ContextTracker {\n /// Define a context tracker.\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/// Holds the parse tables for a given grammar, as generated by\n/// `lezer-generator`, and provides [methods](#common.Parser) to parse\n/// content with.\nclass LRParser extends Parser {\n /// @internal\n constructor(spec) {\n super();\n /// @internal\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /// Get a goto table entry @internal\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /// Check if this state has an action for a given terminal @internal\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /// @internal\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /// @internal\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /// @internal\n validAction(state, action) {\n if (action == this.stateSlot(state, 4 /* ParseState.DefaultReduce */))\n return true;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n return false;\n }\n if (action == pair(this.data, i + 1))\n return true;\n }\n }\n /// Get the states that can follow this one through shift actions or\n /// goto jumps. @internal\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /// Configure the parser. Returns a new parser instance that has the\n /// given settings modified. Settings not provided in `config` are\n /// kept from the original parser.\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /// Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n /// are registered for this parser.\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /// Returns the name associated with a given term. This will only\n /// work for all terms when the parser was generated with the\n /// `--names` option. By default, only the names of tagged terms are\n /// stored.\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /// The eof term id is always allocated directly after the node\n /// types. @internal\n get eofTerm() { return this.maxNode + 1; }\n /// The type of top node produced by the parser.\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /// @internal\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /// @internal\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /// Used by the output of the parser generator. Not available to\n /// user code. @hide\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { ContextTracker, ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst noSemi = 301,\n incdec = 1,\n incdecPrefix = 2,\n insertSemi = 302,\n spaces = 304,\n newline = 305,\n LineComment = 3,\n BlockComment = 4;\n\n/* Hand-written tokenizers for JavaScript tokens that can't be\n expressed by lezer's built-in tokenizer. */\n\nconst space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,\n 8201, 8202, 8232, 8233, 8239, 8287, 12288];\n\nconst braceR = 125, semicolon = 59, slash = 47, star = 42,\n plus = 43, minus = 45;\n\nconst trackNewline = new ContextTracker({\n start: false,\n shift(context, term) {\n return term == LineComment || term == BlockComment || term == spaces ? context : term == newline\n },\n strict: false\n});\n\nconst insertSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if ((next == braceR || next == -1 || stack.context) && stack.canShift(insertSemi))\n input.acceptToken(insertSemi);\n}, {contextual: true, fallback: true});\n\nconst noSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input, after;\n if (space.indexOf(next) > -1) return\n if (next == slash && ((after = input.peek(1)) == slash || after == star)) return\n if (next != braceR && next != semicolon && next != -1 && !stack.context && stack.canShift(noSemi))\n input.acceptToken(noSemi);\n}, {contextual: true});\n\nconst incdecToken = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == plus || next == minus) {\n input.advance();\n if (next == input.next) {\n input.advance();\n let mayPostfix = !stack.context && stack.canShift(incdec);\n input.acceptToken(mayPostfix ? incdec : incdecPrefix);\n }\n }\n}, {contextual: true});\n\nconst jsHighlight = styleTags({\n \"get set async static\": tags.modifier,\n \"for while do if else switch try catch finally return throw break continue default case\": tags.controlKeyword,\n \"in of await yield void typeof delete instanceof\": tags.operatorKeyword,\n \"let var const function class extends\": tags.definitionKeyword,\n \"import export from\": tags.moduleKeyword,\n \"with debugger as new\": tags.keyword,\n TemplateString: tags.special(tags.string),\n super: tags.atom,\n BooleanLiteral: tags.bool,\n this: tags.self,\n null: tags.null,\n Star: tags.modifier,\n VariableName: tags.variableName,\n \"CallExpression/VariableName TaggedTemplateExpression/VariableName\": tags.function(tags.variableName),\n VariableDefinition: tags.definition(tags.variableName),\n Label: tags.labelName,\n PropertyName: tags.propertyName,\n PrivatePropertyName: tags.special(tags.propertyName),\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n \"FunctionDeclaration/VariableDefinition\": tags.function(tags.definition(tags.variableName)),\n \"ClassDeclaration/VariableDefinition\": tags.definition(tags.className),\n PropertyDefinition: tags.definition(tags.propertyName),\n PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),\n UpdateOp: tags.updateOperator,\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n Number: tags.number,\n String: tags.string,\n Escape: tags.escape,\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n RegExp: tags.regexp,\n Equals: tags.definitionOperator,\n Arrow: tags.function(tags.punctuation),\n \": Spread\": tags.punctuation,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \"InterpolationStart InterpolationEnd\": tags.special(tags.brace),\n \".\": tags.derefOperator,\n \", ;\": tags.separator,\n \"@\": tags.meta,\n\n TypeName: tags.typeName,\n TypeDefinition: tags.definition(tags.typeName),\n \"type enum interface implements namespace module declare\": tags.definitionKeyword,\n \"abstract global Privacy readonly override\": tags.modifier,\n \"is keyof unique infer\": tags.operatorKeyword,\n\n JSXAttributeValue: tags.attributeValue,\n JSXText: tags.content,\n \"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag\": tags.angleBracket,\n \"JSXIdentifier JSXNameSpacedName\": tags.tagName,\n \"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName\": tags.attributeName,\n \"JSXBuiltin/JSXIdentifier\": tags.standard(tags.tagName)\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,export:14, as:19, from:27, default:30, async:35, function:36, extends:46, this:50, true:58, false:58, null:70, void:74, typeof:78, super:96, new:130, delete:146, yield:155, await:159, class:164, public:219, private:219, protected:219, readonly:221, instanceof:240, satisfies:243, in:244, const:246, import:278, keyof:333, unique:337, infer:343, is:379, abstract:399, implements:401, type:403, let:406, var:408, interface:415, enum:419, namespace:425, module:427, declare:431, global:435, for:456, of:465, while:468, with:472, do:476, if:480, else:482, switch:486, case:492, try:498, catch:502, finally:506, return:510, throw:514, break:518, continue:522, debugger:526};\nconst spec_word = {__proto__:null,async:117, get:119, set:121, public:181, private:181, protected:181, static:183, abstract:185, override:187, readonly:193, accessor:195, new:383};\nconst spec_LessThan = {__proto__:null,\"<\":137};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$BhO`QUOOO%QQUOOO'TQWOOP(_OSOOO*mQ(CjO'#CfO*tOpO'#CgO+SO!bO'#CgO+bO07`O'#DZO-sQUO'#DaO.TQUO'#DlO%QQUO'#DvO0[QUO'#EOOOQ(CY'#EW'#EWO0rQSO'#ETOOQO'#I_'#I_O0zQSO'#GjOOQO'#Eh'#EhO1VQSO'#EgO1[QSO'#EgO3^Q(CjO'#JbO5}Q(CjO'#JcO6kQSO'#FVO6pQ#tO'#FnOOQ(CY'#F_'#F_O6{O&jO'#F_O7ZQ,UO'#FuO8qQSO'#FtOOQ(CY'#Jc'#JcOOQ(CW'#Jb'#JbOOQQ'#J|'#J|O8vQSO'#IOO8{Q(C[O'#IPOOQQ'#JO'#JOOOQQ'#IT'#ITQ`QUOOO%QQUO'#DnO9TQUO'#DzO%QQUO'#D|O9[QSO'#GjO9aQ,UO'#ClO9oQSO'#EfO9zQSO'#EqO:PQ,UO'#F^O:nQSO'#GjO:sQSO'#GnO;OQSO'#GnO;^QSO'#GqO;^QSO'#GrO;^QSO'#GtO9[QSO'#GwO;}QSO'#GzO=`QSO'#CbO=pQSO'#HXO=xQSO'#H_O=xQSO'#HaO`QUO'#HcO=xQSO'#HeO=xQSO'#HhO=}QSO'#HnO>SQ(C]O'#HtO%QQUO'#HvO>_Q(C]O'#HxO>jQ(C]O'#HzO8{Q(C[O'#H|O>uQ(CjO'#CfO?wQWO'#DfQOQSOOO@_QSO'#EPO9aQ,UO'#EfO@jQSO'#EfO@uQ`O'#F^OOQQ'#Cd'#CdOOQ(CW'#Dk'#DkOOQ(CW'#Jf'#JfO%QQUO'#JfOBOQWO'#E_OOQ(CW'#E^'#E^OBYQ(C`O'#E_OBtQWO'#ESOOQO'#Ji'#JiOCYQWO'#ESOCgQWO'#E_OC}QWO'#EeODQQWO'#E_O@}QWO'#E_OBtQWO'#E_PDkO?MpO'#C`POOO)CDm)CDmOOOO'#IU'#IUODvOpO,59ROOQ(CY,59R,59ROOOO'#IV'#IVOEUO!bO,59RO%QQUO'#D]OOOO'#IX'#IXOEdO07`O,59uOOQ(CY,59u,59uOErQUO'#IYOFVQSO'#JdOHXQbO'#JdO+pQUO'#JdOH`QSO,59{OHvQSO'#EhOITQSO'#JqOI`QSO'#JpOI`QSO'#JpOIhQSO,5;UOImQSO'#JoOOQ(CY,5:W,5:WOItQUO,5:WOKuQ(CjO,5:bOLfQSO,5:jOLkQSO'#JmOMeQ(C[O'#JnO:sQSO'#JmOMlQSO'#JmOMtQSO,5;TOMyQSO'#JmOOQ(CY'#Cf'#CfO%QQUO'#EOONmQ`O,5:oOOQO'#Jj'#JjOOQO-E<]-E<]O9[QSO,5=UO! TQSO,5=UO! YQUO,5;RO!#]Q,UO'#EcO!$pQSO,5;RO!&YQ,UO'#DpO!&aQUO'#DuO!&kQWO,5;[O!&sQWO,5;[O%QQUO,5;[OOQQ'#E}'#E}OOQQ'#FP'#FPO%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]O%QQUO,5;]OOQQ'#FT'#FTO!'RQUO,5;nOOQ(CY,5;s,5;sOOQ(CY,5;t,5;tO!)UQSO,5;tOOQ(CY,5;u,5;uO%QQUO'#IeO!)^Q(C[O,5jOOQQ'#JW'#JWOOQQ,5>k,5>kOOQQ-EgQWO'#EkOOQ(CW'#Jo'#JoO!>nQ(C[O'#J}O8{Q(C[O,5=YO;^QSO,5=`OOQO'#Cr'#CrO!>yQWO,5=]O!?RQ,UO,5=^O!?^QSO,5=`O!?cQ`O,5=cO=}QSO'#G|O9[QSO'#HOO!?kQSO'#HOO9aQ,UO'#HRO!?pQSO'#HROOQQ,5=f,5=fO!?uQSO'#HSO!?}QSO'#ClO!@SQSO,58|O!@^QSO,58|O!BfQUO,58|OOQQ,58|,58|O!BsQ(C[O,58|O%QQUO,58|O!COQUO'#HZOOQQ'#H['#H[OOQQ'#H]'#H]O`QUO,5=sO!C`QSO,5=sO`QUO,5=yO`QUO,5={O!CeQSO,5=}O`QUO,5>PO!CjQSO,5>SO!CoQUO,5>YOOQQ,5>`,5>`O%QQUO,5>`O8{Q(C[O,5>bOOQQ,5>d,5>dO!GvQSO,5>dOOQQ,5>f,5>fO!GvQSO,5>fOOQQ,5>h,5>hO!G{QWO'#DXO%QQUO'#JfO!HjQWO'#JfO!IXQWO'#DgO!IjQWO'#DgO!K{QUO'#DgO!LSQSO'#JeO!L[QSO,5:QO!LaQSO'#ElO!LoQSO'#JrO!LwQSO,5;VO!L|QWO'#DgO!MZQWO'#EROOQ(CY,5:k,5:kO%QQUO,5:kO!MbQSO,5:kO=}QSO,5;QO!;xQWO,5;QO!tO+pQUO,5>tOOQO,5>z,5>zO#$vQUO'#IYOOQO-EtO$8XQSO1G5jO$8aQSO1G5vO$8iQbO1G5wO:sQSO,5>zO$8sQSO1G5sO$8sQSO1G5sO:sQSO1G5sO$8{Q(CjO1G5tO%QQUO1G5tO$9]Q(C[O1G5tO$9nQSO,5>|O:sQSO,5>|OOQO,5>|,5>|O$:SQSO,5>|OOQO-E<`-E<`OOQO1G0]1G0]OOQO1G0_1G0_O!)XQSO1G0_OOQQ7+([7+([O!#]Q,UO7+([O%QQUO7+([O$:bQSO7+([O$:mQ,UO7+([O$:{Q(CjO,59nO$=TQ(CjO,5UOOQQ,5>U,5>UO%QQUO'#HkO%&qQSO'#HmOOQQ,5>[,5>[O:sQSO,5>[OOQQ,5>^,5>^OOQQ7+)`7+)`OOQQ7+)f7+)fOOQQ7+)j7+)jOOQQ7+)l7+)lO%&vQWO1G5lO%'[Q$IUO1G0rO%'fQSO1G0rOOQO1G/m1G/mO%'qQ$IUO1G/mO=}QSO1G/mO!'RQUO'#DgOOQO,5>u,5>uOOQO-E{,5>{OOQO-E<_-E<_O!;xQWO1G/mOOQO-E<[-E<[OOQ(CY1G0X1G0XOOQ(CY7+%q7+%qO!MeQSO7+%qOOQ(CY7+&W7+&WO=}QSO7+&WO!;xQWO7+&WOOQO7+%t7+%tO$7kQ(CjO7+&POOQO7+&P7+&PO%QQUO7+&PO%'{Q(C[O7+&PO=}QSO7+%tO!;xQWO7+%tO%(WQ(C[O7+&POBtQWO7+%tO%(fQ(C[O7+&PO%(zQ(C`O7+&PO%)UQWO7+%tOBtQWO7+&PO%)cQWO7+&PO%)yQSO7++_O%)yQSO7++_O%*RQ(CjO7++`O%QQUO7++`OOQO1G4h1G4hO:sQSO1G4hO%*cQSO1G4hOOQO7+%y7+%yO!MeQSO<vOOQO-EwO%QQUO,5>wOOQO-ESQ$IUO1G0wO%>ZQ$IUO1G0wO%@RQ$IUO1G0wO%@fQ(CjO<VOOQQ,5>X,5>XO&#WQSO1G3vO:sQSO7+&^O!'RQUO7+&^OOQO7+%X7+%XO&#]Q$IUO1G5wO=}QSO7+%XOOQ(CY<zAN>zO%QQUOAN?VO=}QSOAN>zO&<^Q(C[OAN?VO!;xQWOAN>zO&zO&RO!V+iO^(qX'j(qX~O#W+mO'|%OO~Og+pO!X$yO'|%OO~O!X+rO~Oy+tO!XXO~O!t+yO~Ob,OO~O's#jO!W(sP~Ob%lO~O%a!OO's%|O~PRO!V,yO!W(fa~O!W2SO~P'TO^%^O#W2]O'j%^O~O^%^O!a#rO#W2]O'j%^O~O^%^O!a#rO!h%ZO!l2aO#W2]O'j%^O'|%OO(`'dO~O!]2bO!^2bO't!iO~PBtO![2eO!]2bO!^2bO#S2fO#T2fO't!iO~PBtO![2eO!]2bO!^2bO#P2gO#S2fO#T2fO't!iO~PBtO^%^O!a#rO!l2aO#W2]O'j%^O(`'dO~O^%^O'j%^O~P!3jO!V$^Oo$ja~O!S&|i!V&|i~P!3jO!V'xO!S(Wi~O!V(PO!S(di~O!S(ei!V(ei~P!3jO!V(]O!g(ai~O!V(bi!g(bi^(bi'j(bi~P!3jO#W2kO!V(bi!g(bi^(bi'j(bi~O|%vO!X%wO!x]O#a2nO#b2mO's%eO~O|%vO!X%wO#b2mO's%eO~Og2uO!X'QO%`2tO~Og2uO!X'QO%`2tO'|%OO~O#cvaPvaXva^vakva!eva!fva!hva!lva#fva#gva#hva#iva#jva#kva#lva#mva#nva#pva#rva#tva#uva'jva(Qva(`va!gva!Sva'hvaova!Xva%`va!ava~P#M{O#c$kaP$kaX$ka^$kak$kaz$ka!e$ka!f$ka!h$ka!l$ka#f$ka#g$ka#h$ka#i$ka#j$ka#k$ka#l$ka#m$ka#n$ka#p$ka#r$ka#t$ka#u$ka'j$ka(Q$ka(`$ka!g$ka!S$ka'h$kao$ka!X$ka%`$ka!a$ka~P#NqO#c$maP$maX$ma^$mak$maz$ma!e$ma!f$ma!h$ma!l$ma#f$ma#g$ma#h$ma#i$ma#j$ma#k$ma#l$ma#m$ma#n$ma#p$ma#r$ma#t$ma#u$ma'j$ma(Q$ma(`$ma!g$ma!S$ma'h$mao$ma!X$ma%`$ma!a$ma~P$ dO#c${aP${aX${a^${ak${az${a!V${a!e${a!f${a!h${a!l${a#f${a#g${a#h${a#i${a#j${a#k${a#l${a#m${a#n${a#p${a#r${a#t${a#u${a'j${a(Q${a(`${a!g${a!S${a'h${a#W${ao${a!X${a%`${a!a${a~P#(yO^#Zq!V#Zq'j#Zq'h#Zq!S#Zq!g#Zqo#Zq!X#Zq%`#Zq!a#Zq~P!3jOd'OX!V'OX~P!$uO!V._Od(Za~O!U2}O!V'PX!g'PX~P%QO!V.bO!g([a~O!V.bO!g([a~P!3jO!S3QO~O#x!ja!W!ja~PI{O#x!ba!V!ba!W!ba~P#?dO#x!na!W!na~P!6TO#x!pa!W!pa~P!8nO!X3dO$TfO$^3eO~O!W3iO~Oo3jO~P#(yO^$gq!V$gq'j$gq'h$gq!S$gq!g$gqo$gq!X$gq%`$gq!a$gq~P!3jO!S3kO~Ol.}O'uTO'xUO~Oy)sO|)tO(h)xOg%Wi(g%Wi!V%Wi#W%Wi~Od%Wi#x%Wi~P$HbOy)sO|)tOg%Yi(g%Yi(h%Yi!V%Yi#W%Yi~Od%Yi#x%Yi~P$ITO(`$WO~P#(yO!U3nO's%eO!V'YX!g'YX~O!V/VO!g(ma~O!V/VO!a#rO!g(ma~O!V/VO!a#rO(`'dO!g(ma~Od$ti!V$ti#W$ti#x$ti~P!-jO!U3vO's*UO!S'[X!V'[X~P!.XO!V/_O!S(na~O!V/_O!S(na~P#(yO!a#rO~O!a#rO#n4OO~Ok4RO!a#rO(`'dO~Od(Oi!V(Oi~P!-jO#W4UOd(Oi!V(Oi~P!-jO!g4XO~O^$hq!V$hq'j$hq'h$hq!S$hq!g$hqo$hq!X$hq%`$hq!a$hq~P!3jO!V4]O!X(oX~P#(yO!f#tO~P3zO!X$rX%TYX^$rX!V$rX'j$rX~P!,aO%T4_OghXyhX|hX!XhX(ghX(hhX^hX!VhX'jhX~O%T4_O~O%a4fO's+WO'uTO'xUO!V'eX!W'eX~O!V0_O!W(ua~OX4jO~O]4kO~O!S4oO~O^%^O'j%^O~P#(yO!X$yO~P#(yO!V4tO#W4vO!W(rX~O!W4wO~Ol!kO|4yO![5WO!]4}O!^4}O!x;oO!|5VO!}5UO#O5UO#P5TO#S5SO#T!wO't!iO'uTO'xUO(T!jO(_!nO~O!W5RO~P%#XOg5]O!X0zO%`5[O~Og5]O!X0zO%`5[O'|%OO~O's#jO!V'dX!W'dX~O!V1VO!W(sa~O'uTO'xUO(T5fO~O]5jO~O!g5mO~P%QO^5oO~O^5oO~P%QO#n5qO&Q5rO~PMPO_1mO!W5vO&`1lO~P`O!a5xO~O!a5zO!V(Yi!W(Yi!a(Yi!h(Yi'|(Yi~O!V#`i!W#`i~P#?dO#W5{O!V#`i!W#`i~O!V!Zi!W!Zi~P#?dO^%^O#W6UO'j%^O~O^%^O!a#rO#W6UO'j%^O~O^%^O!a#rO!l6ZO#W6UO'j%^O(`'dO~O!h%ZO'|%OO~P%(fO!]6[O!^6[O't!iO~PBtO![6_O!]6[O!^6[O#S6`O#T6`O't!iO~PBtO!V(]O!g(aq~O!V(bq!g(bq^(bq'j(bq~P!3jO|%vO!X%wO#b6dO's%eO~O!X'QO%`6gO~Og6jO!X'QO%`6gO~O#c%WiP%WiX%Wi^%Wik%Wiz%Wi!e%Wi!f%Wi!h%Wi!l%Wi#f%Wi#g%Wi#h%Wi#i%Wi#j%Wi#k%Wi#l%Wi#m%Wi#n%Wi#p%Wi#r%Wi#t%Wi#u%Wi'j%Wi(Q%Wi(`%Wi!g%Wi!S%Wi'h%Wio%Wi!X%Wi%`%Wi!a%Wi~P$HbO#c%YiP%YiX%Yi^%Yik%Yiz%Yi!e%Yi!f%Yi!h%Yi!l%Yi#f%Yi#g%Yi#h%Yi#i%Yi#j%Yi#k%Yi#l%Yi#m%Yi#n%Yi#p%Yi#r%Yi#t%Yi#u%Yi'j%Yi(Q%Yi(`%Yi!g%Yi!S%Yi'h%Yio%Yi!X%Yi%`%Yi!a%Yi~P$ITO#c$tiP$tiX$ti^$tik$tiz$ti!V$ti!e$ti!f$ti!h$ti!l$ti#f$ti#g$ti#h$ti#i$ti#j$ti#k$ti#l$ti#m$ti#n$ti#p$ti#r$ti#t$ti#u$ti'j$ti(Q$ti(`$ti!g$ti!S$ti'h$ti#W$tio$ti!X$ti%`$ti!a$ti~P#(yOd'Oa!V'Oa~P!-jO!V'Pa!g'Pa~P!3jO!V.bO!g([i~O#x#Zi!V#Zi!W#Zi~P#?dOP$YOy#vOz#wO|#xO!f#tO!h#uO!l$YO(QVOX#eik#ei!e#ei#g#ei#h#ei#i#ei#j#ei#k#ei#l#ei#m#ei#n#ei#p#ei#r#ei#t#ei#u#ei#x#ei(`#ei(g#ei(h#ei!V#ei!W#ei~O#f#ei~P%2xO#f;wO~P%2xOP$YOy#vOz#wO|#xO!f#tO!h#uO!l$YO#f;wO#g;xO#h;xO#i;xO(QVOX#ei!e#ei#j#ei#k#ei#l#ei#m#ei#n#ei#p#ei#r#ei#t#ei#u#ei#x#ei(`#ei(g#ei(h#ei!V#ei!W#ei~Ok#ei~P%5TOk;yO~P%5TOP$YOk;yOy#vOz#wO|#xO!f#tO!h#uO!l$YO#f;wO#g;xO#h;xO#i;xO#j;zO(QVO#p#ei#r#ei#t#ei#u#ei#x#ei(`#ei(g#ei(h#ei!V#ei!W#ei~OX#ei!e#ei#k#ei#l#ei#m#ei#n#ei~P%7`OXbO^#vy!V#vy'j#vy'h#vy!S#vy!g#vyo#vy!X#vy%`#vy!a#vy~P!3jOg=jOy)sO|)tO(g)vO(h)xO~OP#eiX#eik#eiz#ei!e#ei!f#ei!h#ei!l#ei#f#ei#g#ei#h#ei#i#ei#j#ei#k#ei#l#ei#m#ei#n#ei#p#ei#r#ei#t#ei#u#ei#x#ei(Q#ei(`#ei!V#ei!W#ei~P%AYO!f#tOP(PXX(PXg(PXk(PXy(PXz(PX|(PX!e(PX!h(PX!l(PX#f(PX#g(PX#h(PX#i(PX#j(PX#k(PX#l(PX#m(PX#n(PX#p(PX#r(PX#t(PX#u(PX#x(PX(Q(PX(`(PX(g(PX(h(PX!V(PX!W(PX~O#x#yi!V#yi!W#yi~P#?dO#x!ni!W!ni~P$!qO!W6vO~O!V'Xa!W'Xa~P#?dO!a#rO(`'dO!V'Ya!g'Ya~O!V/VO!g(mi~O!V/VO!a#rO!g(mi~Od$tq!V$tq#W$tq#x$tq~P!-jO!S'[a!V'[a~P#(yO!a6}O~O!V/_O!S(ni~P#(yO!V/_O!S(ni~O!S7RO~O!a#rO#n7WO~Ok7XO!a#rO(`'dO~O!S7ZO~Od$vq!V$vq#W$vq#x$vq~P!-jO^$hy!V$hy'j$hy'h$hy!S$hy!g$hyo$hy!X$hy%`$hy!a$hy~P!3jO!V4]O!X(oa~O^#Zy!V#Zy'j#Zy'h#Zy!S#Zy!g#Zyo#Zy!X#Zy%`#Zy!a#Zy~P!3jOX7`O~O!V0_O!W(ui~O]7fO~O!a5zO~O(T(qO!V'aX!W'aX~O!V4tO!W(ra~O!h%ZO'|%OO^(YX!a(YX!l(YX#W(YX'j(YX(`(YX~O's7oO~P.[O!x;oO!|7rO!}7qO#O7qO#P7pO#S'bO#T'bO~PBtO^%^O!a#rO!l'hO#W'fO'j%^O(`'dO~O!W7vO~P%#XOl!kO'uTO'xUO(T!jO(_!nO~O|7wO~P%MdO![7{O!]7zO!^7zO#P7pO#S'bO#T'bO't!iO~PBtO![7{O!]7zO!^7zO!}7|O#O7|O#P7pO#S'bO#T'bO't!iO~PBtO!]7zO!^7zO't!iO(T!jO(_!nO~O!X0zO~O!X0zO%`8OO~Og8RO!X0zO%`8OO~OX8WO!V'da!W'da~O!V1VO!W(si~O!g8[O~O!g8]O~O!g8^O~O!g8^O~P%QO^8`O~O!a8cO~O!g8dO~O!V(ei!W(ei~P#?dO^%^O#W8lO'j%^O~O^%^O!a#rO#W8lO'j%^O~O^%^O!a#rO!l8pO#W8lO'j%^O(`'dO~O!h%ZO'|%OO~P&$QO!]8qO!^8qO't!iO~PBtO!V(]O!g(ay~O!V(by!g(by^(by'j(by~P!3jO!X'QO%`8uO~O#c$tqP$tqX$tq^$tqk$tqz$tq!V$tq!e$tq!f$tq!h$tq!l$tq#f$tq#g$tq#h$tq#i$tq#j$tq#k$tq#l$tq#m$tq#n$tq#p$tq#r$tq#t$tq#u$tq'j$tq(Q$tq(`$tq!g$tq!S$tq'h$tq#W$tqo$tq!X$tq%`$tq!a$tq~P#(yO#c$vqP$vqX$vq^$vqk$vqz$vq!V$vq!e$vq!f$vq!h$vq!l$vq#f$vq#g$vq#h$vq#i$vq#j$vq#k$vq#l$vq#m$vq#n$vq#p$vq#r$vq#t$vq#u$vq'j$vq(Q$vq(`$vq!g$vq!S$vq'h$vq#W$vqo$vq!X$vq%`$vq!a$vq~P#(yO!V'Pi!g'Pi~P!3jO#x#Zq!V#Zq!W#Zq~P#?dOy/yOz/yO|/zOPvaXvagvakva!eva!fva!hva!lva#fva#gva#hva#iva#jva#kva#lva#mva#nva#pva#rva#tva#uva#xva(Qva(`va(gva(hva!Vva!Wva~Oy)sO|)tOP$kaX$kag$kak$kaz$ka!e$ka!f$ka!h$ka!l$ka#f$ka#g$ka#h$ka#i$ka#j$ka#k$ka#l$ka#m$ka#n$ka#p$ka#r$ka#t$ka#u$ka#x$ka(Q$ka(`$ka(g$ka(h$ka!V$ka!W$ka~Oy)sO|)tOP$maX$mag$mak$maz$ma!e$ma!f$ma!h$ma!l$ma#f$ma#g$ma#h$ma#i$ma#j$ma#k$ma#l$ma#m$ma#n$ma#p$ma#r$ma#t$ma#u$ma#x$ma(Q$ma(`$ma(g$ma(h$ma!V$ma!W$ma~OP${aX${ak${az${a!e${a!f${a!h${a!l${a#f${a#g${a#h${a#i${a#j${a#k${a#l${a#m${a#n${a#p${a#r${a#t${a#u${a#x${a(Q${a(`${a!V${a!W${a~P%AYO#x$gq!V$gq!W$gq~P#?dO#x$hq!V$hq!W$hq~P#?dO!W9PO~O#x9QO~P!-jO!a#rO!V'Yi!g'Yi~O!a#rO(`'dO!V'Yi!g'Yi~O!V/VO!g(mq~O!S'[i!V'[i~P#(yO!V/_O!S(nq~O!S9WO~P#(yO!S9WO~Od(Oy!V(Oy~P!-jO!V'_a!X'_a~P#(yO!X%Sq^%Sq!V%Sq'j%Sq~P#(yOX9]O~O!V0_O!W(uq~O#W9aO!V'aa!W'aa~O!V4tO!W(ri~P#?dOPYXXYXkYXyYXzYX|YX!SYX!VYX!eYX!fYX!hYX!lYX#WYX#ccX#fYX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#pYX#rYX#tYX#uYX#zYX(QYX(`YX(gYX(hYX~O!a%QX#n%QX~P&6lO#S-cO#T-cO~PBtO#P9eO#S-cO#T-cO~PBtO!}9fO#O9fO#P9eO#S-cO#T-cO~PBtO!]9iO!^9iO't!iO(T!jO(_!nO~O![9lO!]9iO!^9iO#P9eO#S-cO#T-cO't!iO~PBtO!X0zO%`9oO~O'uTO'xUO(T9tO~O!V1VO!W(sq~O!g9wO~O!g9wO~P%QO!g9yO~O!g9zO~O#W9|O!V#`y!W#`y~O!V#`y!W#`y~P#?dO^%^O#W:QO'j%^O~O^%^O!a#rO#W:QO'j%^O~O^%^O!a#rO!l:UO#W:QO'j%^O(`'dO~O!X'QO%`:XO~O#x#vy!V#vy!W#vy~P#?dOP$tiX$tik$tiz$ti!e$ti!f$ti!h$ti!l$ti#f$ti#g$ti#h$ti#i$ti#j$ti#k$ti#l$ti#m$ti#n$ti#p$ti#r$ti#t$ti#u$ti#x$ti(Q$ti(`$ti!V$ti!W$ti~P%AYOy)sO|)tO(h)xOP%WiX%Wig%Wik%Wiz%Wi!e%Wi!f%Wi!h%Wi!l%Wi#f%Wi#g%Wi#h%Wi#i%Wi#j%Wi#k%Wi#l%Wi#m%Wi#n%Wi#p%Wi#r%Wi#t%Wi#u%Wi#x%Wi(Q%Wi(`%Wi(g%Wi!V%Wi!W%Wi~Oy)sO|)tOP%YiX%Yig%Yik%Yiz%Yi!e%Yi!f%Yi!h%Yi!l%Yi#f%Yi#g%Yi#h%Yi#i%Yi#j%Yi#k%Yi#l%Yi#m%Yi#n%Yi#p%Yi#r%Yi#t%Yi#u%Yi#x%Yi(Q%Yi(`%Yi(g%Yi(h%Yi!V%Yi!W%Yi~O#x$hy!V$hy!W$hy~P#?dO#x#Zy!V#Zy!W#Zy~P#?dO!a#rO!V'Yq!g'Yq~O!V/VO!g(my~O!S'[q!V'[q~P#(yO!S:`O~P#(yO!V0_O!W(uy~O!V4tO!W(rq~O#S2fO#T2fO~PBtO#P:gO#S2fO#T2fO~PBtO!]:kO!^:kO't!iO(T!jO(_!nO~O!X0zO%`:nO~O!g:qO~O^%^O#W:vO'j%^O~O^%^O!a#rO#W:vO'j%^O~O!X'QO%`:{O~OP$tqX$tqk$tqz$tq!e$tq!f$tq!h$tq!l$tq#f$tq#g$tq#h$tq#i$tq#j$tq#k$tq#l$tq#m$tq#n$tq#p$tq#r$tq#t$tq#u$tq#x$tq(Q$tq(`$tq!V$tq!W$tq~P%AYOP$vqX$vqk$vqz$vq!e$vq!f$vq!h$vq!l$vq#f$vq#g$vq#h$vq#i$vq#j$vq#k$vq#l$vq#m$vq#n$vq#p$vq#r$vq#t$vq#u$vq#x$vq(Q$vq(`$vq!V$vq!W$vq~P%AYOd%[!Z!V%[!Z#W%[!Z#x%[!Z~P!-jO!V'aq!W'aq~P#?dO#S6`O#T6`O~PBtO!V#`!Z!W#`!Z~P#?dO^%^O#W;ZO'j%^O~O#c%[!ZP%[!ZX%[!Z^%[!Zk%[!Zz%[!Z!V%[!Z!e%[!Z!f%[!Z!h%[!Z!l%[!Z#f%[!Z#g%[!Z#h%[!Z#i%[!Z#j%[!Z#k%[!Z#l%[!Z#m%[!Z#n%[!Z#p%[!Z#r%[!Z#t%[!Z#u%[!Z'j%[!Z(Q%[!Z(`%[!Z!g%[!Z!S%[!Z'h%[!Z#W%[!Zo%[!Z!X%[!Z%`%[!Z!a%[!Z~P#(yOP%[!ZX%[!Zk%[!Zz%[!Z!e%[!Z!f%[!Z!h%[!Z!l%[!Z#f%[!Z#g%[!Z#h%[!Z#i%[!Z#j%[!Z#k%[!Z#l%[!Z#m%[!Z#n%[!Z#p%[!Z#r%[!Z#t%[!Z#u%[!Z#x%[!Z(Q%[!Z(`%[!Z!V%[!Z!W%[!Z~P%AYOo(UX~P1dO't!iO~P!'RO!ScX!VcX#WcX~P&6lOPYXXYXkYXyYXzYX|YX!VYX!VcX!eYX!fYX!hYX!lYX#WYX#WcX#ccX#fYX#gYX#hYX#iYX#jYX#kYX#lYX#mYX#nYX#pYX#rYX#tYX#uYX#zYX(QYX(`YX(gYX(hYX~O!acX!gYX!gcX(`cX~P'!sOP;nOQ;nOa=_Ob!fOikOk;nOlkOmkOskOu;nOw;nO|WO!QkO!RkO!XXO!c;qO!hZO!k;nO!l;nO!m;nO!o;rO!q;sO!t!eO$P!hO$TfO's)RO'uTO'xUO(QVO(_[O(l=]O~O!Vv!>v!BnPPP!BuHdPPPPPPPPPPP!FTP!GiPPHd!HyPHdPHdHdHdHdPHd!J`PP!MiP#!nP#!r#!|##Q##QP!MfP##U##UP#&ZP#&_HdHd#&e#)iAQPAQPAQAQP#*sAQAQ#,mAQ#.zAQ#0nAQAQ#1[#3W#3W#3[#3d#3W#3lP#3WPAQ#4hAQ#5pAQAQ6iPPP#6{PP#7e#7eP#7eP#7z#7ePP#8QP#7wP#7w#8d!1p#7w#9O#9U6f(}#9X(}P#9`#9`#9`P(}P(}P(}P(}PP(}P#9f#9iP#9i(}P#9mP#9pP(}P(}P(}P(}P(}P(}(}PP#9v#9|#:W#:^#:d#:j#:p#;O#;U#;[#;f#;l#b#?r#@Q#@W#@^#@d#@j#@t#@z#AQ#A[#An#AtPPPPPPPPPP#AzPPPPPPP#Bn#FYP#Gu#G|#HUPPPP#L`$ U$'t$'w$'z$)w$)z$)}$*UPP$*[$*`$+X$,X$,]$,qPP$,u$,{$-PP$-S$-W$-Z$.P$.g$.l$.o$.r$.x$.{$/P$/TR!yRmpOXr!X#a%]&d&f&g&i,^,c1g1jU!pQ'Q-OQ%ctQ%kwQ%rzQ&[!TS&x!c,vQ'W!f[']!m!r!s!t!u!vS*[$y*aQ+U%lQ+c%tQ+}&UQ,|'PQ-W'XW-`'^'_'`'aQ/p*cQ1U,OU2b-b-d-eS4}0z5QS6[2e2gU7z5U5V5WQ8q6_S9i7{7|Q:k9lR TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp < ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXStartTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody MethodDeclaration AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem\",\n maxTerm: 362,\n context: trackNewline,\n nodeProps: [\n [\"group\", -26,6,14,16,62,198,202,205,206,208,211,214,225,227,233,235,237,239,242,248,254,256,258,260,262,264,265,\"Statement\",-32,10,11,25,28,29,35,45,48,49,51,56,64,72,76,78,80,81,102,103,112,113,130,133,135,136,137,138,140,141,161,162,164,\"Expression\",-23,24,26,30,34,36,38,165,167,169,170,172,173,174,176,177,178,180,181,182,192,194,196,197,\"Type\",-3,84,95,101,\"ClassItem\"],\n [\"openedBy\", 31,\"InterpolationStart\",50,\"[\",54,\"{\",69,\"(\",142,\"JSXStartTag\",154,\"JSXStartTag JSXStartCloseTag\"],\n [\"closedBy\", 33,\"InterpolationEnd\",44,\"]\",55,\"}\",70,\")\",143,\"JSXSelfCloseEndTag JSXEndTag\",159,\"JSXEndTag\"]\n ],\n propSources: [jsHighlight],\n skippedNodes: [0,3,4,268],\n repeatNodeCount: 32,\n tokenData: \"$>y(CSR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tu>PuvBavwDxwxGgxyMvyz! Qz{!![{|!%O|}!&]}!O!%O!O!P!'g!P!Q!1w!Q!R#0t!R![#3T![!]#@T!]!^#Aa!^!_#Bk!_!`#GS!`!a#In!a!b#N{!b!c$$z!c!}>P!}#O$&U#O#P$'`#P#Q$,w#Q#R$.R#R#S>P#S#T$/`#T#o$0j#o#p$4z#p#q$5p#q#r$7Q#r#s$8^#s$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$I|>P$I|$I}$P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(n%d_$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$c&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$c&j'y!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU'y!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$c&j'vpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU'vpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX'vp'y!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z(CS+rq$c&j'vp'y!b'l(;dOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z(CS.ST'w#S$c&j'm(;dO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c(CS.n_$c&j'vp'y!b'm(;dOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`/x`$c&j!l$Ip'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S1V`#p$Id$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#S2d_#p$Id$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$2b3l_'u$(n$c&j'y!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k*r4r_$c&j'y!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k)`5vX$c&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q)`6jT$^#t$c&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#t6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y#t7bO$^#t#t7eP;=`<%l6y)`7kP;=`<%l5q*r7w]$^#t$c&j'y!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}%W8uZ'y!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p%W9oU$^#t'y!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}%W:UP;=`<%l8p*r:[P;=`<%l4k#%|:hg$c&j'vp'y!bOY%ZYZ&cZr%Zrs&}st%Ztu`k$c&j'vp'y!b(T!LY's&;d$V#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P+d@`k$c&j'vp'y!b$V#tOY%ZYZ&cZr%Zrs&}st%Ztu@Tuw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![@T![!^%Z!^!_*g!_!c%Z!c!}@T!}#O%Z#O#P&c#P#R%Z#R#S@T#S#T%Z#T#o@T#o#p*g#p$g%Z$g;'S@T;'S;=`BT<%lO@T+dBWP;=`<%l@T(CSB^P;=`<%l>P%#SBl`$c&j'vp'y!b#h$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Cn!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#SCy_$c&j#z$Id'vp'y!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%DfETa(h%Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z$/l#>fi$c&j'vp'y!bl$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#>Z![!^%Z!^!_*g!_!c%Z!c!i#>Z!i#O%Z#O#P&c#P#R%Z#R#S#>Z#S#T%Z#T#Z#>Z#Z#b%Z#b#c#5T#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%Gh#@b_!a$b$c&j#x%Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$f%Z$f$g+g$g#BY>P#BY#BZ$9h#BZ$IS>P$IS$I_$9h$I_$JT>P$JT$JU$9h$JU$KV>P$KV$KW$9h$KW&FU>P&FU&FV$9h&FV;'S>P;'S;=`BZ<%l?HT>P?HT?HU$9h?HUO>P(CS$=Uk$c&j'vp'y!b'm(;d(T!LY's&;d$V#tOY%ZYZ&cZr%Zrs&}st%Ztu>Puw%Zwx(rx}%Z}!O@T!O!Q%Z!Q![>P![!^%Z!^!_*g!_!c%Z!c!}>P!}#O%Z#O#P&c#P#R%Z#R#S>P#S#T%Z#T#o>P#o#p*g#p$g%Z$g;'S>P;'S;=`BZ<%lO>P\",\n tokenizers: [noSemicolon, incdecToken, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, insertSemicolon, new LocalTokenGroup(\"$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOq~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!O~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(S~~\", 141, 325), new LocalTokenGroup(\"j~RQYZXz{^~^O'p~~aP!P!Qd~iO'q~~\", 25, 307)],\n topRules: {\"Script\":[0,5],\"SingleExpression\":[1,266],\"SingleClassItem\":[2,267]},\n dialects: {jsx: 13213, ts: 13215},\n dynamicPrecedences: {\"76\":1,\"78\":1,\"162\":1,\"190\":1},\n specialized: [{term: 311, get: value => spec_identifier[value] || -1},{term: 327, get: value => spec_word[value] || -1},{term: 67, get: value => spec_LessThan[value] || -1}],\n tokenPrec: 13238\n});\n\nexport { parser };\n","import { parser } from '@lezer/javascript';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, defineLanguageFacet, sublanguageProp, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\n/**\nA collection of JavaScript-related\n[snippets](https://codemirror.net/6/docs/ref/#autocomplete.snippet).\n*/\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"function ${name}(${params}) {\\n\\t${}\\n}\", {\n label: \"function\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${name} of ${collection}) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"of loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"do {\\n\\t${}\\n} while (${})\", {\n label: \"do\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while (${}) {\\n\\t${}\\n}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try {\\n\\t${}\\n} catch (${error}) {\\n\\t${}\\n}\", {\n label: \"try\",\n detail: \"/ catch block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n} else {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name} {\\n\\tconstructor(${params}) {\\n\\t\\t${}\\n\\t}\\n}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import {${names}} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"named\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${name} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"default\",\n type: \"keyword\"\n })\n];\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Block\",\n \"FunctionExpression\", \"FunctionDeclaration\", \"ArrowFunction\", \"MethodDeclaration\",\n \"ForStatement\"\n]);\nfunction defID(type) {\n return (node, def) => {\n let id = node.node.getChild(\"VariableDefinition\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst functionContext = [\"FunctionDeclaration\"];\nconst gatherCompletions = {\n FunctionDeclaration: /*@__PURE__*/defID(\"function\"),\n ClassDeclaration: /*@__PURE__*/defID(\"class\"),\n ClassExpression: () => true,\n EnumDeclaration: /*@__PURE__*/defID(\"constant\"),\n TypeAliasDeclaration: /*@__PURE__*/defID(\"type\"),\n NamespaceDeclaration: /*@__PURE__*/defID(\"namespace\"),\n VariableDefinition(node, def) { if (!node.matchContext(functionContext))\n def(node, \"variable\"); },\n TypeDefinition(node, def) { def(node, \"type\"); },\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (top) {\n top = false;\n }\n else if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def) || ScopeNodes.has(node.name))\n return false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w$\\xa1-\\uffff][\\w$\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\n \"TemplateString\", \"String\", \"RegExp\",\n \"LineComment\", \"BlockComment\",\n \"VariableDefinition\", \"TypeDefinition\", \"Label\",\n \"PropertyDefinition\", \"PropertyName\",\n \"PrivatePropertyDefinition\", \"PrivatePropertyName\"\n];\n/**\nCompletion source that looks up locally defined names in\nJavaScript code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nfunction pathFor(read, member, name) {\n var _a;\n let path = [];\n for (;;) {\n let obj = member.firstChild, prop;\n if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"VariableName\") {\n path.push(read(obj));\n return { path: path.reverse(), name };\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"MemberExpression\" && ((_a = (prop = obj.lastChild)) === null || _a === void 0 ? void 0 : _a.name) == \"PropertyName\") {\n path.push(read(prop));\n member = obj;\n }\n else {\n return null;\n }\n }\n}\n/**\nHelper function for defining JavaScript completion sources. It\nreturns the completable name and object path for a completion\ncontext, or null if no name/property completion should happen at\nthat position. For example, when completing after `a.b.c` it will\nreturn `{path: [\"a\", \"b\"], name: \"c\"}`. When completing after `x`\nit will return `{path: [], name: \"x\"}`. When not in a property or\nname, it will return null if `context.explicit` is false, and\n`{path: [], name: \"\"}` otherwise.\n*/\nfunction completionPath(context) {\n let read = (node) => context.state.doc.sliceString(node.from, node.to);\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (inner.name == \"PropertyName\") {\n return pathFor(read, inner.parent, read(inner));\n }\n else if (dontComplete.indexOf(inner.name) > -1) {\n return null;\n }\n else if (inner.name == \"VariableName\" || inner.to - inner.from < 20 && Identifier.test(read(inner))) {\n return { path: [], name: read(inner) };\n }\n else if ((inner.name == \".\" || inner.name == \"?.\") && inner.parent.name == \"MemberExpression\") {\n return pathFor(read, inner.parent, \"\");\n }\n else if (inner.name == \"MemberExpression\") {\n return pathFor(read, inner, \"\");\n }\n else {\n return context.explicit ? { path: [], name: \"\" } : null;\n }\n}\nfunction enumeratePropertyCompletions(obj, top) {\n let options = [], seen = new Set;\n for (let depth = 0;; depth++) {\n for (let name of (Object.getOwnPropertyNames || Object.keys)(obj)) {\n if (seen.has(name))\n continue;\n seen.add(name);\n let value;\n try {\n value = obj[name];\n }\n catch (_) {\n continue;\n }\n options.push({\n label: name,\n type: typeof value == \"function\" ? (/^[A-Z]/.test(name) ? \"class\" : top ? \"function\" : \"method\")\n : top ? \"variable\" : \"property\",\n boost: -depth\n });\n }\n let next = Object.getPrototypeOf(obj);\n if (!next)\n return options;\n obj = next;\n }\n}\n/**\nDefines a [completion source](https://codemirror.net/6/docs/ref/#autocomplete.CompletionSource) that\ncompletes from the given scope object (for example `globalThis`).\nWill enter properties of the object when completing properties on\na directly-named path.\n*/\nfunction scopeCompletionSource(scope) {\n let cache = new Map;\n return (context) => {\n let path = completionPath(context);\n if (!path)\n return null;\n let target = scope;\n for (let step of path.path) {\n target = target[step];\n if (!target)\n return null;\n }\n let options = cache.get(target);\n if (!options)\n cache.set(target, options = enumeratePropertyCompletions(target, !path.path.length));\n return {\n from: context.pos - path.name.length,\n options,\n validFor: Identifier\n };\n };\n}\n\n/**\nA language provider based on the [Lezer JavaScript\nparser](https://github.com/lezer-parser/javascript), extended with\nhighlighting and indentation information.\n*/\nconst javascriptLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"javascript\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n LabeledStatement: flatIndent,\n SwitchBody: context => {\n let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n },\n Block: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n ArrowFunction: cx => cx.baseIndent + cx.unit,\n \"TemplateString BlockComment\": () => null,\n \"Statement Property\": /*@__PURE__*/continuedIndent({ except: /^{/ }),\n JSXElement(context) {\n let closed = /^\\s*<\\//.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n JSXEscape(context) {\n let closed = /\\s*\\}/.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n \"JSXOpenTag JSXSelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression\": foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"] },\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\}|<\\/)$/,\n wordChars: \"$\"\n }\n});\nconst jsxSublanguage = {\n test: node => /^JSX/.test(node.name),\n facet: /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"{/*\", close: \"*/}\" } } })\n};\n/**\nA language provider for TypeScript.\n*/\nconst typescriptLanguage = /*@__PURE__*/javascriptLanguage.configure({ dialect: \"ts\" }, \"typescript\");\n/**\nLanguage provider for JSX.\n*/\nconst jsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n});\n/**\nLanguage provider for JSX + TypeScript.\n*/\nconst tsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx ts\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n}, \"typescript\");\nconst keywords = /*@__PURE__*/\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\".split(\" \").map(kw => ({ label: kw, type: \"keyword\" }));\n/**\nJavaScript support. Includes [snippet](https://codemirror.net/6/docs/ref/#lang-javascript.snippets)\ncompletion.\n*/\nfunction javascript(config = {}) {\n let lang = config.jsx ? (config.typescript ? tsxLanguage : jsxLanguage)\n : config.typescript ? typescriptLanguage : javascriptLanguage;\n return new LanguageSupport(lang, [\n javascriptLanguage.data.of({\n autocomplete: ifNotIn(dontComplete, completeFromList(snippets.concat(keywords)))\n }),\n javascriptLanguage.data.of({\n autocomplete: localCompletionSource\n }),\n config.jsx ? autoCloseTags : [],\n ]);\n}\nfunction findOpenTag(node) {\n for (;;) {\n if (node.name == \"JSXOpenTag\" || node.name == \"JSXSelfClosingTag\" || node.name == \"JSXFragmentTag\")\n return node;\n if (!node.parent)\n return null;\n node = node.parent;\n }\n}\nfunction elementName(doc, tree, max = doc.length) {\n for (let ch = tree === null || tree === void 0 ? void 0 : tree.firstChild; ch; ch = ch.nextSibling) {\n if (ch.name == \"JSXIdentifier\" || ch.name == \"JSXBuiltin\" || ch.name == \"JSXNamespacedName\" ||\n ch.name == \"JSXMemberExpression\")\n return doc.sliceString(ch.from, Math.min(ch.to, max));\n }\n return \"\";\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\n/**\nExtension that will automatically insert JSX close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly ||\n from != to || (text != \">\" && text != \"/\") ||\n !javascriptLanguage.isActiveAt(view.state, from, -1))\n return false;\n let { state } = view;\n let changes = state.changeByRange(range => {\n var _a, _b;\n let { head } = range, around = syntaxTree(state).resolveInner(head, -1), name;\n if (around.name == \"JSXStartTag\")\n around = around.parent;\n if (text == \">\" && around.name == \"JSXFragmentTag\") {\n return { range: EditorSelection.cursor(head + 1), changes: { from: head, insert: `>` } };\n }\n else if (text == \"/\" && around.name == \"JSXFragmentTag\") {\n let empty = around.parent, base = empty === null || empty === void 0 ? void 0 : empty.parent;\n if (empty.from == head - 1 && ((_a = base.lastChild) === null || _a === void 0 ? void 0 : _a.name) != \"JSXEndTag\" &&\n (name = elementName(state.doc, base === null || base === void 0 ? void 0 : base.firstChild, head))) {\n let insert = `/${name}>`;\n return { range: EditorSelection.cursor(head + insert.length), changes: { from: head, insert } };\n }\n }\n else if (text == \">\") {\n let openTag = findOpenTag(around);\n if (openTag && ((_b = openTag.lastChild) === null || _b === void 0 ? void 0 : _b.name) != \"JSXEndTag\" &&\n state.sliceDoc(head, head + 2) != \"` } };\n }\n return { range };\n });\n if (changes.changes.empty)\n return false;\n view.dispatch(changes, { userEvent: \"input.type\", scrollIntoView: true });\n return true;\n});\n\n/**\nConnects an [ESLint](https://eslint.org/) linter to CodeMirror's\n[lint](https://codemirror.net/6/docs/ref/#lint) integration. `eslint` should be an instance of the\n[`Linter`](https://eslint.org/docs/developer-guide/nodejs-api#linter)\nclass, and `config` an optional ESLint configuration. The return\nvalue of this function can be passed to [`linter`](https://codemirror.net/6/docs/ref/#lint.linter)\nto create a JavaScript linting extension.\n\nNote that ESLint targets node, and is tricky to run in the\nbrowser. The\n[eslint-linter-browserify](https://github.com/UziTech/eslint-linter-browserify)\npackage may help with that (see\n[example](https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js)).\n*/\nfunction esLint(eslint, config) {\n if (!config) {\n config = {\n parserOptions: { ecmaVersion: 2019, sourceType: \"module\" },\n env: { browser: true, node: true, es6: true, es2015: true, es2017: true, es2020: true },\n rules: {}\n };\n eslint.getRules().forEach((desc, name) => {\n if (desc.meta.docs.recommended)\n config.rules[name] = 2;\n });\n }\n return (view) => {\n let { state } = view, found = [];\n for (let { from, to } of javascriptLanguage.findRegions(state)) {\n let fromLine = state.doc.lineAt(from), offset = { line: fromLine.number - 1, col: from - fromLine.from, pos: from };\n for (let d of eslint.verify(state.sliceDoc(from, to), config))\n found.push(translateDiagnostic(d, state.doc, offset));\n }\n return found;\n };\n}\nfunction mapPos(line, col, doc, offset) {\n return doc.line(line + offset.line).from + col + (line == 1 ? offset.col - 1 : -1);\n}\nfunction translateDiagnostic(input, doc, offset) {\n let start = mapPos(input.line, input.column, doc, offset);\n let result = {\n from: start,\n to: input.endLine != null && input.endColumn != 1 ? mapPos(input.endLine, input.endColumn, doc, offset) : start,\n message: input.message,\n source: input.ruleId ? \"eslint:\" + input.ruleId : \"eslint\",\n severity: input.severity == 1 ? \"warning\" : \"error\",\n };\n if (input.fix) {\n let { range, text } = input.fix, from = range[0] + offset.pos - start, to = range[1] + offset.pos - start;\n result.actions = [{\n name: \"fix\",\n apply(view, start) {\n view.dispatch({ changes: { from: start + from, to: start + to, insert: text }, scrollIntoView: true });\n }\n }];\n }\n return result;\n}\n\nexport { autoCloseTags, completionPath, esLint, javascript, javascriptLanguage, jsxLanguage, localCompletionSource, scopeCompletionSource, snippets, tsxLanguage, typescriptLanguage };\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.1c646c8a.css b/gradio/templates/cdn/assets/index.1c646c8a.css new file mode 100644 index 0000000000000000000000000000000000000000..beda351dfc765484ad744113e3d1734eb71cacd1 --- /dev/null +++ b/gradio/templates/cdn/assets/index.1c646c8a.css @@ -0,0 +1 @@ +div.svelte-15lo0d8{display:flex;flex-wrap:wrap;gap:var(--layout-gap);width:var(--size-full)}.hide.svelte-15lo0d8{display:none}.compact.svelte-15lo0d8>*,.compact.svelte-15lo0d8 .box{border-radius:0}.compact.svelte-15lo0d8,.panel.svelte-15lo0d8{border-radius:var(--container-radius);background:var(--background-fill-secondary);padding:var(--size-2)}.unequal-height.svelte-15lo0d8{align-items:flex-start}.stretch.svelte-15lo0d8{align-items:stretch}div.svelte-15lo0d8>*,div.svelte-15lo0d8>.form>*{flex:1 1 0%;flex-wrap:wrap;min-width:min(160px,100%)} diff --git a/gradio/templates/cdn/assets/index.24229075.css b/gradio/templates/cdn/assets/index.24229075.css new file mode 100644 index 0000000000000000000000000000000000000000..690ed736f2c29c32ba8499343659e9fde81f2098 --- /dev/null +++ b/gradio/templates/cdn/assets/index.24229075.css @@ -0,0 +1 @@ +div.svelte-1yrv54 .math.inline{fill:var(--body-text-color);display:inline-block;vertical-align:middle;padding:var(--size-1-5) -var(--size-1);color:var(--body-text-color)}div.svelte-1yrv54 .math.inline svg{display:inline;margin-bottom:.22em}div.svelte-1yrv54{max-width:100%}.min.svelte-1yrv54{min-height:var(--size-24)}.hide.svelte-1yrv54{display:none}div.svelte-1ed2p3z{transition:.15s}.pending.svelte-1ed2p3z{opacity:.2} diff --git a/gradio/templates/cdn/assets/index.26b0dde7.js b/gradio/templates/cdn/assets/index.26b0dde7.js new file mode 100644 index 0000000000000000000000000000000000000000..9abfdc46523fc34702af7cfb4edabb19ff432830 --- /dev/null +++ b/gradio/templates/cdn/assets/index.26b0dde7.js @@ -0,0 +1,2 @@ +import{S as v,i as k,s as S,F as V,c as j,B as _,C,f as W,m as q,o as r,t as d,p as X,l as w,q as Y,a0 as Z,T,r as z,V as G,W as B,X as A,Y as D,Z as E,x as H}from"./index.7a68216a.js";import{a as J}from"./TabItem.svelte_svelte_type_style_lang.9666256d.js";import{C as K}from"./Column.69198682.js";/* empty css */function L(a){let e;const n=a[8].default,t=B(n,a,a[9],null);return{c(){t&&t.c()},m(s,l){t&&t.m(s,l),e=!0},p(s,l){t&&t.p&&(!e||l&512)&&A(t,n,s,s[9],e?E(n,s[9],l,null):D(s[9]),null)},i(s){e||(r(t,s),e=!0)},o(s){d(t,s),e=!1},d(s){t&&t.d(s)}}}function N(a){let e,n,t,s;return n=new K({props:{$$slots:{default:[L]},$$scope:{ctx:a}}}),{c(){e=V("div"),j(n.$$.fragment),_(e,"id",a[0]),_(e,"class",t="tabitem "+a[1].join(" ")+" svelte-19hvt5v"),C(e,"display",a[3]===a[2]?"block":"none",!1)},m(l,o){W(l,e,o),q(n,e,null),s=!0},p(l,[o]){const f={};o&512&&(f.$$scope={dirty:o,ctx:l}),n.$set(f),(!s||o&1)&&_(e,"id",l[0]),(!s||o&2&&t!==(t="tabitem "+l[1].join(" ")+" svelte-19hvt5v"))&&_(e,"class",t),o&12&&C(e,"display",l[3]===l[2]?"block":"none",!1)},i(l){s||(r(n.$$.fragment,l),s=!0)},o(l){d(n.$$.fragment,l),s=!1},d(l){l&&X(e),w(n)}}}function O(a,e,n){let t,s,{$$slots:l={},$$scope:o}=e,{elem_id:f=""}=e,{elem_classes:c=[]}=e,{name:u}=e,{id:i={}}=e;const F=Y(),{register_tab:I,unregister_tab:M,selected_tab:b,selected_tab_index:g}=Z(J);T(a,b,m=>n(3,s=m)),T(a,g,m=>n(7,t=m));let h=I({name:u,id:i});return z(()=>()=>M({name:u,id:i})),a.$$set=m=>{"elem_id"in m&&n(0,f=m.elem_id),"elem_classes"in m&&n(1,c=m.elem_classes),"name"in m&&n(6,u=m.name),"id"in m&&n(2,i=m.id),"$$scope"in m&&n(9,o=m.$$scope)},a.$$.update=()=>{a.$$.dirty&192&&t===h&&G().then(()=>F("select",{value:u,index:h}))},[f,c,i,s,b,g,u,t,l,o]}class P extends v{constructor(e){super(),k(this,e,O,N,S,{elem_id:0,elem_classes:1,name:6,id:2})}}function Q(a){let e;const n=a[4].default,t=B(n,a,a[6],null);return{c(){t&&t.c()},m(s,l){t&&t.m(s,l),e=!0},p(s,l){t&&t.p&&(!e||l&64)&&A(t,n,s,s[6],e?E(n,s[6],l,null):D(s[6]),null)},i(s){e||(r(t,s),e=!0)},o(s){d(t,s),e=!1},d(s){t&&t.d(s)}}}function R(a){let e,n;return e=new P({props:{elem_id:a[0],elem_classes:a[1],name:a[2],id:a[3],$$slots:{default:[Q]},$$scope:{ctx:a}}}),e.$on("select",a[5]),{c(){j(e.$$.fragment)},m(t,s){q(e,t,s),n=!0},p(t,[s]){const l={};s&1&&(l.elem_id=t[0]),s&2&&(l.elem_classes=t[1]),s&4&&(l.name=t[2]),s&8&&(l.id=t[3]),s&64&&(l.$$scope={dirty:s,ctx:t}),e.$set(l)},i(t){n||(r(e.$$.fragment,t),n=!0)},o(t){d(e.$$.fragment,t),n=!1},d(t){w(e,t)}}}function U(a,e,n){let{$$slots:t={},$$scope:s}=e,{elem_id:l=""}=e,{elem_classes:o=[]}=e,{label:f}=e,{id:c}=e;function u(i){H.call(this,a,i)}return a.$$set=i=>{"elem_id"in i&&n(0,l=i.elem_id),"elem_classes"in i&&n(1,o=i.elem_classes),"label"in i&&n(2,f=i.label),"id"in i&&n(3,c=i.id),"$$scope"in i&&n(6,s=i.$$scope)},[l,o,f,c,t,u,s]}class y extends v{constructor(e){super(),k(this,e,U,R,S,{elem_id:0,elem_classes:1,label:2,id:3})}}var te=y;const se=["static"];export{te as Component,se as modes}; +//# sourceMappingURL=index.26b0dde7.js.map diff --git a/gradio/templates/cdn/assets/index.26b0dde7.js.map b/gradio/templates/cdn/assets/index.26b0dde7.js.map new file mode 100644 index 0000000000000000000000000000000000000000..5958863ee961ec48dbbe820519380a3897b5252f --- /dev/null +++ b/gradio/templates/cdn/assets/index.26b0dde7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.26b0dde7.js","sources":["../../../../ui/packages/tabs/src/TabItem.svelte","../../../../ui/packages/app/src/components/TabItem/Tabs.svelte","../../../../ui/packages/app/src/components/TabItem/index.ts"],"sourcesContent":["\n\n\n\t\n\t\t\n\t\n
\n\n\n","\n\n\n\t\n\n","export { default as Component } from \"./Tabs.svelte\";\nexport const modes = [\"static\"];\n"],"names":[],"mappings":"wtBA2BK,+BACY,KAAa,KAAK,GAAG,mCACtB,OAAkB,KAAK,QAAU,mBAHjD,gHACK,kCACY,KAAa,KAAK,GAAG,0DACtB,OAAkB,KAAK,QAAU,uJAvBrC,UAAkB,OAClB,sBACA,WACA,gBAEL,GAAW,KAET,eAAc,iBAAgB,eAAc,sBACnD,EAAW,CAAI,2CAEZ,GAAY,GAAe,OAAM,OAErC,iBACc,GAAiB,OAAM,gNAGlC,IAAwB,GAC1B,IAAO,SAAW,EAAS,UAAY,MAAO,EAAM,MAAO,4bCdrB,0MAAA,oMAN5B,UAAkB,OAClB,sBACA,YACA,uVCLC,IAAQ,CAAC,QAAQ"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.30201970.js b/gradio/templates/cdn/assets/index.30201970.js new file mode 100644 index 0000000000000000000000000000000000000000..728c2c88ca794322a7f7b116f6df1756b4d8e39f --- /dev/null +++ b/gradio/templates/cdn/assets/index.30201970.js @@ -0,0 +1,2 @@ +import{F as p}from"./Form.c11fdf11.js";import"./index.7a68216a.js";const t=["static"];export{p as Component,t as modes}; +//# sourceMappingURL=index.30201970.js.map diff --git a/gradio/templates/cdn/assets/index.30201970.js.map b/gradio/templates/cdn/assets/index.30201970.js.map new file mode 100644 index 0000000000000000000000000000000000000000..0a5b7dacf05c2d41c95d7f8593d63bedeca5c263 --- /dev/null +++ b/gradio/templates/cdn/assets/index.30201970.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.30201970.js","sources":["../../../../ui/packages/app/src/components/Form/index.ts"],"sourcesContent":["export { default as Component } from \"./Form.svelte\";\nexport const modes = [\"static\"];\n"],"names":[],"mappings":"wEACa,GAAQ,CAAC,QAAQ"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.30c92780.js b/gradio/templates/cdn/assets/index.30c92780.js new file mode 100644 index 0000000000000000000000000000000000000000..137582db8f19957a76767d50f65c13ab61abf8e4 --- /dev/null +++ b/gradio/templates/cdn/assets/index.30c92780.js @@ -0,0 +1,2 @@ +import{S as Z,i as q,s as D,A as V,B as m,f as k,D as v,E,p as w,e as z,F as y,G as L,H as N,C as A,O as M,I as Q,J as I,N as U,q as K,c as B,m as C,o as h,t as g,l as j,v as W,a7 as X,g as $,h as x,k as F,n as G,x as ee}from"./index.7a68216a.js";/* empty css */import{a as le}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{B as te}from"./BlockLabel.fd555cfa.js";import{E as ne}from"./Empty.092ff864.js";function se(s){let e,t;return{c(){e=V("svg"),t=V("path"),m(t,"fill","currentColor"),m(t,"d","M4 2H2v26a2 2 0 0 0 2 2h26v-2H4v-3h22v-8H4v-4h14V5H4Zm20 17v4H4v-4ZM16 7v4H4V7Z"),m(e,"xmlns","http://www.w3.org/2000/svg"),m(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),m(e,"aria-hidden","true"),m(e,"role","img"),m(e,"class","iconify iconify--carbon"),m(e,"width","100%"),m(e,"height","100%"),m(e,"preserveAspectRatio","xMidYMid meet"),m(e,"viewBox","0 0 32 32")},m(l,n){k(l,e,n),v(e,t)},p:E,i:E,o:E,d(l){l&&w(e)}}}class P extends Z{constructor(e){super(),q(this,e,null,se,D,{})}}function J(s,e,t){const l=s.slice();return l[6]=e[t],l[8]=t,l}function O(s){let e,t=s[0].confidences,l=[];for(let n=0;n{n("select",{index:_,value:u.label})};return s.$$set=_=>{"value"in _&&t(0,l=_.value),"show_label"in _&&t(1,a=_.show_label),"color"in _&&t(2,i=_.color),"selectable"in _&&t(3,c=_.selectable)},[l,a,i,c,n,r]}class oe extends Z{constructor(e){super(),q(this,e,ie,ae,D,{value:0,show_label:1,color:2,selectable:3})}}function Y(s){let e,t;return e=new te({props:{Icon:P,label:s[5],disable:typeof s[6].container=="boolean"&&!s[6].container}}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,n){const a={};n&32&&(a.label=l[5]),n&64&&(a.disable=typeof l[6].container=="boolean"&&!l[6].container),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function ce(s){let e,t;return e=new ne({props:{$$slots:{default:[re]},$$scope:{ctx:s}}}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,n){const a={};n&4096&&(a.$$scope={dirty:n,ctx:l}),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function fe(s){let e,t;return e=new oe({props:{selectable:s[9],value:s[4],show_label:s[8],color:s[3]}}),e.$on("select",s[10]),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,n){const a={};n&512&&(a.selectable=l[9]),n&16&&(a.value=l[4]),n&256&&(a.show_label=l[8]),n&8&&(a.color=l[3]),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function re(s){let e,t;return e=new P({}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function ue(s){let e,t,l,n,a,i,c;const r=[s[7]];let _={};for(let f=0;f{u=null}),G());let S=n;n=b(f),n===S?d[n].p(f,o):(F(),g(d[S],1,1,()=>{d[S]=null}),G(),a=d[n],a?a.p(f,o):(a=d[n]=p[n](f),a.c()),h(a,1),a.m(i.parentNode,i))},i(f){c||(h(e.$$.fragment,f),h(u),h(a),c=!0)},o(f){g(e.$$.fragment,f),g(u),g(a),c=!1},d(f){j(e,f),f&&w(t),u&&u.d(f),f&&w(l),d[n].d(f),f&&w(i)}}}function _e(s){let e,t;return e=new le({props:{test_id:"label",visible:s[2],elem_id:s[0],elem_classes:s[1],disable:typeof s[6].container=="boolean"&&!s[6].container,$$slots:{default:[ue]},$$scope:{ctx:s}}}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,[n]){const a={};n&4&&(a.visible=l[2]),n&1&&(a.elem_id=l[0]),n&2&&(a.elem_classes=l[1]),n&64&&(a.disable=typeof l[6].container=="boolean"&&!l[6].container),n&5112&&(a.$$scope={dirty:n,ctx:l}),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function be(s,e,t){let{elem_id:l=""}=e,{elem_classes:n=[]}=e,{visible:a=!0}=e,{color:i=void 0}=e,{value:c}=e,{label:r="Label"}=e,{style:_={}}=e,{loading_status:u}=e,{show_label:p}=e,{selectable:d=!1}=e;const b=K();function f(o){ee.call(this,s,o)}return s.$$set=o=>{"elem_id"in o&&t(0,l=o.elem_id),"elem_classes"in o&&t(1,n=o.elem_classes),"visible"in o&&t(2,a=o.visible),"color"in o&&t(3,i=o.color),"value"in o&&t(4,c=o.value),"label"in o&&t(5,r=o.label),"style"in o&&t(6,_=o.style),"loading_status"in o&&t(7,u=o.loading_status),"show_label"in o&&t(8,p=o.show_label),"selectable"in o&&t(9,d=o.selectable)},s.$$.update=()=>{s.$$.dirty&16&&b("change")},[l,n,a,i,c,r,_,u,p,d,f]}class me extends Z{constructor(e){super(),q(this,e,be,_e,D,{elem_id:0,elem_classes:1,visible:2,color:3,value:4,label:5,style:6,loading_status:7,show_label:8,selectable:9})}}var we=me;const pe=["static"],ye=s=>({type:{payload:"{ label: string; confidences?: Array<{ label: string; confidence: number }>"},description:{payload:"output label and optional set of confidences per label"}});export{we as Component,ye as document,pe as modes}; +//# sourceMappingURL=index.30c92780.js.map diff --git a/gradio/templates/cdn/assets/index.30c92780.js.map b/gradio/templates/cdn/assets/index.30c92780.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d54e9e6c2c61ea1d7c7daffcf24e1ba480af387b --- /dev/null +++ b/gradio/templates/cdn/assets/index.30c92780.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.30c92780.js","sources":["../../../../ui/packages/icons/src/LineChart.svelte","../../../../ui/packages/label/src/Label.svelte","../../../../ui/packages/app/src/components/Label/Label.svelte","../../../../ui/packages/app/src/components/Label/index.ts"],"sourcesContent":["\n\t\n\n","\n\n
\n\t\n\t\t{value.label}\n\t
\n\t{#if typeof value === \"object\" && value.confidences}\n\t\t{#each value.confidences as confidence_set, i}\n\t\t\t {\n\t\t\t\t\tdispatch(\"select\", { index: i, value: confidence_set.label });\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{confidence_set.label}
\n\t\t\t\t\t\t{#if value.confidences}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{Math.round(confidence_set.confidence * 100)}%\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t{/each}\n\t{/if}\n
\n\n\n","\n\n\n\t\n\t{#if show_label}\n\t\t\n\t{/if}\n\t{#if typeof value === \"object\" && value !== undefined && value !== null}\n\t\t\n\n\n","\n\n\n\t\n\n\t\n\n","export { default as Component } from \"./Dropdown.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"string\"\n\t},\n\tdescription: {\n\t\tpayload: \"selected choice\"\n\t},\n\texample_data: config.choices.length ? config.choices[0] : \"\"\n});\n"],"names":[],"mappings":"4rBA+CS,0BAAL,mJAPa,wEAKW,8CAP3B,mHASQ,uBAAL,+HAAA,sCAPa,4FAKW,uEAJR,SAAU,IAAK,EAAG,8CAAlB,SAAU,IAAK,EAAG,gGAyBjC,sJAPc,OAAM,QAAQ,MAAS,MAAS,QAAS,SACtD,mFALU,0BACA,sBALI,MAAO,SAAS,qBAClB,OAAiB,yBACZ,OAAiB,8BACZ,OAAiB,eAN1C,SAUC,qDACe,OAAM,QAAQ,MAAS,MAAS,QAAS,SACtD,oBAMD,8BAXW,wCACA,gDALI,MAAO,SAAS,2BAClB,OAAiB,+BACZ,OAAiB,oCACZ,OAAiB,oDAjBxC,OAAgB,yFADrB,+DACK,OAAgB,iOAlCT,QAA4C,WAC5C,eACA,cAAuB,OACvB,mBACA,WAAoB,MAE3B,EACA,EACA,EACA,EACA,EAAoB,EAAuB,OAoBzC,GAAW,+CAGgB,qBAMF,GAAM,EAAS,SAAU,CAAC,0OA3BpD,IAAe,SAClB,EAAoB,EAAW,wBAAwB,GAAG,OAC1D,EACC,OAAO,YAAc,EAAW,wBAAwB,MAAM,OAC/D,EACC,EAAW,eAAe,wBAAwB,QAAU,CAAC,GAE3D,EAAuB,OAC1B,KAAS,WACT,EAAa,CAAoB,MACjC,EAAS,IAAI,QAEb,KAAY,WACZ,EAAa,EAAoB,CAAY,MAC7C,EAAM,IAAI,+YC7Bb,SAOC,iYCPD,SAMC,kMCiIiC,wCAAA,wEAkBD,yDAA7B,iCAA6B,uDAbtB,0BAAL,gNAAK,uBAAL,gIAAA,+DAAA,8IAEO,yPAIS,oBAFD,iDAHhB,SACC,qBACA,4FADO,6CAIS,0CAFD,iUALb,MAAM,QAAQ,mQAiDR,wXAhBI,MAAO,QAAU,4JAtCnC,4BAGC,OACC,6BAiBC,OACC,YAKa,aAUb,gKAFW,mBAMA,mVAdE,WAAA,uBAWC,MAAO,QAAU,6dAtKvB,YACA,OAA2B,WAC3B,YACA,cAAuB,OACvB,kBACA,cACA,WAAoB,OACpB,qBAEL,GAAW,QAKb,GACH,EACA,EAAc,cAqBF,GACR,MAAM,QAAQ,CAAK,KACjB,GAAe,EAAM,OAAS,IAClC,GAAM,KAAK,CAAM,EACjB,EAAS,UACR,MAAO,EAAQ,QAAQ,CAAM,EAC7B,MAAO,EACP,SAAU,KAEX,EAAS,SAAU,CAAK,qBAMX,GACX,MAAM,QAAQ,CAAK,QACtB,EAAQ,EAAM,OAAQ,GAAc,IAAM,CAAM,GAChD,EAAS,UACR,MAAO,EAAQ,QAAQ,CAAM,EAC7B,MAAO,EACP,SAAU,KAEX,EAAS,SAAU,CAAK,cAIN,GACf,MACH,UAEA,EAAQ,EAAE,MAGX,EAAa,EAAE,EACf,EAAE,iBACF,EAAS,SAAU,CAAK,aAGM,QACxB,GAAS,EAAE,OAAO,OAAO,QAAQ,aACvC,EAAa,EAAE,EAEX,IAAW,YACT,OACJ,EAAQ,CAAM,MACd,EAAa,EAAE,MACf,EAAc,EAAK,EACnB,EAAS,UACR,MAAO,EAAQ,QAAQ,CAAM,EAC7B,MAAO,EACP,SAAU,KAEX,EAAS,SAAU,CAAK,SAGrB,GAAO,SAAS,CAAM,EACzB,EAAO,CAAM,EAEb,EAAI,CAAM,cAKQ,MAChB,EAAE,MAAQ,SAAW,GAAgB,OACnC,EAGM,GAAe,MAAM,QAAQ,CAAK,GAC5C,GAAM,SAAS,CAAY,EAAI,EAAO,CAAY,EAAI,EAAI,CAAY,MACtE,EAAa,EAAE,QAJf,EAAQ,CAAY,MACpB,EAAa,EAAE,IAMb,EAAE,MAAQ,WAAa,EAAE,MAAQ,kBAC9B,GAAY,EAAE,MAAQ,aAAiB,EACvC,EAAY,EAAS,QAAQ,CAAY,EAAI,MACnD,EACC,EAAY,EACT,EAAS,EAAS,OAAS,GAC3B,IAAc,EAAS,OACvB,EAAS,GACT,EAAS,IAEV,EAAE,MAAQ,cACb,EAAc,EAAK,aAamB,EAAO,CAAC,eAoBhC,qCAEX,GAAe,CAAW,cAG1B,EAAc,EAAI,aAEH,EAAc,EAAK,mWAhJpC,EAAW,EAAQ,OAAQ,GAC7B,EAAa,EAAE,cAAc,SAAS,EAAW,eAAiB,CAAC,mBAGlE,KAAiB,EAAS,SAAS,CAAY,IAC9C,GAAgB,QAElB,EAAe,EAAS,0BAEtB,GACA,SAAsB,IAAU,UAAY,EAAM,OAAS,GAC5D,GAAe,MAAM,QAAQ,CAAK,GAAK,EAAM,SAAW,CAAW,qBAI7D,IAAgB,MAAM,QAAQ,CAAK,GAC1C,EAAS,SAAU,CAAK,gPCLN,wMAYR,QAAS,iQAZD,sMAYR,QAAS,4SAdJ,OAAM,WAAc,YAAc,MAAM,uNAAxC,OAAM,WAAc,YAAc,MAAM,iKA1B7C,QAAgB,eAChB,OAA2B,WAC3B,UAAkB,OAClB,sBACA,UAAmB,OACnB,YACA,cAAuB,OACvB,kBACA,cACA,iBACA,eACA,qBAEA,UAEP,IAAgB,EACnB,KACW,GACX,GAAQ,0yBCxBG,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,mBAEV,aAAc,EAAO,QAAQ,OAAS,EAAO,QAAQ,GAAK,EAC3D"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.56de6705.js b/gradio/templates/cdn/assets/index.56de6705.js new file mode 100644 index 0000000000000000000000000000000000000000..386af2a825ce7a65829c5bedce6f4ca6087cd2ed --- /dev/null +++ b/gradio/templates/cdn/assets/index.56de6705.js @@ -0,0 +1,5 @@ +import{S as L,i as Z,s as F,A as q,B as _,f as p,D as y,E as z,p as k,e as ne,q as se,al as J,F as C,H as A,G as j,J as I,N as G,I as V,a2 as ue,O as N,C as D,c as B,m as E,o as H,t as T,l as O,v as _e,a7 as me,g as ge,h as de,k as Y,n as K,x as he}from"./index.7a68216a.js";import{g as be}from"./color.f2fbe15a.js";import{a as pe}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{B as ke}from"./BlockLabel.fd555cfa.js";import{E as ve}from"./Empty.092ff864.js";/* empty css */function ye(t){let e,n,l;return{c(){e=q("svg"),n=q("path"),l=q("path"),_(n,"fill","currentColor"),_(n,"d","M12 15H5a3 3 0 0 1-3-3v-2a3 3 0 0 1 3-3h5V5a1 1 0 0 0-1-1H3V2h6a3 3 0 0 1 3 3zM5 9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5V9zm15 14v2a1 1 0 0 0 1 1h5v-4h-5a1 1 0 0 0-1 1z"),_(l,"fill","currentColor"),_(l,"d","M2 30h28V2Zm26-2h-7a3 3 0 0 1-3-3v-2a3 3 0 0 1 3-3h5v-2a1 1 0 0 0-1-1h-6v-2h6a3 3 0 0 1 3 3Z"),_(e,"xmlns","http://www.w3.org/2000/svg"),_(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),_(e,"aria-hidden","true"),_(e,"role","img"),_(e,"class","iconify iconify--carbon"),_(e,"width","100%"),_(e,"height","100%"),_(e,"preserveAspectRatio","xMidYMid meet"),_(e,"viewBox","0 0 32 32")},m(a,o){p(a,e,o),y(e,n),y(e,l)},p:z,i:z,o:z,d(a){a&&k(e)}}}class oe extends L{constructor(e){super(),Z(this,e,null,ye,F,{})}}function P(t,e,n){const l=t.slice();return l[18]=e[n][0],l[24]=e[n][1],l}function Q(t,e,n){const l=t.slice();return l[18]=e[n][0],l[19]=e[n][1],l[21]=n,l}function U(t,e,n){const l=t.slice();return l[19]=e[n][0],l[22]=e[n][1],l[21]=n,l}function we(t){let e,n,l=t[1]&&W(),a=t[0],o=[];for(let s=0;s-1
+ 0 + +1`,_(e,"class","color-legend svelte-y52025"),_(e,"data-testid","highlighted-text:color-legend")},m(n,l){p(n,e,l)},d(n){n&&k(e)}}}function X(t){let e,n,l=t[18]+"",a,o,s;return{c(){e=C("span"),n=C("span"),a=A(l),o=j(),_(n,"class","text svelte-y52025"),_(e,"class","textspan score-text svelte-y52025"),_(e,"style",s="background-color: rgba("+(t[24]<0?"128, 90, 213,"+-t[24]:"239, 68, 60,"+t[24])+")")},m(r,i){p(r,e,i),y(e,n),y(n,a),y(e,o)},p(r,i){i&1&&l!==(l=r[18]+"")&&I(a,l),i&1&&s!==(s="background-color: rgba("+(r[24]<0?"128, 90, 213,"+-r[24]:"239, 68, 60,"+r[24])+")")&&_(e,"style",s)},d(r){r&&k(e)}}}function $(t){let e,n=Object.entries(t[3]),l=[];for(let a=0;af(h),S=h=>f(h),ae=()=>b(),ie=()=>b(),re=(h,v,w)=>{g("select",{index:h,value:[v,w]})};return t.$$set=h=>{"value"in h&&n(0,a=h.value),"show_legend"in h&&n(1,o=h.show_legend),"color_map"in h&&n(9,s=h.color_map),"selectable"in h&&n(2,r=h.selectable)},t.$$.update=()=>{if(t.$$.dirty&513){let h=function(){for(const v in s){const w=s[v].trim();w in J?n(3,c[v]=J[w],c):n(3,c[v]={primary:l?d(s[v],1):s[v],secondary:l?d(s[v],.5):s[v]},c)}};if(s||n(9,s={}),a.length>0){for(let[v,w]of a)if(w!==null)if(typeof w=="string"){if(n(5,M="categories"),!(w in s)){let R=be(Object.keys(s).length);n(9,s[w]=R,s)}}else n(5,M="scores")}h()}},[a,o,r,c,u,M,g,f,b,s,m,S,ae,ie,re]}class Me extends L{constructor(e){super(),Z(this,e,Ce,Te,F,{value:0,show_legend:1,color_map:9,selectable:2})}}function te(t){let e,n;return e=new ke({props:{Icon:oe,label:t[6],float:!1,disable:typeof t[0].container=="boolean"&&!t[0].container}}),{c(){B(e.$$.fragment)},m(l,a){E(e,l,a),n=!0},p(l,a){const o={};a&64&&(o.label=l[6]),a&1&&(o.disable=typeof l[0].container=="boolean"&&!l[0].container),e.$set(o)},i(l){n||(H(e.$$.fragment,l),n=!0)},o(l){T(e.$$.fragment,l),n=!1},d(l){O(e,l)}}}function Ne(t){let e,n;return e=new ve({props:{$$slots:{default:[Be]},$$scope:{ctx:t}}}),{c(){B(e.$$.fragment)},m(l,a){E(e,l,a),n=!0},p(l,a){const o={};a&8192&&(o.$$scope={dirty:a,ctx:l}),e.$set(o)},i(l){n||(H(e.$$.fragment,l),n=!0)},o(l){T(e.$$.fragment,l),n=!1},d(l){O(e,l)}}}function je(t){let e,n;return e=new Me({props:{selectable:t[7],value:t[4],show_legend:t[5],color_map:t[0].color_map}}),e.$on("select",t[11]),{c(){B(e.$$.fragment)},m(l,a){E(e,l,a),n=!0},p(l,a){const o={};a&128&&(o.selectable=l[7]),a&16&&(o.value=l[4]),a&32&&(o.show_legend=l[5]),a&1&&(o.color_map=l[0].color_map),e.$set(o)},i(l){n||(H(e.$$.fragment,l),n=!0)},o(l){T(e.$$.fragment,l),n=!1},d(l){O(e,l)}}}function Be(t){let e,n;return e=new oe({}),{c(){B(e.$$.fragment)},m(l,a){E(e,l,a),n=!0},i(l){n||(H(e.$$.fragment,l),n=!0)},o(l){T(e.$$.fragment,l),n=!1},d(l){O(e,l)}}}function Ee(t){let e,n,l,a,o,s,r;const i=[t[8]];let c={};for(let f=0;f{u=null}),K());let S=a;a=M(f),a===S?g[a].p(f,b):(Y(),T(g[S],1,1,()=>{g[S]=null}),K(),o=g[a],o?o.p(f,b):(o=g[a]=d[a](f),o.c()),H(o,1),o.m(s.parentNode,s))},i(f){r||(H(e.$$.fragment,f),H(u),H(o),r=!0)},o(f){T(e.$$.fragment,f),T(u),T(o),r=!1},d(f){O(e,f),f&&k(n),u&&u.d(f),f&&k(l),g[a].d(f),f&&k(s)}}}function Oe(t){let e,n;return e=new pe({props:{test_id:"highlighted-text",visible:t[3],elem_id:t[1],elem_classes:t[2],padding:!1,disable:typeof t[0].container=="boolean"&&!t[0].container,$$slots:{default:[Ee]},$$scope:{ctx:t}}}),{c(){B(e.$$.fragment)},m(l,a){E(e,l,a),n=!0},p(l,[a]){const o={};a&8&&(o.visible=l[3]),a&2&&(o.elem_id=l[1]),a&4&&(o.elem_classes=l[2]),a&1&&(o.disable=typeof l[0].container=="boolean"&&!l[0].container),a&8689&&(o.$$scope={dirty:a,ctx:l}),e.$set(o)},i(l){n||(H(e.$$.fragment,l),n=!0)},o(l){T(e.$$.fragment,l),n=!1},d(l){O(e,l)}}}function Se(t,e,n){let{elem_id:l=""}=e,{elem_classes:a=[]}=e,{visible:o=!0}=e,{value:s}=e,r,{show_legend:i}=e,{color_map:c={}}=e,{label:u="Highlighted Text"}=e,{style:d={}}=e,{selectable:g=!1}=e,{loading_status:M}=e;const f=se();function b(m){he.call(this,t,m)}return t.$$set=m=>{"elem_id"in m&&n(1,l=m.elem_id),"elem_classes"in m&&n(2,a=m.elem_classes),"visible"in m&&n(3,o=m.visible),"value"in m&&n(4,s=m.value),"show_legend"in m&&n(5,i=m.show_legend),"color_map"in m&&n(9,c=m.color_map),"label"in m&&n(6,u=m.label),"style"in m&&n(0,d=m.style),"selectable"in m&&n(7,g=m.selectable),"loading_status"in m&&n(8,M=m.loading_status)},t.$$.update=()=>{t.$$.dirty&513&&!d.color_map&&Object.keys(c).length&&n(0,d.color_map=c,d),t.$$.dirty&1040&&s!==r&&(n(10,r=s),f("change"))},[d,l,a,o,s,i,u,g,M,c,r,b]}class Ve extends L{constructor(e){super(),Z(this,e,Se,Oe,F,{elem_id:1,elem_classes:2,visible:3,value:4,show_legend:5,color_map:9,label:6,style:0,selectable:7,loading_status:8})}}var Le=Ve;const Ze=["static"],Fe=t=>({type:{payload:"Array<[string, string | number]>"},description:{payload:"list of text spans and corresponding label / value"}});export{Le as Component,Fe as document,Ze as modes}; +//# sourceMappingURL=index.56de6705.js.map diff --git a/gradio/templates/cdn/assets/index.56de6705.js.map b/gradio/templates/cdn/assets/index.56de6705.js.map new file mode 100644 index 0000000000000000000000000000000000000000..4b7e04de043b81d0882a4ea45781a6b326bd41ef --- /dev/null +++ b/gradio/templates/cdn/assets/index.56de6705.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.56de6705.js","sources":["../../../../ui/packages/icons/src/TextHighlight.svelte","../../../../ui/packages/highlighted-text/src/HighlightedText.svelte","../../../../ui/packages/app/src/components/HighlightedText/HighlightedText.svelte","../../../../ui/packages/app/src/components/HighlightedText/index.ts"],"sourcesContent":["\n\t\n\t\n\n","\n\n\n\n{#if mode === \"categories\"}\n\t{#if show_legend}\n\t\t
\n\t\t\t{#each Object.entries(_color_map) as [category, color], i}\n\t\t\t\t handle_mouseover(category)}\n\t\t\t\t\ton:focus={() => handle_mouseover(category)}\n\t\t\t\t\ton:mouseout={() => handle_mouseout()}\n\t\t\t\t\ton:blur={() => handle_mouseout()}\n\t\t\t\t\tclass=\"category-label\"\n\t\t\t\t\tstyle={\"background-color:\" + color.secondary}\n\t\t\t\t>\n\t\t\t\t\t{category}\n\t\t\t\t
\n\t\t\t{/each}\n\t\t\n\t{/if}\n\t
\n\t\t{#each value as [text, category], i}\n\t\t\t {\n\t\t\t\t\tdispatch(\"select\", { index: i, value: [text, category] });\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t\t{#if !show_legend && category !== null}\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t{category}\n\t\t\t\t\t\n\t\t\t\t{/if}\n\t\t\t\n\t\t{/each}\n\t
\n{:else}\n\t{#if show_legend}\n\t\t
\n\t\t\t-1\n\t\t\t0\n\t\t\t+1\n\t\t
\n\t{/if}\n\t
\n\t\t{#each value as [text, score]}\n\t\t\t\n\t\t\t\t{text}\n\t\t\t\n\t\t{/each}\n\t
\n{/if}\n\n\n","\n\n\n\t\n\t{#if label}\n\t\t\n\t{/if}\n\n\t{#if value}\n\t\t\n\t{:else}\n\t\t\n\t\t\t\n\t\t\n\t{/if}\n\n","export { default as Component } from \"./HighlightedText.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"Array<[string, string | number]>\"\n\t},\n\tdescription: {\n\t\tpayload: \"list of text spans and corresponding label / value\"\n\t}\n});\n"],"names":["document"],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.57d6d677.js b/gradio/templates/cdn/assets/index.57d6d677.js new file mode 100644 index 0000000000000000000000000000000000000000..7ded756220a620616099c8e86e0bd5ed8234a809 --- /dev/null +++ b/gradio/templates/cdn/assets/index.57d6d677.js @@ -0,0 +1,2 @@ +import{S as C,i as E,s as T,F as j,c as d,G as F,B as w,f as D,m as h,D as q,M as y,I as N,an as G,o as g,t as k,p as S,l as v,a2 as M,q as V,H as z,J as A,V as K,v as L,a7 as O,b as P,a as Q,g as R,h as U,j as W,x as B}from"./index.7a68216a.js";/* empty css */import{a as X}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";/* empty css */import{B as Y}from"./BlockTitle.39fa370e.js";import"./Info.4b69e77f.js";function Z(l){let e;return{c(){e=z(l[2])},m(n,a){D(n,e,a)},p(n,a){a&4&&A(e,n[2])},d(n){n&&S(e)}}}function p(l){let e,n,a,s,f,m,r;return n=new Y({props:{show_label:l[4],info:l[3],$$slots:{default:[Z]},$$scope:{ctx:l}}}),{c(){e=j("label"),d(n.$$.fragment),a=F(),s=j("input"),w(s,"type","number"),s.disabled=l[1],w(s,"class","svelte-1nnxs9b"),w(e,"class","block")},m(o,b){D(o,e,b),h(n,e,null),q(e,a),q(e,s),y(s,l[0]),f=!0,m||(r=[N(s,"input",l[7]),N(s,"keypress",l[5]),N(s,"blur",l[6])],m=!0)},p(o,[b]){const t={};b&16&&(t.show_label=o[4]),b&8&&(t.info=o[3]),b&1028&&(t.$$scope={dirty:b,ctx:o}),n.$set(t),(!f||b&2)&&(s.disabled=o[1]),b&1&&G(s.value)!==o[0]&&y(s,o[0])},i(o){f||(g(n.$$.fragment,o),f=!0)},o(o){k(n.$$.fragment,o),f=!1},d(o){o&&S(e),v(n),m=!1,M(r)}}}function x(l,e,n){let{value:a=0}=e,{disabled:s=!1}=e,{label:f}=e,{info:m=void 0}=e,{show_label:r=!0}=e;const o=V();function b(u){!isNaN(u)&&u!==null&&o("change",u)}async function t(u){await K(),u.key==="Enter"&&(u.preventDefault(),o("submit"))}function _(u){o("blur")}function c(){a=G(this.value),n(0,a)}return l.$$set=u=>{"value"in u&&n(0,a=u.value),"disabled"in u&&n(1,s=u.disabled),"label"in u&&n(2,f=u.label),"info"in u&&n(3,m=u.info),"show_label"in u&&n(4,r=u.show_label)},l.$$.update=()=>{l.$$.dirty&1&&b(a)},[a,s,f,m,r,t,_,c]}class $ extends C{constructor(e){super(),E(this,e,x,p,T,{value:0,disabled:1,label:2,info:3,show_label:4})}}function ee(l){let e,n,a,s,f;const m=[l[8]];let r={};for(let t=0;tQ(a,"value",o)),a.$on("change",l[11]),a.$on("submit",l[12]),a.$on("blur",l[13]),{c(){d(e.$$.fragment),n=F(),d(a.$$.fragment)},m(t,_){h(e,t,_),D(t,n,_),h(a,t,_),f=!0},p(t,_){const c=_&256?R(m,[U(t[8])]):{};e.$set(c);const u={};_&2&&(u.label=t[1]),_&4&&(u.info=t[2]),_&128&&(u.show_label=t[7]),_&512&&(u.disabled=t[9]==="static"),!s&&_&1&&(s=!0,u.value=t[0],W(()=>s=!1)),a.$set(u)},i(t){f||(g(e.$$.fragment,t),g(a.$$.fragment,t),f=!0)},o(t){k(e.$$.fragment,t),k(a.$$.fragment,t),f=!1},d(t){v(e,t),t&&S(n),v(a,t)}}}function le(l){let e,n;return e=new X({props:{visible:l[5],elem_id:l[3],elem_classes:l[4],disable:typeof l[6].container=="boolean"&&!l[6].container,$$slots:{default:[ee]},$$scope:{ctx:l}}}),{c(){d(e.$$.fragment)},m(a,s){h(e,a,s),n=!0},p(a,[s]){const f={};s&32&&(f.visible=a[5]),s&8&&(f.elem_id=a[3]),s&16&&(f.elem_classes=a[4]),s&64&&(f.disable=typeof a[6].container=="boolean"&&!a[6].container),s&17287&&(f.$$scope={dirty:s,ctx:a}),e.$set(f)},i(a){n||(g(e.$$.fragment,a),n=!0)},o(a){k(e.$$.fragment,a),n=!1},d(a){v(e,a)}}}function ae(l,e,n){let{label:a="Number"}=e,{info:s=void 0}=e,{elem_id:f=""}=e,{elem_classes:m=[]}=e,{visible:r=!0}=e,{style:o={}}=e,{value:b=0}=e,{show_label:t}=e,{loading_status:_}=e,{mode:c}=e;function u(i){b=i,n(0,b)}function H(i){B.call(this,l,i)}function I(i){B.call(this,l,i)}function J(i){B.call(this,l,i)}return l.$$set=i=>{"label"in i&&n(1,a=i.label),"info"in i&&n(2,s=i.info),"elem_id"in i&&n(3,f=i.elem_id),"elem_classes"in i&&n(4,m=i.elem_classes),"visible"in i&&n(5,r=i.visible),"style"in i&&n(6,o=i.style),"value"in i&&n(0,b=i.value),"show_label"in i&&n(7,t=i.show_label),"loading_status"in i&&n(8,_=i.loading_status),"mode"in i&&n(9,c=i.mode)},[b,a,s,f,m,r,o,t,_,c,u,H,I,J]}class ne extends C{constructor(e){super(),E(this,e,ae,le,T,{label:1,info:2,elem_id:3,elem_classes:4,visible:5,style:6,value:0,show_label:7,loading_status:8,mode:9})}}var be=ne;const _e=["static","dynamic"],me=l=>({type:{payload:"number"},description:{payload:"numeric value"},example_data:l.value??1});export{be as Component,me as document,_e as modes}; +//# sourceMappingURL=index.57d6d677.js.map diff --git a/gradio/templates/cdn/assets/index.57d6d677.js.map b/gradio/templates/cdn/assets/index.57d6d677.js.map new file mode 100644 index 0000000000000000000000000000000000000000..5a69c89c31ff27443a2b00a1c434bad98ae076b1 --- /dev/null +++ b/gradio/templates/cdn/assets/index.57d6d677.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.57d6d677.js","sources":["../../../../ui/packages/form/src/Number.svelte","../../../../ui/packages/app/src/components/Number/Number.svelte","../../../../ui/packages/app/src/components/Number/index.ts"],"sourcesContent":["\n\n\n\n\n\n","\n\n\n\t\n\n\t\n\n","export { default as Component } from \"./Number.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"number\"\n\t},\n\tdescription: {\n\t\tpayload: \"numeric value\"\n\t},\n\texample_data: config.value ?? 1\n});\n"],"names":[],"mappings":"yiBAwCkC,wCAAA,sSADlC,4BAEC,8DAGc,iBACJ,kTAzCC,QAAgB,MAChB,WAAoB,OACpB,YACA,OAA2B,WAC3B,aAAsB,WAE3B,GAAW,eAMM,IACjB,MAAM,CAAC,GAAK,IAAM,MACtB,EAAS,SAAU,CAAC,mBAIS,QACxB,KAEF,EAAE,MAAQ,SACb,GAAE,iBACF,EAAS,QAAQ,cAME,GACpB,EAAS,MAAM,mPAHb,EAAc,CAAK,sKCLH,sJAOR,OAAS,+QAPD,qHAOR,OAAS,0SATJ,MAAM,WAAc,YAAc,KAAM,qNAAxC,MAAM,WAAc,YAAc,KAAM,iKAjB7C,QAAgB,aAChB,OAA2B,WAC3B,UAAkB,OAClB,sBACA,UAAmB,OACnB,eACA,QAAgB,MAChB,iBAEA,qBACA,6qBChBC,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,iBAEV,aAAc,EAAO,OAAS,CAC/B"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.5aa71568.css b/gradio/templates/cdn/assets/index.5aa71568.css new file mode 100644 index 0000000000000000000000000000000000000000..1b457869043e5e2005c2331cb14abed07b7f6a88 --- /dev/null +++ b/gradio/templates/cdn/assets/index.5aa71568.css @@ -0,0 +1 @@ +span.svelte-s1r2yt{font-weight:var(--section-header-text-weight);font-size:var(--section-header-text-size)}.label-wrap.svelte-s1r2yt{display:flex;justify-content:space-between;cursor:pointer;width:var(--size-full)}.label-wrap.open.svelte-s1r2yt{margin-bottom:var(--size-2)}.icon.svelte-s1r2yt{transition:.15s} diff --git a/gradio/templates/cdn/assets/index.5c217706.css b/gradio/templates/cdn/assets/index.5c217706.css new file mode 100644 index 0000000000000000000000000000000000000000..53554c2d4778e15c578521c9ea35d1960c4f3969 --- /dev/null +++ b/gradio/templates/cdn/assets/index.5c217706.css @@ -0,0 +1 @@ +.preview.svelte-1tkea93.svelte-1tkea93{display:flex;position:absolute;inset:0;flex-direction:column;z-index:var(--layer-2);backdrop-filter:blur(8px);background:var(--background-fill-primary);height:var(--size-full)}.fixed-height.svelte-1tkea93.svelte-1tkea93{min-height:var(--size-80);max-height:55vh}@media (min-width: 1280px){.fixed-height.svelte-1tkea93.svelte-1tkea93{min-height:450px}}.preview.svelte-1tkea93 img.svelte-1tkea93{width:var(--size-full);height:calc(var(--size-full) - 60px);object-fit:contain}.preview.svelte-1tkea93 img.with-caption.svelte-1tkea93{height:calc(var(--size-full) - 80px)}.caption.svelte-1tkea93.svelte-1tkea93{padding:var(--size-2) var(--size-3);overflow:hidden;color:var(--block-label-text-color);font-weight:var(--weight-semibold);text-align:center;text-overflow:ellipsis;white-space:nowrap}.thumbnails.svelte-1tkea93.svelte-1tkea93{display:flex;position:absolute;bottom:0;justify-content:center;align-items:center;gap:var(--spacing-lg);width:var(--size-full);height:var(--size-14);overflow-x:scroll}.thumbnail-item.svelte-1tkea93.svelte-1tkea93{--ring-color:transparent;position:relative;outline:none;box-shadow:0 0 0 2px var(--ring-color),var(--shadow-drop);border:1px solid var(--border-color-primary);border-radius:var(--button-small-radius);background:var(--background-fill-secondary);aspect-ratio:var(--ratio-square);width:var(--size-full);height:var(--size-full);overflow:hidden}.thumbnail-item.svelte-1tkea93.svelte-1tkea93:hover{--ring-color:var(--border-color-accent);filter:brightness(1.1);border-color:var(--border-color-accent)}.thumbnail-small.svelte-1tkea93.svelte-1tkea93{flex:none;transform:scale(.9);transition:75ms;width:var(--size-9);height:var(--size-9)}.thumbnail-small.selected.svelte-1tkea93.svelte-1tkea93{--ring-color:var(--color-accent);transform:scale(1);border-color:var(--color-accent)}.thumbnail-small.svelte-1tkea93>img.svelte-1tkea93{width:var(--size-full);height:var(--size-full);overflow:hidden;object-fit:cover}.grid-wrap.svelte-1tkea93.svelte-1tkea93{padding:var(--size-2);height:var(--size-full);overflow-y:auto}.grid-container.svelte-1tkea93.svelte-1tkea93{display:grid;grid-template-columns:var(--grid-cols);gap:var(--spacing-lg)}@media (min-width: 640px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--sm-grid-cols)}}@media (min-width: 768px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--md-grid-cols)}}@media (min-width: 1024px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--lg-grid-cols)}}@media (min-width: 1280px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--xl-grid-cols)}}@media (min-width: 1536px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--2xl-grid-cols)}}.thumbnail-lg.svelte-1tkea93>img.svelte-1tkea93{width:var(--size-full);height:var(--size-full);overflow:hidden;object-fit:cover}.thumbnail-lg.svelte-1tkea93:hover .caption-label.svelte-1tkea93{opacity:.5}.caption-label.svelte-1tkea93.svelte-1tkea93{position:absolute;right:var(--block-label-margin);bottom:var(--block-label-margin);z-index:var(--layer-1);border-top:1px solid var(--border-color-primary);border-left:1px solid var(--border-color-primary);border-radius:var(--block-label-radius);background:var(--background-fill-secondary);padding:var(--block-label-padding);max-width:80%;overflow:hidden;font-size:var(--block-label-text-size);text-align:left;text-overflow:ellipsis;white-space:nowrap} diff --git a/gradio/templates/cdn/assets/index.61c7b416.css b/gradio/templates/cdn/assets/index.61c7b416.css new file mode 100644 index 0000000000000000000000000000000000000000..77ebe6c1fea2e3557f76088bb9f5c30e2cfdb72a --- /dev/null +++ b/gradio/templates/cdn/assets/index.61c7b416.css @@ -0,0 +1 @@ +.spacer.svelte-1kspdo{display:inline-block;width:0;height:0}.json-node.svelte-1kspdo{display:inline;color:var(--body-text-color);line-height:var(--line-sm);font-family:var(--font-mono)}.expand-array.svelte-1kspdo{border:1px solid var(--border-color-primary);border-radius:var(--radius-sm);background:var(--background-fill-secondary);padding:0 var(--size-1);color:var(--body-text-color)}.expand-array.svelte-1kspdo:hover{background:var(--background-fill-primary)}.children.svelte-1kspdo{padding-left:var(--size-4)}.json-item.svelte-1kspdo{display:inline}.null.svelte-1kspdo{color:var(--body-text-color-subdued)}.string.svelte-1kspdo{color:var(--color-green-500)}.number.svelte-1kspdo{color:var(--color-blue-500)}.bool.svelte-1kspdo{color:var(--color-red-500)}.json-holder.svelte-1trjy9a{padding:var(--size-2)}button.svelte-1trjy9a{display:flex;position:absolute;top:var(--block-label-margin);right:var(--block-label-margin);align-items:center;box-shadow:var(--shadow-drop);border:1px solid var(--border-color-primary);border-top:none;border-right:none;border-radius:var(--block-label-right-radius);background:var(--block-label-background-fill);padding:5px;width:22px;height:22px;overflow:hidden;color:var(--block-label-text-color);font:var(--font);font-size:var(--button-small-text-size)} diff --git a/gradio/templates/cdn/assets/index.64577800.js b/gradio/templates/cdn/assets/index.64577800.js new file mode 100644 index 0000000000000000000000000000000000000000..6af3976f9f419f12e3c53110c371a25d08f12c43 --- /dev/null +++ b/gradio/templates/cdn/assets/index.64577800.js @@ -0,0 +1,6 @@ +import{S as T,i as A,s as E,A as q,B as k,f as m,D as g,E as h,p as d,F as y,G as J,O as I,k as N,t as b,n as S,o as p,H as v,J as B,e as D,c as j,m as O,l as $,N as K,I as L,ac as U,a3 as W,a4 as X,a5 as x,q as ee,v as te,a7 as le,g as ne,h as se}from"./index.7a68216a.js";import{C as ie,a as oe}from"./Copy.fa9f7398.js";/* empty css */import{a as re}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{E as ae}from"./Empty.092ff864.js";import{B as fe}from"./BlockLabel.fd555cfa.js";import"./Blocks.1c8a32b7.js";function ce(f){let e,t;return{c(){e=q("svg"),t=q("path"),k(t,"fill","currentColor"),k(t,"d","M5 3h2v2H5v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5h2v2H5c-1.07-.27-2-.9-2-2v-4a2 2 0 0 0-2-2H0v-2h1a2 2 0 0 0 2-2V5a2 2 0 0 1 2-2m14 0a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h1v2h-1a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2h-2v-2h2v-5a2 2 0 0 1 2-2a2 2 0 0 1-2-2V5h-2V3h2m-7 12a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-4 0a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m8 0a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1Z"),k(e,"xmlns","http://www.w3.org/2000/svg"),k(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),k(e,"aria-hidden","true"),k(e,"role","img"),k(e,"class","iconify iconify--mdi"),k(e,"width","100%"),k(e,"height","100%"),k(e,"preserveAspectRatio","xMidYMid meet"),k(e,"viewBox","0 0 24 24")},m(l,s){m(l,e,s),g(e,t)},p:h,i:h,o:h,d(l){l&&d(e)}}}class Q extends T{constructor(e){super(),A(this,e,null,ce,E,{})}}function F(f,e,t){const l=f.slice();return l[5]=e[t],l[7]=t,l}function G(f,e,t){const l=f.slice();return l[5]=e[t],l[7]=t,l}function ue(f){let e,t;return{c(){e=y("div"),t=v(f[1]),k(e,"class","json-item svelte-1kspdo")},m(l,s){m(l,e,s),g(e,t)},p(l,s){s&2&&B(t,l[1])},i:h,o:h,d(l){l&&d(e)}}}function _e(f){let e,t;return{c(){e=y("div"),t=v(f[1]),k(e,"class","json-item number svelte-1kspdo")},m(l,s){m(l,e,s),g(e,t)},p(l,s){s&2&&B(t,l[1])},i:h,o:h,d(l){l&&d(e)}}}function me(f){let e,t=f[1].toLocaleString()+"",l;return{c(){e=y("div"),l=v(t),k(e,"class","json-item bool svelte-1kspdo")},m(s,a){m(s,e,a),g(e,l)},p(s,a){a&2&&t!==(t=s[1].toLocaleString()+"")&&B(l,t)},i:h,o:h,d(s){s&&d(e)}}}function de(f){let e,t,l,s;return{c(){e=y("div"),t=v('"'),l=v(f[1]),s=v('"'),k(e,"class","json-item string svelte-1kspdo")},m(a,o){m(a,e,o),g(e,t),g(e,l),g(e,s)},p(a,o){o&2&&B(l,a[1])},i:h,o:h,d(a){a&&d(e)}}}function pe(f){let e;return{c(){e=y("div"),e.textContent="null",k(e,"class","json-item null svelte-1kspdo")},m(t,l){m(t,e,l)},p:h,i:h,o:h,d(t){t&&d(e)}}}function be(f){let e,t,l,s;const a=[ge,ve],o=[];function c(n,i){return n[0]?0:1}return e=c(f),t=o[e]=a[e](f),{c(){t.c(),l=D()},m(n,i){o[e].m(n,i),m(n,l,i),s=!0},p(n,i){let r=e;e=c(n),e===r?o[e].p(n,i):(N(),b(o[r],1,1,()=>{o[r]=null}),S(),t=o[e],t?t.p(n,i):(t=o[e]=a[e](n),t.c()),p(t,1),t.m(l.parentNode,l))},i(n){s||(p(t),s=!0)},o(n){b(t),s=!1},d(n){o[e].d(n),n&&d(l)}}}function ke(f){let e,t,l,s;const a=[ye,he],o=[];function c(n,i){return n[0]?0:1}return e=c(f),t=o[e]=a[e](f),{c(){t.c(),l=D()},m(n,i){o[e].m(n,i),m(n,l,i),s=!0},p(n,i){let r=e;e=c(n),e===r?o[e].p(n,i):(N(),b(o[r],1,1,()=>{o[r]=null}),S(),t=o[e],t?t.p(n,i):(t=o[e]=a[e](n),t.c()),p(t,1),t.m(l.parentNode,l))},i(n){s||(p(t),s=!0)},o(n){b(t),s=!1},d(n){o[e].d(n),n&&d(l)}}}function ve(f){let e,t,l,s,a=Object.entries(f[1]),o=[];for(let n=0;nb(o[n],1,1,()=>{o[n]=null});return{c(){e=v(`{ + `),t=y("div");for(let n=0;nb(o[n],1,1,()=>{o[n]=null});return{c(){e=v(`[ + `),t=y("div");for(let n=0;n{n[w]=null}),S(),a=n[s],a?a.p(r,u):(a=n[s]=c[s](r),a.c()),p(a,1),a.m(l,null))},i(r){o||(p(a),o=!0)},o(r){b(a),o=!1},d(r){r&&d(e),r&&d(t),r&&d(l),n[s].d()}}}function je(f,e,t){let{value:l}=e,{depth:s}=e,{collapsed:a=s>4}=e;const o=()=>{t(0,a=!1)},c=()=>{t(0,a=!1)};return f.$$set=n=>{"value"in n&&t(1,l=n.value),"depth"in n&&t(2,s=n.depth),"collapsed"in n&&t(0,a=n.collapsed)},[a,l,s,o,c]}class M extends T{constructor(e){super(),A(this,e,je,we,E,{value:1,depth:2,collapsed:0})}}function Oe(f){let e,t;return e=new ae({props:{$$slots:{default:[Ne]},$$scope:{ctx:f}}}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},p(l,s){const a={};s&32&&(a.$$scope={dirty:s,ctx:l}),e.$set(a)},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function $e(f){let e,t,l,s,a,o,c,n,i;const r=[Je,Se],u=[];function w(_,C){return _[1]?0:1}return t=w(f),l=u[t]=r[t](f),o=new M({props:{value:f[0],depth:0}}),{c(){e=y("button"),l.c(),s=J(),a=y("div"),j(o.$$.fragment),k(e,"class","svelte-1trjy9a"),k(a,"class","json-holder svelte-1trjy9a")},m(_,C){m(_,e,C),u[t].m(e,null),m(_,s,C),m(_,a,C),O(o,a,null),c=!0,n||(i=L(e,"click",f[2]),n=!0)},p(_,C){let H=t;t=w(_),t!==H&&(N(),b(u[H],1,1,()=>{u[H]=null}),S(),l=u[t],l||(l=u[t]=r[t](_),l.c()),p(l,1),l.m(e,null));const V={};C&1&&(V.value=_[0]),o.$set(V)},i(_){c||(p(l),p(o.$$.fragment,_),c=!0)},o(_){b(l),b(o.$$.fragment,_),c=!1},d(_){_&&d(e),u[t].d(),_&&d(s),_&&d(a),$(o),n=!1,i()}}}function Ne(f){let e,t;return e=new Q({}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function Se(f){let e,t,l;return t=new ie({}),{c(){e=y("span"),j(t.$$.fragment),k(e,"class","copy-text")},m(s,a){m(s,e,a),O(t,e,null),l=!0},i(s){l||(p(t.$$.fragment,s),l=!0)},o(s){b(t.$$.fragment,s),l=!1},d(s){s&&d(e),$(t)}}}function Je(f){let e,t,l,s;return t=new oe({}),{c(){e=y("span"),j(t.$$.fragment)},m(a,o){m(a,e,o),O(t,e,null),s=!0},i(a){s||(p(t.$$.fragment,a),l||W(()=>{l=X(e,x,{duration:300}),l.start()}),s=!0)},o(a){b(t.$$.fragment,a),s=!1},d(a){a&&d(e),$(t)}}}function Be(f){let e,t,l,s,a;const o=[$e,Oe],c=[];function n(i,r){return r&1&&(e=null),e==null&&(e=!!(i[0]&&i[0]!=='""'&&!Ce(i[0]))),e?0:1}return t=n(f,-1),l=c[t]=o[t](f),{c(){l.c(),s=D()},m(i,r){c[t].m(i,r),m(i,s,r),a=!0},p(i,[r]){let u=t;t=n(i,r),t===u?c[t].p(i,r):(N(),b(c[u],1,1,()=>{c[u]=null}),S(),l=c[t],l?l.p(i,r):(l=c[t]=o[t](i),l.c()),p(l,1),l.m(s.parentNode,s))},i(i){a||(p(l),a=!0)},o(i){b(l),a=!1},d(i){c[t].d(i),i&&d(s)}}}function Ce(f){return f&&Object.keys(f).length===0&&Object.getPrototypeOf(f)===Object.prototype}function Te(f,e,t){let{value:l={}}=e,s=!1,a;function o(){t(1,s=!0),a&&clearTimeout(a),a=setTimeout(()=>{t(1,s=!1)},1e3)}async function c(){"clipboard"in navigator&&(await navigator.clipboard.writeText(JSON.stringify(l,null,2)),o())}return U(()=>{a&&clearTimeout(a)}),f.$$set=n=>{"value"in n&&t(0,l=n.value)},[l,s,c]}class Ae extends T{constructor(e){super(),A(this,e,Te,Be,E,{value:0})}}function z(f){let e,t;return e=new fe({props:{Icon:Q,show_label:f[6],label:f[5],float:!1,disable:typeof f[7].container=="boolean"&&!f[7].container}}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},p(l,s){const a={};s&64&&(a.show_label=l[6]),s&32&&(a.label=l[5]),s&128&&(a.disable=typeof l[7].container=="boolean"&&!l[7].container),e.$set(a)},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function Ee(f){let e,t,l,s,a,o=f[5]&&z(f);const c=[f[4]];let n={};for(let i=0;i{o=null}),S());const u=r&16?ne(c,[se(i[4])]):{};t.$set(u);const w={};r&8&&(w.value=i[3]),s.$set(w)},i(i){a||(p(o),p(t.$$.fragment,i),p(s.$$.fragment,i),a=!0)},o(i){b(o),b(t.$$.fragment,i),b(s.$$.fragment,i),a=!1},d(i){o&&o.d(i),i&&d(e),$(t,i),i&&d(l),$(s,i)}}}function He(f){let e,t;return e=new re({props:{visible:f[2],test_id:"json",elem_id:f[0],elem_classes:f[1],disable:typeof f[7].container=="boolean"&&!f[7].container,padding:!1,$$slots:{default:[Ee]},$$scope:{ctx:f}}}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},p(l,[s]){const a={};s&4&&(a.visible=l[2]),s&1&&(a.elem_id=l[0]),s&2&&(a.elem_classes=l[1]),s&128&&(a.disable=typeof l[7].container=="boolean"&&!l[7].container),s&1272&&(a.$$scope={dirty:s,ctx:l}),e.$set(a)},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function De(f,e,t){let{elem_id:l=""}=e,{elem_classes:s=[]}=e,{visible:a=!0}=e,{value:o}=e,c,{loading_status:n}=e,{label:i}=e,{show_label:r}=e,{style:u={}}=e;const w=ee();return f.$$set=_=>{"elem_id"in _&&t(0,l=_.elem_id),"elem_classes"in _&&t(1,s=_.elem_classes),"visible"in _&&t(2,a=_.visible),"value"in _&&t(3,o=_.value),"loading_status"in _&&t(4,n=_.loading_status),"label"in _&&t(5,i=_.label),"show_label"in _&&t(6,r=_.show_label),"style"in _&&t(7,u=_.style)},f.$$.update=()=>{f.$$.dirty&264&&o!==c&&(t(8,c=o),w("change"))},[l,s,a,o,n,i,r,u,c]}class Le extends T{constructor(e){super(),A(this,e,De,He,E,{elem_id:0,elem_classes:1,visible:2,value:3,loading_status:4,label:5,show_label:6,style:7})}}var Re=Le;const Ye=["static"],Ze=f=>({type:{payload:"Object | Array"},description:{payload:"JSON object"}});export{Re as Component,Ze as document,Ye as modes}; +//# sourceMappingURL=index.64577800.js.map diff --git a/gradio/templates/cdn/assets/index.64577800.js.map b/gradio/templates/cdn/assets/index.64577800.js.map new file mode 100644 index 0000000000000000000000000000000000000000..53a96c24d228217fb88d5c123b2d7300f53065ee --- /dev/null +++ b/gradio/templates/cdn/assets/index.64577800.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.64577800.js","sources":["../../../../ui/packages/icons/src/JSON.svelte","../../../../ui/packages/json/src/JSONNode.svelte","../../../../ui/packages/json/src/JSON.svelte","../../../../ui/packages/app/src/components/Json/Json.svelte","../../../../ui/packages/app/src/components/Json/index.ts"],"sourcesContent":["\n\t\n\n","\n\n\n
\n\t{#if value instanceof Array}\n\t\t{#if collapsed}\n\t\t\t {\n\t\t\t\t\tcollapsed = false;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\texpand {value.length} children\n\t\t\t\n\t\t{:else}\n\t\t\t[\n\t\t\t
\n\t\t\t\t{#each value as node, i}\n\t\t\t\t\t
\n\t\t\t\t\t\t{i}: \n\t\t\t\t\t\t{#if i !== value.length - 1}\n\t\t\t\t\t\t\t,\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\t\t\t\t{/each}\n\t\t\t
\n\t\t\t]\n\t\t{/if}\n\t{:else if value instanceof Object}\n\t\t{#if collapsed}\n\t\t\t {\n\t\t\t\t\tcollapsed = false;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{+{Object.keys(value).length} items}\n\t\t\t\n\t\t{:else}\n\t\t\t{\n\t\t\t
\n\t\t\t\t{#each Object.entries(value) as node, i}\n\t\t\t\t\t
\n\t\t\t\t\t\t{node[0]}: {#if i !== Object.keys(value).length - 1},\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\t\t\t\t{/each}\n\t\t\t
\n\t\t\t}\n\t\t{/if}\n\t{:else if value === null}\n\t\t
null
\n\t{:else if typeof value === \"string\"}\n\t\t
\n\t\t\t\"{value}\"\n\t\t
\n\t{:else if typeof value === \"boolean\"}\n\t\t
\n\t\t\t{value.toLocaleString()}\n\t\t
\n\t{:else if typeof value === \"number\"}\n\t\t
\n\t\t\t{value}\n\t\t
\n\t{:else}\n\t\t
\n\t\t\t{value}\n\t\t
\n\t{/if}\n
\n\n\n","\n\n{#if value && value !== '\"\"' && !is_empty(value)}\n\t\n\t
\n\t\t\n\t
\n{:else}\n\t\n\t\t\n\t\n{/if}\n\n\n","\n\n\n\t{#if label}\n\t\t\n\t{/if}\n\n\t\n\n\t\n\n","export { default as Component } from \"./Json.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"Object | Array\"\n\t},\n\tdescription: {\n\t\tpayload: \"JSON object\"\n\t}\n});\n"],"names":["JSONIcon"],"mappings":"22CAAA,SAWC,iRC+DG,qDADF,iCACE,+EAJA,4DADF,iCACE,qDAJA,KAAM,uGADR,oCACE,KAAM,0GALqB,GAC3B,MAAC,UAAM,GACT,wDAFA,+CACG,kJAHH,2GA3BK,kXAvBA,yUAkCI,OAAO,QAAQ,2BAApB,mFAHE;AAAA,IAEL,sDAaK;AAAA,KAEN,yDAfC,oFACQ,OAAO,QAAQ,wBAApB,qHAAA,8DAAA,6JALM,OAAO,KAAK,MAAO,+CAD5B,IACQ,aAA2B,SACnC,UANA,gFAKS,OAAO,KAAK,MAAO,uFAahB,GACT,yDAPC,KAAK,cAKQ,OAAM,OAAO,KAAK,MAAO,OAAS,4BAJxC,KAAK,SACL,KAAQ,MACV,sDAHG,IAAE,0CADZ,wFACE,KAAK,wCACE,KAAK,kBACL,KAAQ,qBAGF,OAAM,OAAO,KAAK,MAAO,OAAS,8KA9B3C,0BAAL,mFAHE;AAAA,IAEL,sDASK;AAAA,KAEN,yDAXC,oFACQ,uBAAL,qHAAA,8DAAA,+JALiC,KAAM,2DAAd,SAAO,aAAc,WAAS,oDAL1D,SAKC,8EAAmC,KAAM,uFAQZ,GAE3B,yFAHyB,WAAa,KAAQ,WACzC,OAAM,KAAM,OAAS,iCADzB,UAAE,IAAE,gDADN,sGAC0B,oBAAa,KAAQ,aACzC,OAAM,KAAM,OAAS,uOAf1B,eAAiB,SAuBZ,cAAiB,UA2BjB,OAAU,aAEH,OAAU,iBAIV,OAAU,kBAIV,OAAU,kIA9DM,OAAU,CAAC,iDAA7C,kBACA,wDADkC,OAAU,CAAC,0OALjC,YACA,YACA,YAAY,EAAQ,sBAS3B,EAAY,EAAK,cAuBjB,EAAY,EAAK,6jBCQf,wEASoB,gJAV1B,iCASA,4CATkB,qkBAMhB,yMAJA,0EAAiB,SAAU,gLAHzB,OAAS,OAAU,OAAS,GAAS,mUAbvB,SAEhB,IACA,OAAO,KAAK,CAAG,EAAE,SAAW,GAC5B,OAAO,eAAe,CAAG,IAAM,OAAO,iCAxB7B,cAEP,EAAS,GACT,mBAGH,EAAS,EAAI,EACT,GAAO,aAAa,CAAK,EAC7B,EAAQ,oBACP,EAAS,EAAK,GACZ,wBAIC,aAAe,kBACZ,WAAU,UAAU,UAAU,KAAK,UAAU,EAAO,KAAM,CAAC,GACjE,KAYF,cACK,GAAO,aAAa,CAAK,+KCItBA,mCAGC,iBACS,MAAM,WAAc,YAAc,KAAM,mJAAxC,MAAM,WAAc,YAAc,KAAM,oIANrD,oBAUc,mPAVd,kIAUc,uVAbH,MAAM,WAAc,YAAc,KAAM,kBAC/C,6MADO,MAAM,WAAc,YAAc,KAAM,gKAzB7C,UAAkB,OAClB,sBACA,UAAmB,OACnB,WACP,GACO,qBACA,YACA,iBACA,mBAEL,GAAW,4UAGZ,IAAU,QACb,EAAY,CAAK,EACjB,EAAS,QAAQ,+LCzBP,IAAQ,CAAC,QAAQ,EAEjB,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,kBAEV,YAAa,CACZ,QAAS,cAEX"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.6d5e2b84.js b/gradio/templates/cdn/assets/index.6d5e2b84.js new file mode 100644 index 0000000000000000000000000000000000000000..2fb0dffede927f161b1f42dfa4f483c7e554a116 --- /dev/null +++ b/gradio/templates/cdn/assets/index.6d5e2b84.js @@ -0,0 +1,2 @@ +import{S as a,i as o,s}from"./index.7a68216a.js";class n extends a{constructor(e){super(),o(this,e,null,null,s,{})}}var p=n;const c=["static"],i=t=>({type:{payload:"Any"},description:{payload:"stored state value"},example_data:""});export{p as Component,i as document,c as modes}; +//# sourceMappingURL=index.6d5e2b84.js.map diff --git a/gradio/templates/cdn/assets/index.6d5e2b84.js.map b/gradio/templates/cdn/assets/index.6d5e2b84.js.map new file mode 100644 index 0000000000000000000000000000000000000000..939122cae0eaff11df46bb31874921a8003f4d75 --- /dev/null +++ b/gradio/templates/cdn/assets/index.6d5e2b84.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.6d5e2b84.js","sources":["../../../../ui/packages/app/src/components/State/index.ts"],"sourcesContent":["export { default as Component } from \"./State.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"Any\"\n\t},\n\tdescription: {\n\t\tpayload: \"stored state value\"\n\t},\n\texample_data: \"\"\n});\n"],"names":[],"mappings":"iIACa,GAAQ,CAAC,QAAQ,EAEjB,EAAW,AAAC,KACxB,KAAM,CACL,QAAS,OAEV,YAAa,CACZ,QAAS,sBAEV,aAAc,EACf"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.6da2d824.css b/gradio/templates/cdn/assets/index.6da2d824.css new file mode 100644 index 0000000000000000000000000000000000000000..a1f402a49e82009fd7eafa923615d67793b8751c --- /dev/null +++ b/gradio/templates/cdn/assets/index.6da2d824.css @@ -0,0 +1 @@ +td.svelte-xrr240.svelte-xrr240{width:45%}td.svelte-xrr240.svelte-xrr240:last-child{width:10%;text-align:right}.file-preview-holder.svelte-xrr240.svelte-xrr240{overflow-x:auto}.file-preview.svelte-xrr240.svelte-xrr240{width:var(--size-full);max-height:var(--size-60);overflow-y:auto;color:var(--body-text-color)}.file.svelte-xrr240.svelte-xrr240{width:var(--size-full)}.file.svelte-xrr240>.svelte-xrr240{padding:var(--size-1) var(--size-2-5)}.download.svelte-xrr240.svelte-xrr240:hover{text-decoration:underline}.download.svelte-xrr240>a.svelte-xrr240{color:var(--link-text-color)}.download.svelte-xrr240>a.svelte-xrr240:hover{color:var(--link-text-color-hover)}.download.svelte-xrr240>a.svelte-xrr240:visited{color:var(--link-text-color-visited)}.download.svelte-xrr240>a.svelte-xrr240:active{color:var(--link-text-color-active)}.selectable.svelte-xrr240.svelte-xrr240{cursor:pointer} diff --git a/gradio/templates/cdn/assets/index.6f761b5e.css b/gradio/templates/cdn/assets/index.6f761b5e.css new file mode 100644 index 0000000000000000000000000000000000000000..9c8b2f01ad2a995484c0043658d34e4f2ec92dd5 --- /dev/null +++ b/gradio/templates/cdn/assets/index.6f761b5e.css @@ -0,0 +1 @@ +.hl.svelte-y52025+.hl.svelte-y52025{margin-left:var(--size-1)}.textspan.svelte-y52025:last-child>.label.svelte-y52025{margin-right:0}.category-legend.svelte-y52025.svelte-y52025{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--size-7);margin-bottom:var(--size-2);color:#000}.category-label.svelte-y52025.svelte-y52025{cursor:pointer;border-radius:var(--radius-xs);padding-right:var(--size-2);padding-left:var(--size-2);font-weight:var(--weight-semibold)}.color-legend.svelte-y52025.svelte-y52025{display:flex;justify-content:space-between;margin-top:var(--size-7);margin-bottom:var(--size-3);border-radius:var(--radius-xs);background:linear-gradient(to right,var(--color-purple),rgba(255,255,255,0),var(--color-red));padding:var(--size-1) var(--size-2);font-weight:var(--weight-semibold)}.textfield.svelte-y52025.svelte-y52025{box-sizing:border-box;border-radius:var(--radius-xs);background:var(--background-fill-primary);background-color:transparent;padding:var(--block-padding);max-width:var(--size-full);line-height:var(--scale-4);word-break:break-all}.textspan.svelte-y52025.svelte-y52025{transition:.15s;border-radius:var(--radius-xs);padding-top:2.5px;padding-right:var(--size-1);padding-bottom:3.5px;padding-left:var(--size-1);color:#000}.label.svelte-y52025.svelte-y52025{transition:.15s;margin-top:1px;margin-right:calc(var(--size-1) * -1);border-radius:var(--radius-xs);padding:1px 5px;color:var(--body-text-color);color:#fff;font-weight:var(--weight-bold);font-size:var(--text-sm);text-transform:uppercase}.text.svelte-y52025.svelte-y52025{color:#000}.score-text.svelte-y52025 .text.svelte-y52025{color:var(--body-text-color)}.score-text.svelte-y52025.svelte-y52025{margin-right:var(--size-1);padding:var(--size-1)}.no-cat.svelte-y52025.svelte-y52025,.no-label.svelte-y52025.svelte-y52025{color:var(--body-text-color)}.selectable.svelte-y52025.svelte-y52025{cursor:pointer} diff --git a/gradio/templates/cdn/assets/index.722bec8b.css b/gradio/templates/cdn/assets/index.722bec8b.css new file mode 100644 index 0000000000000000000000000000000000000000..c236a2a8db98e52bfd1f2982d0a8f6dada9a5bb0 --- /dev/null +++ b/gradio/templates/cdn/assets/index.722bec8b.css @@ -0,0 +1 @@ +div.svelte-1oo81b7>*:not(.absolute){border-radius:0!important}div.svelte-1oo81b7>*:first-child{border-top-right-radius:var(--radius-lg)!important;border-top-left-radius:var(--radius-lg)!important}div.svelte-1oo81b7>*:last-child{border-top-right-radius:var(--radius-lg)!important;border-top-left-radius:var(--radius-lg)!important}div.svelte-1oo81b7>*+*:not(.absolute){border-top:none!important} diff --git a/gradio/templates/cdn/assets/index.77915823.js b/gradio/templates/cdn/assets/index.77915823.js new file mode 100644 index 0000000000000000000000000000000000000000..70117ca1ac012ac78f75af1aa53d8fd12da26b35 --- /dev/null +++ b/gradio/templates/cdn/assets/index.77915823.js @@ -0,0 +1,2 @@ +import{a7 as s}from"./index.7a68216a.js";const o=["static"];export{s as Component,o as modes}; +//# sourceMappingURL=index.77915823.js.map diff --git a/gradio/templates/cdn/assets/index.77915823.js.map b/gradio/templates/cdn/assets/index.77915823.js.map new file mode 100644 index 0000000000000000000000000000000000000000..b639f0e905cd8fcd12eb5d3efbb6d73dd37cdd2a --- /dev/null +++ b/gradio/templates/cdn/assets/index.77915823.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.77915823.js","sources":["../../../../ui/packages/app/src/components/StatusTracker/index.ts"],"sourcesContent":["export { default as Component } from \"./StatusTracker.svelte\";\nexport const modes = [\"static\"];\n"],"names":[],"mappings":"8CACa,GAAQ,CAAC,QAAQ"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.7a68216a.js b/gradio/templates/cdn/assets/index.7a68216a.js new file mode 100644 index 0000000000000000000000000000000000000000..13bf4e7ebaa3afe31dc29817a90aaca6f534a704 --- /dev/null +++ b/gradio/templates/cdn/assets/index.7a68216a.js @@ -0,0 +1,16 @@ +const VERSION_RE = new RegExp("3.23.0/", "g");function import_fix(mod, base) {const url = new URL(mod, base); return import(`https://gradio.s3-us-west-2.amazonaws.com/3.23.0/${url.pathname?.startsWith('/') ? url.pathname.substring(1).replace(VERSION_RE, "") : url.pathname.replace(VERSION_RE, "")}`);}const rr=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))o(n);new MutationObserver(n=>{for(const s of n)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function r(n){const s={};return n.integrity&&(s.integrity=n.integrity),n.referrerpolicy&&(s.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?s.credentials="include":n.crossorigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(n){if(n.ep)return;n.ep=!0;const s=r(n);fetch(n.href,s)}};rr();var Te={},we={},ot={exports:{}},O=String,Pt=function(){return{isColorSupported:!1,reset:O,bold:O,dim:O,italic:O,underline:O,inverse:O,hidden:O,strikethrough:O,black:O,red:O,green:O,yellow:O,blue:O,magenta:O,cyan:O,white:O,gray:O,bgBlack:O,bgRed:O,bgGreen:O,bgYellow:O,bgBlue:O,bgMagenta:O,bgCyan:O,bgWhite:O}};ot.exports=Pt();ot.exports.createColors=Pt;Object.defineProperty(we,"__esModule",{value:!0});we.dim=nr;we.default=void 0;var ne=or(ot.exports);function or(e){return e&&e.__esModule?e:{default:e}}let lt=new Set;function Ve(e,t,r){typeof process<"u"&&{}.JEST_WORKER_ID||r&<.has(r)||(r&<.add(r),console.warn(""),t.forEach(o=>console.warn(e,"-",o)))}function nr(e){return ne.default.dim(e)}var ir={info(e,t){Ve(ne.default.bold(ne.default.cyan("info")),...Array.isArray(e)?[e]:[t,e])},warn(e,t){Ve(ne.default.bold(ne.default.yellow("warn")),...Array.isArray(e)?[e]:[t,e])},risk(e,t){Ve(ne.default.bold(ne.default.magenta("risk")),...Array.isArray(e)?[e]:[t,e])}};we.default=ir;Object.defineProperty(Te,"__esModule",{value:!0});Te.default=void 0;var sr=ar(we);function ar(e){return e&&e.__esModule?e:{default:e}}function pe({version:e,from:t,to:r}){sr.default.warn(`${t}-color-renamed`,[`As of Tailwind CSS ${e}, \`${t}\` has been renamed to \`${r}\`.`,"Update your configuration file to silence this warning."])}var lr={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843"},rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337"},get lightBlue(){return pe({version:"v2.2",from:"lightBlue",to:"sky"}),this.sky},get warmGray(){return pe({version:"v3.0",from:"warmGray",to:"stone"}),this.stone},get trueGray(){return pe({version:"v3.0",from:"trueGray",to:"neutral"}),this.neutral},get coolGray(){return pe({version:"v3.0",from:"coolGray",to:"gray"}),this.gray},get blueGray(){return pe({version:"v3.0",from:"blueGray",to:"slate"}),this.slate}};Te.default=lr;let We=Te;var ct=(We.__esModule?We:{default:We}).default;const No=["red","green","blue","yellow","purple","teal","orange","cyan","lime","pink"],cr=[{color:"red",primary:600,secondary:100},{color:"green",primary:600,secondary:100},{color:"blue",primary:600,secondary:100},{color:"yellow",primary:500,secondary:100},{color:"purple",primary:600,secondary:100},{color:"teal",primary:600,secondary:100},{color:"orange",primary:600,secondary:100},{color:"cyan",primary:600,secondary:100},{color:"lime",primary:500,secondary:100},{color:"pink",primary:600,secondary:100}],qo=cr.reduce((e,{color:t,primary:r,secondary:o})=>({...e,[t]:{primary:ct[t][r],secondary:ct[t][o]}}),{}),fr="modulepreload",ft={},ur="https://gradio.s3-us-west-2.amazonaws.com/3.23.0/",ut=function(t,r){return!r||r.length===0?t():Promise.all(r.map(o=>{if(o=`${ur}${o}`,o in ft)return;ft[o]=!0;const n=o.endsWith(".css"),s=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${s}`))return;const i=document.createElement("link");if(i.rel=n?"stylesheet":fr,n||(i.as="script",i.crossOrigin=""),i.href=o,document.head.appendChild(i),n)return new Promise((a,c)=>{i.addEventListener("load",a),i.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())};function F(){}const nt=e=>e;function jt(e,t){for(const r in t)e[r]=t[r];return e}function Rt(e){return e()}function dt(){return Object.create(null)}function te(e){e.forEach(Rt)}function ye(e){return typeof e=="function"}function ve(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}let xe;function dr(e,t){return xe||(xe=document.createElement("a")),xe.href=t,e===xe.href}function pr(e){return Object.keys(e).length===0}function Ft(e,...t){if(e==null)return F;const r=e.subscribe(...t);return r.unsubscribe?()=>r.unsubscribe():r}function Ce(e,t,r){e.$$.on_destroy.push(Ft(t,r))}function Tt(e,t,r,o){if(e){const n=It(e,t,r,o);return e[0](n)}}function It(e,t,r,o){return e[1]&&o?jt(r.ctx.slice(),e[1](o(t))):r.ctx}function Dt(e,t,r,o){if(e[2]&&o){const n=e[2](o(r));if(t.dirty===void 0)return n;if(typeof n=="object"){const s=[],i=Math.max(t.dirty.length,n.length);for(let a=0;a32){const t=[],r=e.ctx.length/32;for(let o=0;owindow.performance.now():()=>Date.now(),it=Gt?e=>requestAnimationFrame(e):F;const ce=new Set;function Vt(e){ce.forEach(t=>{t.c(e)||(ce.delete(t),t.f())}),ce.size!==0&&it(Vt)}function st(e){let t;return ce.size===0&&it(Vt),{promise:new Promise(r=>{ce.add(t={c:e,f:r})}),abort(){ce.delete(t)}}}function z(e,t){e.appendChild(t)}function Wt(e){if(!e)return document;const t=e.getRootNode?e.getRootNode():e.ownerDocument;return t&&t.host?t:e.ownerDocument}function gr(e){const t=C("style");return mr(Wt(e),t),t.sheet}function mr(e,t){z(e.head||e,t)}function v(e,t,r){e.insertBefore(t,r||null)}function w(e){e.parentNode.removeChild(e)}function Ht(e,t){for(let r=0;re.removeEventListener(t,r,o)}function Oo(e){return function(t){return t.preventDefault(),e.call(this,t)}}function hr(e){return function(t){return t.stopPropagation(),e.call(this,t)}}function _(e,t,r){r==null?e.removeAttribute(t):e.getAttribute(t)!==r&&e.setAttribute(t,r)}function Po(e,t){const r=Object.getOwnPropertyDescriptors(e.__proto__);for(const o in t)t[o]==null?e.removeAttribute(o):o==="style"?e.style.cssText=t[o]:o==="__value"?e.value=e[o]=t[o]:r[o]&&r[o].set?e[o]=t[o]:_(e,o,t[o])}function jo(e){return e===""?null:+e}function _r(e){return Array.from(e.childNodes)}function H(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function Ro(e,t){e.value=t??""}function G(e,t,r,o){r===null?e.style.removeProperty(t):e.style.setProperty(t,r,o?"important":"")}let Ae;function br(){if(Ae===void 0){Ae=!1;try{typeof window<"u"&&window.parent&&window.parent.document}catch{Ae=!0}}return Ae}function Fo(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");const o=C("iframe");o.setAttribute("style","display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;"),o.setAttribute("aria-hidden","true"),o.tabIndex=-1;const n=br();let s;return n?(o.src="data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n else\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { stylesheet } = info;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n info.rules = {};\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n else if (callback) {\n callback();\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst ATTR_REGEX = /[&\"]/g;\nconst CONTENT_REGEX = /[&<]/g;\n/**\n * Note: this method is performance sensitive and has been optimized\n * https://github.com/sveltejs/svelte/pull/5701\n */\nfunction escape(value, is_attr = false) {\n const str = String(value);\n const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n pattern.lastIndex = 0;\n let escaped = '';\n let last = 0;\n while (pattern.test(str)) {\n const i = pattern.lastIndex - 1;\n const ch = str[i];\n escaped += str.substring(last, i) + (ch === '&' ? '&' : (ch === '\"' ? '"' : '<'));\n last = i + 1;\n }\n return escaped + str.substring(last);\n}\nfunction escape_attribute_value(value) {\n // keep booleans, null, and undefined for the sake of `spread`\n const should_escape = typeof value === 'string' || (value && typeof value === 'object');\n return should_escape ? escape(value, true) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape(value, true)}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${style_object[key]};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.49.0' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error(' expects \"this\" attribute to be a string.');\n }\n}\nfunction validate_void_dynamic_element(tag) {\n if (tag && is_void(tag)) {\n throw new Error(` is self-closing and cannot have content.`);\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import type { Config } from \"./types\";\n\nexport function determine_protocol(endpoint: string): {\n\tws_protocol: \"ws\" | \"wss\";\n\thttp_protocol: \"http:\" | \"https:\";\n\thost: string;\n} {\n\tif (endpoint.startsWith(\"http\")) {\n\t\tconst { protocol, host } = new URL(endpoint);\n\n\t\tif (host.endsWith(\"hf.space\")) {\n\t\t\treturn {\n\t\t\t\tws_protocol: \"wss\",\n\t\t\t\thost: host,\n\t\t\t\thttp_protocol: protocol as \"http:\" | \"https:\"\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tws_protocol: protocol === \"https:\" ? \"wss\" : \"ws\",\n\t\t\t\thttp_protocol: protocol as \"http:\" | \"https:\",\n\t\t\t\thost\n\t\t\t};\n\t\t}\n\t}\n\n\t// default to secure if no protocol is provided\n\treturn {\n\t\tws_protocol: \"wss\",\n\t\thttp_protocol: \"https:\",\n\t\thost: endpoint\n\t};\n}\n\nexport const RE_SPACE_NAME = /^[^\\/]*\\/[^\\/]*$/;\nexport const RE_SPACE_DOMAIN = /.*hf\\.space\\/{0,1}$/;\nexport async function process_endpoint(app_reference: string): Promise<{\n\tspace_id: string | false;\n\thost: string;\n\tws_protocol: \"ws\" | \"wss\";\n\thttp_protocol: \"http:\" | \"https:\";\n}> {\n\tconst _app_reference = app_reference.trim();\n\n\tif (RE_SPACE_NAME.test(_app_reference)) {\n\t\tconst _host = (\n\t\t\tawait (\n\t\t\t\tawait fetch(`https://huggingface.co/api/spaces/${_app_reference}/host`)\n\t\t\t).json()\n\t\t).host;\n\t\treturn {\n\t\t\tspace_id: app_reference,\n\t\t\t...determine_protocol(_host)\n\t\t};\n\t}\n\n\tif (RE_SPACE_DOMAIN.test(_app_reference)) {\n\t\tconst { ws_protocol, http_protocol, host } =\n\t\t\tdetermine_protocol(_app_reference);\n\n\t\treturn {\n\t\t\tspace_id: host.replace(\".hf.space\", \"\"),\n\t\t\tws_protocol,\n\t\t\thttp_protocol,\n\t\t\thost\n\t\t};\n\t}\n\n\treturn {\n\t\tspace_id: false,\n\t\t...determine_protocol(_app_reference)\n\t};\n}\n\nexport function map_names_to_ids(fns: Config[\"dependencies\"]) {\n\tlet apis: Record = {};\n\n\tfns.forEach(({ api_name }, i) => {\n\t\tif (api_name) apis[api_name] = i;\n\t});\n\n\treturn apis;\n}\n\nconst RE_DISABLED_DISCUSSION =\n\t/^(?=[^]*\\b[dD]iscussions{0,1}\\b)(?=[^]*\\b[dD]isabled\\b)[^]*$/;\nexport async function discussions_enabled(space_id: string) {\n\ttry {\n\t\tconst r = await fetch(\n\t\t\t`https://huggingface.co/api/spaces/${space_id}/discussions`,\n\t\t\t{\n\t\t\t\tmethod: \"HEAD\"\n\t\t\t}\n\t\t);\n\t\tconst error = r.headers.get(\"x-error-message\");\n\n\t\tif (error && RE_DISABLED_DISCUSSION.test(error)) return false;\n\t\telse return true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n","import {\n\tprocess_endpoint,\n\tRE_SPACE_NAME,\n\tmap_names_to_ids,\n\tdiscussions_enabled\n} from \"./utils\";\n\nimport type {\n\tEventType,\n\tEventListener,\n\tListenerMap,\n\tEvent,\n\tConfig,\n\tPayload,\n\tPostResponse,\n\tUploadResponse,\n\tStatus,\n\tSpaceStatus,\n\tSpaceStatusCallback\n} from \"./types\";\n\ntype event = (\n\teventType: K,\n\tlistener: EventListener\n) => ReturnType;\ntype predict = (endpoint: string, payload: Payload) => {};\n\ntype client_return = {\n\tpredict: predict;\n\tconfig: Config;\n\ton: event;\n\toff: event;\n\tcancel: (endpoint: string, fn_index?: number) => void;\n};\n\nconst QUEUE_FULL_MSG = \"This application is too busy. Keep trying!\";\nconst BROKEN_CONNECTION_MSG = \"Connection errored out.\";\n\nexport async function post_data(\n\turl: string,\n\tbody: unknown\n): Promise<[PostResponse, number]> {\n\ttry {\n\t\tvar response = await fetch(url, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify(body),\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t} catch (e) {\n\t\treturn [{ error: BROKEN_CONNECTION_MSG }, 500];\n\t}\n\tconst output: PostResponse = await response.json();\n\treturn [output, response.status];\n}\n\nexport async function upload_files(\n\troot: string,\n\tfiles: Array\n): Promise {\n\tconst formData = new FormData();\n\tfiles.forEach((file) => {\n\t\tformData.append(\"files\", file);\n\t});\n\ttry {\n\t\tvar response = await fetch(`${root}/upload`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData\n\t\t});\n\t} catch (e) {\n\t\treturn { error: BROKEN_CONNECTION_MSG };\n\t}\n\tconst output: UploadResponse[\"files\"] = await response.json();\n\treturn { files: output };\n}\n\nexport async function client(\n\tapp_reference: string,\n\tspace_status_callback?: SpaceStatusCallback\n): Promise {\n\treturn new Promise(async (res, rej) => {\n\t\tconst return_obj = {\n\t\t\tpredict,\n\t\t\ton,\n\t\t\toff,\n\t\t\tcancel\n\t\t};\n\n\t\tconst listener_map: ListenerMap = {};\n\t\tconst { ws_protocol, http_protocol, host, space_id } =\n\t\t\tawait process_endpoint(app_reference);\n\t\tconst session_hash = Math.random().toString(36).substring(2);\n\t\tconst ws_map = new Map();\n\t\tconst last_status: Record = {};\n\t\tlet config: Config;\n\t\tlet api_map: Record = {};\n\n\t\tfunction config_success(_config: Config) {\n\t\t\tconfig = _config;\n\t\t\tapi_map = map_names_to_ids(_config?.dependencies || []);\n\t\t\treturn {\n\t\t\t\tconfig,\n\t\t\t\t...return_obj\n\t\t\t};\n\t\t}\n\n\t\tfunction on(eventType: K, listener: EventListener) {\n\t\t\tconst narrowed_listener_map: ListenerMap = listener_map;\n\t\t\tlet listeners = narrowed_listener_map[eventType] || [];\n\t\t\tnarrowed_listener_map[eventType] = listeners;\n\t\t\tlisteners?.push(listener);\n\n\t\t\treturn { ...return_obj, config };\n\t\t}\n\n\t\tfunction off(\n\t\t\teventType: K,\n\t\t\tlistener: EventListener\n\t\t) {\n\t\t\tconst narrowed_listener_map: ListenerMap = listener_map;\n\t\t\tlet listeners = narrowed_listener_map[eventType] || [];\n\t\t\tlisteners = listeners?.filter((l) => l !== listener);\n\t\t\tnarrowed_listener_map[eventType] = listeners;\n\n\t\t\treturn { ...return_obj, config };\n\t\t}\n\n\t\tfunction cancel(endpoint: string, fn_index?: number) {\n\t\t\tconst _index =\n\t\t\t\ttypeof fn_index === \"number\" ? fn_index : api_map[endpoint];\n\n\t\t\tfire_event({\n\t\t\t\ttype: \"status\",\n\t\t\t\tendpoint,\n\t\t\t\tfn_index: _index,\n\t\t\t\tstatus: \"complete\",\n\t\t\t\tqueue: false\n\t\t\t});\n\n\t\t\tws_map.get(_index)?.close();\n\t\t}\n\n\t\tfunction fire_event(event: Event) {\n\t\t\tconst narrowed_listener_map: ListenerMap = listener_map;\n\t\t\tlet listeners = narrowed_listener_map[event.type] || [];\n\t\t\tlisteners?.forEach((l) => l(event));\n\t\t}\n\n\t\tasync function handle_space_sucess(status: SpaceStatus) {\n\t\t\tif (space_status_callback) space_status_callback(status);\n\t\t\tif (status.status === \"running\")\n\t\t\t\ttry {\n\t\t\t\t\tconsole.log(host);\n\t\t\t\t\tconfig = await resolve_config(`${http_protocol}//${host}`);\n\t\t\t\t\tres(config_success(config));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (space_status_callback) {\n\t\t\t\t\t\tspace_status_callback({\n\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\tmessage: \"Could not load this space.\",\n\t\t\t\t\t\t\tload_status: \"error\",\n\t\t\t\t\t\t\tdetail: \"NOT_FOUND\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconfig = await resolve_config(`${http_protocol}//${host}`);\n\t\t\tres(config_success(config));\n\t\t} catch (e) {\n\t\t\tif (space_id) {\n\t\t\t\tcheck_space_status(\n\t\t\t\t\tspace_id,\n\t\t\t\t\tRE_SPACE_NAME.test(space_id) ? \"space_name\" : \"subdomain\",\n\t\t\t\t\thandle_space_sucess\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (space_status_callback)\n\t\t\t\t\tspace_status_callback({\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tmessage: \"Could not load this space.\",\n\t\t\t\t\t\tload_status: \"error\",\n\t\t\t\t\t\tdetail: \"NOT_FOUND\"\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tfunction make_predict(endpoint: string, payload: Payload) {\n\t\t\treturn new Promise((res, rej) => {\n\t\t\t\tconst trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n\t\t\t\tlet fn_index =\n\t\t\t\t\ttypeof payload.fn_index === \"number\"\n\t\t\t\t\t\t? payload.fn_index\n\t\t\t\t\t\t: api_map[trimmed_endpoint];\n\n\t\t\t\tif (skip_queue(fn_index, config)) {\n\t\t\t\t\tfire_event({\n\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\tfn_index\n\t\t\t\t\t});\n\n\t\t\t\t\tpost_data(\n\t\t\t\t\t\t`${http_protocol}//${host + config.path}/run${\n\t\t\t\t\t\t\tendpoint.startsWith(\"/\") ? endpoint : `/${endpoint}`\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...payload,\n\t\t\t\t\t\t\tsession_hash\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t\t\t.then(([output, status_code]) => {\n\t\t\t\t\t\t\tif (status_code == 200) {\n\t\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\t\tstatus: \"complete\",\n\t\t\t\t\t\t\t\t\teta: output.average_duration,\n\t\t\t\t\t\t\t\t\tqueue: false\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\t\tdata: output.data\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\t\tmessage: output.error,\n\t\t\t\t\t\t\t\t\tqueue: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\t\tmessage: e.message,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\tqueue: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthrow new Error(e.message);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfire_event({\n\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\tfn_index\n\t\t\t\t\t});\n\n\t\t\t\t\tconst ws_endpoint = `${ws_protocol}://${\n\t\t\t\t\t\thost + config.path\n\t\t\t\t\t}/queue/join`;\n\n\t\t\t\t\tconst websocket = new WebSocket(ws_endpoint);\n\n\t\t\t\t\tws_map.set(fn_index, websocket);\n\t\t\t\t\twebsocket.onclose = (evt) => {\n\t\t\t\t\t\tif (!evt.wasClean) {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\t\tmessage: BROKEN_CONNECTION_MSG,\n\t\t\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\twebsocket.onmessage = function (event) {\n\t\t\t\t\t\tconst _data = JSON.parse(event.data);\n\t\t\t\t\t\tconst { type, status, data } = handle_message(\n\t\t\t\t\t\t\t_data,\n\t\t\t\t\t\t\tlast_status[fn_index]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (type === \"update\" && status) {\n\t\t\t\t\t\t\t// call 'status' listeners\n\t\t\t\t\t\t\tfire_event({ type: \"status\", endpoint, fn_index, ...status });\n\t\t\t\t\t\t\tif (status.status === \"error\") {\n\t\t\t\t\t\t\t\twebsocket.close();\n\t\t\t\t\t\t\t\trej(status);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === \"hash\") {\n\t\t\t\t\t\t\twebsocket.send(JSON.stringify({ fn_index, session_hash }));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if (type === \"data\") {\n\t\t\t\t\t\t\twebsocket.send(JSON.stringify({ ...payload, session_hash }));\n\t\t\t\t\t\t} else if (type === \"complete\") {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t...status,\n\t\t\t\t\t\t\t\tstatus: status?.status!,\n\t\t\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\twebsocket.close();\n\t\t\t\t\t\t} else if (type === \"generating\") {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t...status,\n\t\t\t\t\t\t\t\tstatus: status?.status!,\n\t\t\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\t\t\tdata: data.data,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tres({ data: data.data });\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Run a prediction.\n\t\t * @param endpoint - The prediction endpoint to use.\n\t\t * @param status_callback - A function that is called with the current status of the prediction immediately and every time it updates.\n\t\t * @return Returns the data for the prediction or an error message.\n\t\t */\n\t\tfunction predict(endpoint: string, payload: Payload) {\n\t\t\treturn make_predict(endpoint, payload);\n\t\t}\n\t});\n}\n\nfunction skip_queue(id: number, config: Config) {\n\treturn (\n\t\t!(config?.dependencies?.[id].queue === null\n\t\t\t? config.enable_queue\n\t\t\t: config?.dependencies?.[id].queue) || false\n\t);\n}\n\nasync function resolve_config(endpoint?: string): Promise {\n\tif (window.gradio_config && location.origin !== \"http://localhost:9876\") {\n\t\tconst path = window.gradio_config.root;\n\t\tconst config = window.gradio_config;\n\t\tconfig.root = endpoint + config.root;\n\t\treturn { ...config, path: path };\n\t} else if (endpoint) {\n\t\tlet response = await fetch(`${endpoint}/config`);\n\n\t\tif (response.status === 200) {\n\t\t\tconst config = await response.json();\n\t\t\tconfig.path = config.path ?? \"\";\n\t\t\tconfig.root = endpoint;\n\t\t\treturn config;\n\t\t} else {\n\t\t\tthrow new Error(\"Could not get config.\");\n\t\t}\n\t}\n\n\tthrow new Error(\"No config or app endpoint found\");\n}\n\nasync function check_space_status(\n\tid: string,\n\ttype: \"subdomain\" | \"space_name\",\n\tspace_status_callback: SpaceStatusCallback\n) {\n\tlet endpoint =\n\t\ttype === \"subdomain\"\n\t\t\t? `https://huggingface.co/api/spaces/by-subdomain/${id}`\n\t\t\t: `https://huggingface.co/api/spaces/${id}`;\n\tlet response;\n\tlet _status;\n\ttry {\n\t\tresponse = await fetch(endpoint);\n\t\t_status = response.status;\n\t\tif (_status !== 200) {\n\t\t\tthrow new Error();\n\t\t}\n\t\tresponse = await response.json();\n\t} catch (e) {\n\t\tspace_status_callback({\n\t\t\tstatus: \"error\",\n\t\t\tload_status: \"error\",\n\t\t\tmessage: \"Could not get space status\",\n\t\t\tdetail: \"NOT_FOUND\"\n\t\t});\n\t\treturn;\n\t}\n\n\tif (!response || _status !== 200) return;\n\tconst {\n\t\truntime: { stage },\n\t\tid: space_name\n\t} = response;\n\n\tswitch (stage) {\n\t\tcase \"STOPPED\":\n\t\tcase \"SLEEPING\":\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"sleeping\",\n\t\t\t\tload_status: \"pending\",\n\t\t\t\tmessage: \"Space is asleep. Waking it up...\",\n\t\t\t\tdetail: stage\n\t\t\t});\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tcheck_space_status(id, type, space_status_callback);\n\t\t\t}, 1000);\n\t\t\tbreak;\n\t\t// poll for status\n\t\tcase \"RUNNING\":\n\t\tcase \"RUNNING_BUILDING\":\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"running\",\n\t\t\t\tload_status: \"complete\",\n\t\t\t\tmessage: \"\",\n\t\t\t\tdetail: stage\n\t\t\t});\n\t\t\t// load_config(source);\n\t\t\t// launch\n\t\t\tbreak;\n\t\tcase \"BUILDING\":\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"building\",\n\t\t\t\tload_status: \"pending\",\n\t\t\t\tmessage: \"Space is building...\",\n\t\t\t\tdetail: stage\n\t\t\t});\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tcheck_space_status(id, type, space_status_callback);\n\t\t\t}, 1000);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"space_error\",\n\t\t\t\tload_status: \"error\",\n\t\t\t\tmessage: \"This space is experiencing an issue.\",\n\t\t\t\tdetail: stage,\n\t\t\t\tdiscussions_enabled: await discussions_enabled(space_name)\n\t\t\t});\n\t\t\tbreak;\n\t}\n}\n\nfunction handle_message(\n\tdata: any,\n\tlast_status: Status[\"status\"]\n): {\n\ttype: \"hash\" | \"data\" | \"update\" | \"complete\" | \"generating\" | \"none\";\n\tdata?: any;\n\tstatus?: Status;\n} {\n\tconst queue = true;\n\tswitch (data.msg) {\n\t\tcase \"send_data\":\n\t\t\treturn { type: \"data\" };\n\t\tcase \"send_hash\":\n\t\t\treturn { type: \"hash\" };\n\t\tcase \"queue_full\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tmessage: QUEUE_FULL_MSG,\n\t\t\t\t\tstatus: \"error\"\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"estimation\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tstatus: last_status || \"pending\",\n\t\t\t\t\tsize: data.queue_size,\n\t\t\t\t\tposition: data.rank,\n\t\t\t\t\teta: data.rank_eta\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"progress\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tprogress: data.progress_data\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"process_generating\":\n\t\t\treturn {\n\t\t\t\ttype: \"generating\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tmessage: !data.success ? data.output.error : null,\n\t\t\t\t\tstatus: data.success ? \"generating\" : \"error\",\n\t\t\t\t\tprogress: data.progress_data,\n\t\t\t\t\teta: data.average_duration\n\t\t\t\t},\n\t\t\t\tdata: data.success ? data.output : null\n\t\t\t};\n\t\tcase \"process_completed\":\n\t\t\treturn {\n\t\t\t\ttype: \"complete\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tmessage: !data.success ? data.output.error : undefined,\n\t\t\t\t\tstatus: data.success ? \"complete\" : \"error\",\n\t\t\t\t\tprogress: data.progress_data,\n\t\t\t\t\teta: data.output.average_duration\n\t\t\t\t},\n\t\t\t\tdata: data.success ? data.output : null\n\t\t\t};\n\t\tcase \"process_starts\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tsize: data.rank,\n\t\t\t\t\tposition: 0\n\t\t\t\t}\n\t\t\t};\n\t}\n\n\treturn { type: \"none\", status: { status: \"error\", queue } };\n}\n","export default \"__VITE_ASSET__a79177ad__\"","\n\n\n\t
\n\t\t\n\t
\n\t{#if display && space && info}\n\t\t
\n\t{/if}\n\n\n\n","// import mime from \"mime-types\";\n\nexport const playable = (): boolean => {\n\t// let video_element = document.createElement(\"video\");\n\t// let mime_type = mime.lookup(filename);\n\t// return video_element.canPlayType(mime_type) != \"\";\n\treturn true; // FIX BEFORE COMMIT - mime import causing issues\n};\n\nexport const deepCopy = (obj: T): T => {\n\treturn JSON.parse(JSON.stringify(obj));\n};\n\nexport function randInt(min: number, max: number): number {\n\treturn Math.floor(Math.random() * (max - min) + min);\n}\n\nexport const getNextColor = (index: number, alpha: number = 1): string => {\n\tlet default_colors = [\n\t\t[255, 99, 132],\n\t\t[54, 162, 235],\n\t\t[240, 176, 26],\n\t\t[153, 102, 255],\n\t\t[75, 192, 192],\n\t\t[255, 159, 64],\n\t\t[194, 88, 74],\n\t\t[44, 102, 219],\n\t\t[44, 163, 23],\n\t\t[191, 46, 217],\n\t\t[160, 162, 162],\n\t\t[163, 151, 27]\n\t];\n\tif (index < default_colors.length) {\n\t\tvar color_set = default_colors[index];\n\t} else {\n\t\tvar color_set = [randInt(64, 196), randInt(64, 196), randInt(64, 196)];\n\t}\n\treturn (\n\t\t\"rgba(\" +\n\t\tcolor_set[0] +\n\t\t\", \" +\n\t\tcolor_set[1] +\n\t\t\", \" +\n\t\tcolor_set[2] +\n\t\t\", \" +\n\t\talpha +\n\t\t\")\"\n\t);\n};\n\nexport const prettyBytes = (bytes: number): string => {\n\tlet units = [\"B\", \"KB\", \"MB\", \"GB\", \"PB\"];\n\tlet i = 0;\n\twhile (bytes > 1024) {\n\t\tbytes /= 1024;\n\t\ti++;\n\t}\n\tlet unit = units[i];\n\treturn bytes.toFixed(1) + \" \" + unit;\n};\n\nexport const prettySI = (num: number): string => {\n\tlet units = [\"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\"];\n\tlet i = 0;\n\twhile (num > 1000 && i < units.length - 1) {\n\t\tnum /= 1000;\n\t\ti++;\n\t}\n\tlet unit = units[i];\n\treturn (Number.isInteger(num) ? num : num.toFixed(1)) + unit;\n};\n","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n let len = node.getTotalLength();\n const style = getComputedStyle(node);\n if (style.strokeLinecap !== 'butt') {\n len += parseInt(style.strokeWidth);\n }\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","import { writable, get } from \"svelte/store\";\n\nexport interface LoadingStatus {\n\teta: number | null;\n\tstatus: \"pending\" | \"error\" | \"complete\" | \"generating\";\n\tqueue: boolean;\n\tqueue_position: number | null;\n\tqueue_size?: number;\n\tfn_index: number;\n\tmessage?: string | null;\n\tscroll_to_output?: boolean;\n\tvisible?: boolean;\n\tprogress?: Array<{\n\t\tprogress: number | null;\n\t\tindex: number | null;\n\t\tlength: number | null;\n\t\tunit: string | null;\n\t\tdesc: string | null;\n\t}>;\n}\n\nexport type LoadingStatusCollection = Record;\n\nexport function create_loading_status_store() {\n\tconst store = writable({});\n\n\tconst fn_inputs: Array> = [];\n\tconst fn_outputs: Array> = [];\n\tconst pending_outputs = new Map();\n\tconst pending_inputs = new Map();\n\n\tconst inputs_to_update = new Map();\n\tconst fn_status: Array = [];\n\n\tfunction update({\n\t\tfn_index,\n\t\tstatus,\n\t\tqueue = true,\n\t\tsize,\n\t\tposition = null,\n\t\teta = null,\n\t\tmessage = null,\n\t\tprogress\n\t}: {\n\t\tfn_index: LoadingStatus[\"fn_index\"];\n\t\tstatus: LoadingStatus[\"status\"];\n\t\tqueue?: LoadingStatus[\"queue\"];\n\t\tsize?: LoadingStatus[\"queue_size\"];\n\t\tposition?: LoadingStatus[\"queue_position\"];\n\t\teta?: LoadingStatus[\"eta\"];\n\t\tmessage?: LoadingStatus[\"message\"];\n\t\tprogress?: LoadingStatus[\"progress\"];\n\t}) {\n\t\tconst outputs = fn_outputs[fn_index];\n\t\tconst inputs = fn_inputs[fn_index];\n\t\tconst last_status = fn_status[fn_index];\n\n\t\tconst outputs_to_update = outputs.map((id) => {\n\t\t\tlet new_status: LoadingStatus[\"status\"];\n\n\t\t\tconst pending_count = pending_outputs.get(id) || 0;\n\n\t\t\t// from (pending -> error) | complete - decrement pending count\n\t\t\tif (last_status === \"pending\" && status !== \"pending\") {\n\t\t\t\tlet new_count = pending_count - 1;\n\n\t\t\t\tpending_outputs.set(id, new_count < 0 ? 0 : new_count);\n\n\t\t\t\tnew_status = new_count > 0 ? \"pending\" : status;\n\n\t\t\t\t// from pending -> pending - do nothing\n\t\t\t} else if (last_status === \"pending\" && status === \"pending\") {\n\t\t\t\tnew_status = \"pending\";\n\n\t\t\t\t// (error | complete) -> pending - - increment pending count\n\t\t\t} else if (last_status !== \"pending\" && status === \"pending\") {\n\t\t\t\tnew_status = \"pending\";\n\t\t\t\tpending_outputs.set(id, pending_count + 1);\n\t\t\t} else {\n\t\t\t\tnew_status = status;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tqueue_position: position,\n\t\t\t\tqueue_size: size,\n\t\t\t\teta: eta,\n\t\t\t\tstatus: new_status,\n\t\t\t\tmessage: message,\n\t\t\t\tprogress: progress\n\t\t\t};\n\t\t});\n\n\t\tinputs.map((id) => {\n\t\t\tconst pending_count = pending_inputs.get(id) || 0;\n\n\t\t\t// from (pending -> error) | complete - decrement pending count\n\t\t\tif (last_status === \"pending\" && status !== \"pending\") {\n\t\t\t\tlet new_count = pending_count - 1;\n\t\t\t\tpending_inputs.set(id, new_count < 0 ? 0 : new_count);\n\t\t\t\tinputs_to_update.set(id, status);\n\t\t\t} else if (last_status !== \"pending\" && status === \"pending\") {\n\t\t\t\tpending_inputs.set(id, pending_count + 1);\n\t\t\t\tinputs_to_update.set(id, status);\n\t\t\t} else {\n\t\t\t\tinputs_to_update.delete(id);\n\t\t\t}\n\t\t});\n\n\t\tstore.update((outputs: LoadingStatusCollection) => {\n\t\t\toutputs_to_update.forEach(\n\t\t\t\t({\n\t\t\t\t\tid,\n\t\t\t\t\tqueue_position,\n\t\t\t\t\tqueue_size,\n\t\t\t\t\teta,\n\t\t\t\t\tstatus,\n\t\t\t\t\tmessage,\n\t\t\t\t\tprogress\n\t\t\t\t}) => {\n\t\t\t\t\toutputs[id] = {\n\t\t\t\t\t\tqueue: queue,\n\t\t\t\t\t\tqueue_size: queue_size,\n\t\t\t\t\t\tqueue_position: queue_position,\n\t\t\t\t\t\teta: eta,\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tprogress,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tfn_index\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn outputs;\n\t\t});\n\t\tfn_status[fn_index] = status;\n\t}\n\n\tfunction register(\n\t\tindex: number,\n\t\tinputs: Array,\n\t\toutputs: Array\n\t) {\n\t\tfn_inputs[index] = inputs;\n\t\tfn_outputs[index] = outputs;\n\t}\n\n\treturn {\n\t\tupdate,\n\t\tregister,\n\t\tsubscribe: store.subscribe,\n\t\tget_status_for_fn(i: number) {\n\t\t\treturn fn_status[i];\n\t\t},\n\t\tget_inputs_to_update() {\n\t\t\treturn inputs_to_update;\n\t\t}\n\t};\n}\n\nexport type LoadingStatusType = ReturnType;\nexport const app_state = writable({ autoscroll: false });\n","import { writable } from '../store/index.mjs';\nimport { now, loop, assign } from '../internal/index.mjs';\nimport { linear } from '../easing/index.mjs';\n\nfunction is_date(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n}\n\nfunction tick_spring(ctx, last_value, current_value, target_value) {\n if (typeof current_value === 'number' || is_date(current_value)) {\n // @ts-ignore\n const delta = target_value - current_value;\n // @ts-ignore\n const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0\n const spring = ctx.opts.stiffness * delta;\n const damper = ctx.opts.damping * velocity;\n const acceleration = (spring - damper) * ctx.inv_mass;\n const d = (velocity + acceleration) * ctx.dt;\n if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) {\n return target_value; // settled\n }\n else {\n ctx.settled = false; // signal loop to keep ticking\n // @ts-ignore\n return is_date(current_value) ?\n new Date(current_value.getTime() + d) : current_value + d;\n }\n }\n else if (Array.isArray(current_value)) {\n // @ts-ignore\n return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i]));\n }\n else if (typeof current_value === 'object') {\n const next_value = {};\n for (const k in current_value) {\n // @ts-ignore\n next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]);\n }\n // @ts-ignore\n return next_value;\n }\n else {\n throw new Error(`Cannot spring ${typeof current_value} values`);\n }\n}\nfunction spring(value, opts = {}) {\n const store = writable(value);\n const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts;\n let last_time;\n let task;\n let current_token;\n let last_value = value;\n let target_value = value;\n let inv_mass = 1;\n let inv_mass_recovery_rate = 0;\n let cancel_task = false;\n function set(new_value, opts = {}) {\n target_value = new_value;\n const token = current_token = {};\n if (value == null || opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) {\n cancel_task = true; // cancel any running animation\n last_time = now();\n last_value = new_value;\n store.set(value = target_value);\n return Promise.resolve();\n }\n else if (opts.soft) {\n const rate = opts.soft === true ? .5 : +opts.soft;\n inv_mass_recovery_rate = 1 / (rate * 60);\n inv_mass = 0; // infinite mass, unaffected by spring forces\n }\n if (!task) {\n last_time = now();\n cancel_task = false;\n task = loop(now => {\n if (cancel_task) {\n cancel_task = false;\n task = null;\n return false;\n }\n inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1);\n const ctx = {\n inv_mass,\n opts: spring,\n settled: true,\n dt: (now - last_time) * 60 / 1000\n };\n const next_value = tick_spring(ctx, last_value, value, target_value);\n last_time = now;\n last_value = value;\n store.set(value = next_value);\n if (ctx.settled) {\n task = null;\n }\n return !ctx.settled;\n });\n }\n return new Promise(fulfil => {\n task.promise.then(() => {\n if (token === current_token)\n fulfil();\n });\n });\n }\n const spring = {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe,\n stiffness,\n damping,\n precision\n };\n return spring;\n}\n\nfunction get_interpolator(a, b) {\n if (a === b || a !== a)\n return () => a;\n const type = typeof a;\n if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n throw new Error('Cannot interpolate values of different type');\n }\n if (Array.isArray(a)) {\n const arr = b.map((bi, i) => {\n return get_interpolator(a[i], bi);\n });\n return t => arr.map(fn => fn(t));\n }\n if (type === 'object') {\n if (!a || !b)\n throw new Error('Object cannot be null');\n if (is_date(a) && is_date(b)) {\n a = a.getTime();\n b = b.getTime();\n const delta = b - a;\n return t => new Date(a + t * delta);\n }\n const keys = Object.keys(b);\n const interpolators = {};\n keys.forEach(key => {\n interpolators[key] = get_interpolator(a[key], b[key]);\n });\n return t => {\n const result = {};\n keys.forEach(key => {\n result[key] = interpolators[key](t);\n });\n return result;\n };\n }\n if (type === 'number') {\n const delta = b - a;\n return t => a + t * delta;\n }\n throw new Error(`Cannot interpolate ${type} values`);\n}\nfunction tweened(value, defaults = {}) {\n const store = writable(value);\n let task;\n let target_value = value;\n function set(new_value, opts) {\n if (value == null) {\n store.set(value = new_value);\n return Promise.resolve();\n }\n target_value = new_value;\n let previous_task = task;\n let started = false;\n let { delay = 0, duration = 400, easing = linear, interpolate = get_interpolator } = assign(assign({}, defaults), opts);\n if (duration === 0) {\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n store.set(value = target_value);\n return Promise.resolve();\n }\n const start = now() + delay;\n let fn;\n task = loop(now => {\n if (now < start)\n return true;\n if (!started) {\n fn = interpolate(value, new_value);\n if (typeof duration === 'function')\n duration = duration(value, new_value);\n started = true;\n }\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n const elapsed = now - start;\n if (elapsed > duration) {\n store.set(value = new_value);\n return false;\n }\n // @ts-ignore\n store.set(value = fn(easing(elapsed / duration)));\n return true;\n });\n return task.promise;\n }\n return {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe\n };\n}\n\nexport { spring, tweened };\n","\n\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n
\n\n\n","\n\n\n\n\n\t{#if status === \"pending\"}\n\t\t{#if variant === \"default\" && show_eta_bar}\n\t\t\t\n\t\t{/if}\n\t\t\n\t\t\t{#if progress}\n\t\t\t\t{#each progress as p}\n\t\t\t\t\t{#if p.index != null}\n\t\t\t\t\t\t{#if p.length != null}\n\t\t\t\t\t\t\t{prettySI(p.index || 0)}/{prettySI(p.length)}\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t{prettySI(p.index || 0)}\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{p.unit} | {\" \"}\n\t\t\t\t\t{/if}\n\t\t\t\t{/each}\n\t\t\t{:else if queue_position !== null && queue_size !== undefined && queue_position >= 0}\n\t\t\t\tqueue: {queue_position + 1}/{queue_size} |\n\t\t\t{:else if queue_position === 0}\n\t\t\t\tprocessing |\n\t\t\t{/if}\n\n\t\t\t{#if timer}\n\t\t\t\t{formatted_timer}{eta ? `/${formatted_eta}` : \"\"}s\n\t\t\t{/if}\n\t\t\n\n\t\t{#if last_progress_level != null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{#if progress != null}\n\t\t\t\t\t\t{#each progress as p, i}\n\t\t\t\t\t\t\t{#if p.desc != null || (progress_level && progress_level[i] != null)}\n\t\t\t\t\t\t\t\t{#if i !== 0}\n\t\t\t\t\t\t\t\t\t /\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t{#if p.desc != null}\n\t\t\t\t\t\t\t\t\t{p.desc}\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t{#if p.desc != null && progress_level && progress_level[i] != null}\n\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t{#if progress_level != null}\n\t\t\t\t\t\t\t\t\t{(100 * (progress_level[i] || 0)).toFixed(1)}%\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t{/if}\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{:else}\n\t\t\t\n\t\t{/if}\n\n\t\t{#if !timer}\n\t\t\t

{loading_text}

\n\t\t{/if}\n\t{:else if status === \"error\"}\n\t\tError\n\t\t\n\t\t{#if message_visible}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
Something went wrong
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{message || \"\"}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t{/if}\n\t{/if}\n\n\n\n","\n\n\n\n\n\t{#if (loader_status === \"pending\" || loader_status === \"error\") && !(config && config?.auth_required)}\n\t\t\n\t\t\t
\n\t\t\t\t

{status?.message || \"\"}

\n\t\t\t\t{#if status.status === \"space_error\" && status.discussions_enabled}\n\t\t\t\t\t

\n\t\t\t\t\t\tPlease \n\t\t\t\t\t\t\tcontact the author of the space to let them know.\n\t\t\t\t\t

\n\t\t\t\t{:else}\n\t\t\t\t\t

Please contact the author of the page to let them know.

\n\t\t\t\t{/if}\n\t\t\t
\n\t\t
\n\t{/if}\n\t{#if config?.auth_required && Login}\n\t\t\n\t{:else if config && Blocks}\n\t\t\n\t{/if}\n\n\n\n","import \"@gradio/theme\";\nimport Index from \"./Index.svelte\";\n\ndeclare let BUILD_MODE: string;\ndeclare let GRADIO_VERSION: string;\n\nconst ENTRY_CSS = \"__ENTRY_CSS__\";\n\nlet FONTS: string | [];\n\nFONTS = \"__FONTS_CSS__\";\n\nexport function mount_css(url: string, target: HTMLElement): Promise {\n\tconst existing_link = document.querySelector(`link[href='${url}']`);\n\n\tif (existing_link) return Promise.resolve();\n\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\tlink.href = url;\n\t// @ts-ignore\n\ttarget.appendChild(link);\n\n\treturn new Promise((res, rej) => {\n\t\tlink.addEventListener(\"load\", () => res());\n\t\tlink.addEventListener(\"error\", () =>\n\t\t\trej(new Error(`Unable to preload CSS for ${url}`))\n\t\t);\n\t});\n}\n\nfunction create_custom_element() {\n\tclass GradioApp extends HTMLElement {\n\t\ttheme: \"light\" | \"dark\";\n\n\t\tconstructor() {\n\t\t\tsuper();\n\n\t\t\tthis.theme = \"light\";\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tif (typeof FONTS !== \"string\") {\n\t\t\t\tFONTS.forEach((f) => mount_css(f, document.head));\n\t\t\t}\n\n\t\t\tawait mount_css(ENTRY_CSS, document.head);\n\n\t\t\tconst event = new CustomEvent(\"domchange\", {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: false,\n\t\t\t\tcomposed: true\n\t\t\t});\n\n\t\t\tvar observer = new MutationObserver((mutations) => {\n\t\t\t\tthis.dispatchEvent(event);\n\t\t\t});\n\n\t\t\tobserver.observe(this, { childList: true });\n\n\t\t\tconst host = this.getAttribute(\"host\");\n\t\t\tconst space = this.getAttribute(\"space\");\n\t\t\tconst src = this.getAttribute(\"src\");\n\n\t\t\tconst control_page_title = this.getAttribute(\"control_page_title\");\n\t\t\tconst initial_height = this.getAttribute(\"initial_height\") ?? \"300px\"; // default: 300px\n\t\t\tconst is_embed = this.getAttribute(\"embed\") ?? \"true\"; // default: true\n\t\t\tconst container = this.getAttribute(\"container\") ?? \"true\"; // default: true\n\t\t\tconst info = this.getAttribute(\"info\") ?? true; // default: true\n\t\t\tconst autoscroll = this.getAttribute(\"autoscroll\");\n\t\t\tconst eager = this.getAttribute(\"eager\");\n\n\t\t\tconst app = new Index({\n\t\t\t\ttarget: this,\n\t\t\t\tprops: {\n\t\t\t\t\t// embed source\n\t\t\t\t\tspace: space ? space.trim() : space,\n\t\t\t\t\tsrc: src ? src.trim() : src,\n\t\t\t\t\thost: host ? host.trim() : host,\n\t\t\t\t\t// embed info\n\t\t\t\t\tinfo: info === \"false\" ? false : true,\n\t\t\t\t\tcontainer: container === \"false\" ? false : true,\n\t\t\t\t\tis_embed: is_embed === \"false\" ? false : true,\n\t\t\t\t\tinitial_height: initial_height ?? undefined,\n\t\t\t\t\teager: eager === \"true\" ? true : false,\n\t\t\t\t\t// gradio meta info\n\t\t\t\t\tversion: GRADIO_VERSION,\n\t\t\t\t\ttheme: this.theme,\n\t\t\t\t\t// misc global behaviour\n\t\t\t\t\tautoscroll: autoscroll === \"true\" ? true : false,\n\t\t\t\t\tcontrol_page_title: control_page_title === \"true\" ? true : false,\n\t\t\t\t\t// for gradio docs\n\t\t\t\t\t// TODO: Remove -- i think this is just for autoscroll behavhiour, app vs embeds\n\t\t\t\t\tapp_mode: window.__gradio_mode__ === \"app\"\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tcustomElements.define(\"gradio-app\", GradioApp);\n}\n\ncreate_custom_element();\n"],"file":"assets/index.7a68216a.js"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.80349daf.js b/gradio/templates/cdn/assets/index.80349daf.js new file mode 100644 index 0000000000000000000000000000000000000000..22f914ae02460f3285ccbe8a35e15bbce095d79b --- /dev/null +++ b/gradio/templates/cdn/assets/index.80349daf.js @@ -0,0 +1,2 @@ +import{S as G,i as H,s as J,F as S,G as q,H as N,B as b,O as B,f as v,D as k,I as D,J as O,E,p as C,a2 as z,q as A,c as j,m as w,o as r,t as h,l as p,v as K,a7 as L,b as M,a as P,g as Q,h as R,k as U,n as V,j as W,x as T}from"./index.7a68216a.js";/* empty css */import{a as X}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{I as Y}from"./Info.4b69e77f.js";/* empty css */function Z(l){let e,a,t,s,o,c,m;return{c(){e=S("label"),a=S("input"),t=q(),s=S("span"),o=N(l[2]),a.disabled=l[1],b(a,"type","checkbox"),b(a,"name","test"),b(a,"data-testid","checkbox"),b(a,"class","svelte-1ojmf70"),b(s,"class","ml-2 svelte-1ojmf70"),b(e,"class","svelte-1ojmf70"),B(e,"disabled",l[1])},m(u,i){v(u,e,i),k(e,a),a.checked=l[0],k(e,t),k(e,s),k(s,o),c||(m=[D(a,"change",l[4]),D(a,"input",l[5])],c=!0)},p(u,[i]){i&2&&(a.disabled=u[1]),i&1&&(a.checked=u[0]),i&4&&O(o,u[2]),i&2&&B(e,"disabled",u[1])},i:E,o:E,d(u){u&&C(e),c=!1,z(m)}}}function y(l,e,a){let{value:t}=e,{disabled:s=!1}=e,{label:o}=e;const c=A();function m(_){c("change",_)}function u(){t=this.checked,a(0,t)}const i=_=>c("select",{index:0,value:o,selected:_.currentTarget.checked});return l.$$set=_=>{"value"in _&&a(0,t=_.value),"disabled"in _&&a(1,s=_.disabled),"label"in _&&a(2,o=_.label)},l.$$.update=()=>{l.$$.dirty&1&&m(t)},[t,s,o,c,u,i]}class x extends G{constructor(e){super(),H(this,e,y,Z,J,{value:0,disabled:1,label:2})}}function F(l){let e,a;return e=new Y({props:{$$slots:{default:[$]},$$scope:{ctx:l}}}),{c(){j(e.$$.fragment)},m(t,s){w(e,t,s),a=!0},p(t,s){const o={};s&4128&&(o.$$scope={dirty:s,ctx:t}),e.$set(o)},i(t){a||(r(e.$$.fragment,t),a=!0)},o(t){h(e.$$.fragment,t),a=!1},d(t){p(e,t)}}}function $(l){let e;return{c(){e=N(l[5])},m(a,t){v(a,e,t)},p(a,t){t&32&&O(e,a[5])},d(a){a&&C(e)}}}function ee(l){let e,a,t,s,o,c;const m=[l[8]];let u={};for(let n=0;nP(s,"value",_)),s.$on("change",l[10]),s.$on("select",l[11]),{c(){j(e.$$.fragment),a=q(),i&&i.c(),t=q(),j(s.$$.fragment)},m(n,d){w(e,n,d),v(n,a,d),i&&i.m(n,d),v(n,t,d),w(s,n,d),c=!0},p(n,d){const I=d&256?Q(m,[R(n[8])]):{};e.$set(I),n[5]?i?(i.p(n,d),d&32&&r(i,1)):(i=F(n),i.c(),r(i,1),i.m(t.parentNode,t)):i&&(U(),h(i,1,1,()=>{i=null}),V());const f={};d&16&&(f.label=n[4]),d&64&&(f.disabled=n[6]==="static"),!o&&d&1&&(o=!0,f.value=n[0],W(()=>o=!1)),s.$set(f)},i(n){c||(r(e.$$.fragment,n),r(i),r(s.$$.fragment,n),c=!0)},o(n){h(e.$$.fragment,n),h(i),h(s.$$.fragment,n),c=!1},d(n){p(e,n),n&&C(a),i&&i.d(n),n&&C(t),p(s,n)}}}function ae(l){let e,a;return e=new X({props:{visible:l[3],elem_id:l[1],elem_classes:l[2],disable:typeof l[7].container=="boolean"&&!l[7].container,$$slots:{default:[ee]},$$scope:{ctx:l}}}),{c(){j(e.$$.fragment)},m(t,s){w(e,t,s),a=!0},p(t,[s]){const o={};s&8&&(o.visible=t[3]),s&2&&(o.elem_id=t[1]),s&4&&(o.elem_classes=t[2]),s&128&&(o.disable=typeof t[7].container=="boolean"&&!t[7].container),s&4465&&(o.$$scope={dirty:s,ctx:t}),e.$set(o)},i(t){a||(r(e.$$.fragment,t),a=!0)},o(t){h(e.$$.fragment,t),a=!1},d(t){p(e,t)}}}function te(l,e,a){let{elem_id:t=""}=e,{elem_classes:s=[]}=e,{visible:o=!0}=e,{value:c=!1}=e,{label:m="Checkbox"}=e,{info:u=void 0}=e,{mode:i}=e,{style:_={}}=e,{loading_status:g}=e;function n(f){c=f,a(0,c)}function d(f){T.call(this,l,f)}function I(f){T.call(this,l,f)}return l.$$set=f=>{"elem_id"in f&&a(1,t=f.elem_id),"elem_classes"in f&&a(2,s=f.elem_classes),"visible"in f&&a(3,o=f.visible),"value"in f&&a(0,c=f.value),"label"in f&&a(4,m=f.label),"info"in f&&a(5,u=f.info),"mode"in f&&a(6,i=f.mode),"style"in f&&a(7,_=f.style),"loading_status"in f&&a(8,g=f.loading_status)},[c,t,s,o,m,u,i,_,g,n,d,I]}class le extends G{constructor(e){super(),H(this,e,te,ae,J,{elem_id:1,elem_classes:2,visible:3,value:0,label:4,info:5,mode:6,style:7,loading_status:8})}}var ce=le;const ue=["static","dynamic"],_e=l=>({type:{payload:"boolean"},description:{payload:"checked status"},example_data:l.value});export{ce as Component,_e as document,ue as modes}; +//# sourceMappingURL=index.80349daf.js.map diff --git a/gradio/templates/cdn/assets/index.80349daf.js.map b/gradio/templates/cdn/assets/index.80349daf.js.map new file mode 100644 index 0000000000000000000000000000000000000000..80ddc7802bb528ab5c1bc6862281f64f5fb033c0 --- /dev/null +++ b/gradio/templates/cdn/assets/index.80349daf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.80349daf.js","sources":["../../../../ui/packages/form/src/Checkbox.svelte","../../../../ui/packages/app/src/components/Checkbox/Checkbox.svelte","../../../../ui/packages/app/src/components/Checkbox/index.ts"],"sourcesContent":["\n\n\n\n\n\n","\n\n\n\t\n\n\t{#if info}\n\t\t{info}\n\t{/if}\n\t\n\n","export { default as Component } from \"./Checkbox.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"boolean\"\n\t},\n\tdescription: {\n\t\tpayload: \"checked status\"\n\t},\n\texample_data: config.value\n});\n"],"names":[],"mappings":"ikBAmCqB,0NAdrB,SACC,iBACe,YAYf,kHAZe,eAYK,wFA/BT,YACA,WAAoB,OACpB,gBAEL,GAAW,eAKM,GACtB,EAAS,SAAU,CAAK,eASV,8BACH,GACV,EAAS,UACR,MAAO,EACP,MAAO,EACP,SAAU,EAAI,cAAc,uJAX5B,EAAc,CAAK,8ZCUd,yCAAA,8DAHW,gFAEd,4DAQM,OAAS,+RAVD,qBAEd,8JAQM,OAAS,sUAZJ,MAAM,WAAc,YAAc,KAAM,oNAAxC,MAAM,WAAc,YAAc,KAAM,gKAf7C,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAiB,OACjB,QAAgB,eAChB,OAA2B,WAC3B,WACA,eACA,imBCdC,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,WAEV,YAAa,CACZ,QAAS,kBAEV,aAAc,EAAO,KACtB"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.83ae7361.js b/gradio/templates/cdn/assets/index.83ae7361.js new file mode 100644 index 0000000000000000000000000000000000000000..dcbf212d116dccb19d9b39be3a3fc14891c5de54 --- /dev/null +++ b/gradio/templates/cdn/assets/index.83ae7361.js @@ -0,0 +1,2 @@ +import{S as H,i as I,s as J,F as j,G as q,H as N,B as g,O as C,f as v,D as k,I as D,J as z,p as w,a2 as K,c as G,m as B,o as y,t as O,l as S,N as L,q as M,v as P,a7 as Q,b as R,a as U,g as V,h as W,j as X,x as A}from"./index.7a68216a.js";/* empty css */import{g as Y,a as Z}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{B as p}from"./BlockTitle.39fa370e.js";/* empty css */import"./Info.4b69e77f.js";function E(l,e,s){const t=l.slice();return t[12]=e[s],t}function x(l){let e;return{c(){e=N(l[3])},m(s,t){v(s,e,t)},p(s,t){t&8&&z(e,s[3])},d(s){s&&w(e)}}}function F(l){let e,s,t,i,o,c=l[12]+"",a,b,h,n;function _(){return l[10](l[12])}function r(...d){return l[11](l[12],...d)}return{c(){e=j("label"),s=j("input"),i=q(),o=j("span"),a=N(c),b=q(),s.disabled=l[2],s.checked=t=l[0].includes(l[12]),g(s,"type","checkbox"),g(s,"name","test"),g(s,"class","svelte-1qxcj04"),g(o,"class","ml-2 svelte-1qxcj04"),g(e,"style",l[6]),g(e,"class","svelte-1qxcj04"),C(e,"disabled",l[2]),C(e,"selected",l[0].includes(l[12]))},m(d,m){v(d,e,m),k(e,s),k(e,i),k(e,o),k(o,a),k(e,b),h||(n=[D(s,"change",_),D(s,"input",r)],h=!0)},p(d,m){l=d,m&4&&(s.disabled=l[2]),m&3&&t!==(t=l[0].includes(l[12]))&&(s.checked=t),m&2&&c!==(c=l[12]+"")&&z(a,c),m&64&&g(e,"style",l[6]),m&4&&C(e,"disabled",l[2]),m&3&&C(e,"selected",l[0].includes(l[12]))},d(d){d&&w(e),h=!1,K(n)}}}function $(l){let e,s,t,i;e=new p({props:{show_label:l[5],info:l[4],$$slots:{default:[x]},$$scope:{ctx:l}}});let o=l[1],c=[];for(let a=0;a{i.includes(u)?i.splice(i.indexOf(u),1):i.push(u),_("change",i),s(0,i)},d=u=>r(u),m=(u,T)=>_("select",{index:c.indexOf(u),value:u,selected:T.currentTarget.checked});return l.$$set=u=>{"value"in u&&s(0,i=u.value),"style"in u&&s(9,o=u.style),"choices"in u&&s(1,c=u.choices),"disabled"in u&&s(2,a=u.disabled),"label"in u&&s(3,b=u.label),"info"in u&&s(4,h=u.info),"show_label"in u&&s(5,n=u.show_label)},l.$$.update=()=>{l.$$.dirty&512&&s(6,{item_container:t}=Y(o,["item_container"]),t)},[i,c,a,b,h,n,t,_,r,o,d,m]}class le extends H{constructor(e){super(),I(this,e,ee,$,J,{value:0,style:9,choices:1,disabled:2,label:3,info:4,show_label:5})}}function se(l){let e,s,t,i,o;const c=[l[10]];let a={};for(let n=0;nU(t,"value",b)),t.$on("select",l[12]),t.$on("change",l[13]),{c(){G(e.$$.fragment),s=q(),G(t.$$.fragment)},m(n,_){B(e,n,_),v(n,s,_),B(t,n,_),o=!0},p(n,_){const r=_&1024?V(c,[W(n[10])]):{};e.$set(r);const d={};_&16&&(d.choices=n[4]),_&128&&(d.label=n[7]),_&256&&(d.info=n[8]),_&32&&(d.style=n[5]),_&512&&(d.show_label=n[9]),_&64&&(d.disabled=n[6]==="static"),!i&&_&1&&(i=!0,d.value=n[0],X(()=>i=!1)),t.$set(d)},i(n){o||(y(e.$$.fragment,n),y(t.$$.fragment,n),o=!0)},o(n){O(e.$$.fragment,n),O(t.$$.fragment,n),o=!1},d(n){S(e,n),n&&w(s),S(t,n)}}}function te(l){let e,s;return e=new Z({props:{visible:l[3],elem_id:l[1],elem_classes:l[2],type:"fieldset",disable:typeof l[5].container=="boolean"&&!l[5].container,$$slots:{default:[se]},$$scope:{ctx:l}}}),{c(){G(e.$$.fragment)},m(t,i){B(e,t,i),s=!0},p(t,[i]){const o={};i&8&&(o.visible=t[3]),i&2&&(o.elem_id=t[1]),i&4&&(o.elem_classes=t[2]),i&32&&(o.disable=typeof t[5].container=="boolean"&&!t[5].container),i&18417&&(o.$$scope={dirty:i,ctx:t}),e.$set(o)},i(t){s||(y(e.$$.fragment,t),s=!0)},o(t){O(e.$$.fragment,t),s=!1},d(t){S(e,t)}}}function ne(l,e,s){let{elem_id:t=""}=e,{elem_classes:i=[]}=e,{visible:o=!0}=e,{value:c=[]}=e,{choices:a}=e,{style:b={}}=e,{mode:h}=e,{label:n="Checkbox Group"}=e,{info:_=void 0}=e,{show_label:r}=e,{loading_status:d}=e;function m(f){c=f,s(0,c)}function u(f){A.call(this,l,f)}function T(f){A.call(this,l,f)}return l.$$set=f=>{"elem_id"in f&&s(1,t=f.elem_id),"elem_classes"in f&&s(2,i=f.elem_classes),"visible"in f&&s(3,o=f.visible),"value"in f&&s(0,c=f.value),"choices"in f&&s(4,a=f.choices),"style"in f&&s(5,b=f.style),"mode"in f&&s(6,h=f.mode),"label"in f&&s(7,n=f.label),"info"in f&&s(8,_=f.info),"show_label"in f&&s(9,r=f.show_label),"loading_status"in f&&s(10,d=f.loading_status)},[c,t,i,o,a,b,h,n,_,r,d,m,u,T]}class ae extends H{constructor(e){super(),I(this,e,ne,te,J,{elem_id:1,elem_classes:2,visible:3,value:0,choices:4,style:5,mode:6,label:7,info:8,show_label:9,loading_status:10})}}var be=ae;const he=["static","dynamic"],de=l=>({type:{payload:"Array"},description:{payload:"list of selected choices"},example_data:l.choices.length?[l.choices[0]]:[]});export{be as Component,de as document,he as modes}; +//# sourceMappingURL=index.83ae7361.js.map diff --git a/gradio/templates/cdn/assets/index.83ae7361.js.map b/gradio/templates/cdn/assets/index.83ae7361.js.map new file mode 100644 index 0000000000000000000000000000000000000000..2bc7e81893aa76c69b0986ed78ad3d739104b203 --- /dev/null +++ b/gradio/templates/cdn/assets/index.83ae7361.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.83ae7361.js","sources":["../../../../ui/packages/form/src/CheckboxGroup.svelte","../../../../ui/packages/app/src/components/CheckboxGroup/CheckboxGroup.svelte","../../../../ui/packages/app/src/components/CheckboxGroup/index.ts"],"sourcesContent":["\n\n{label}\n\n
\n\t{#each choices as choice}\n\t\t\n\t\t\t toggleChoice(choice)}\n\t\t\t\ton:input={(evt) =>\n\t\t\t\t\tdispatch(\"select\", {\n\t\t\t\t\t\tindex: choices.indexOf(choice),\n\t\t\t\t\t\tvalue: choice,\n\t\t\t\t\t\tselected: evt.currentTarget.checked\n\t\t\t\t\t})}\n\t\t\t\tchecked={value.includes(choice)}\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tname=\"test\"\n\t\t\t/>\n\t\t\t{choice}\n\t\t\n\t{/each}\n
\n\n\n","\n\n\n\t\n\n\t\n\n","export { default as Component } from \"./CheckboxGroup.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"Array\"\n\t},\n\tdescription: {\n\t\tpayload: \"list of selected choices\"\n\t},\n\texample_data: config.choices.length ? [config.choices[0]] : []\n});\n"],"names":[],"mappings":"gmBAgCiC,wCAAA,oDAsBV,4LAJV,KAAM,SAAS,8HAXlB,wEADS,KAAM,SAAS,gBAFhC,SAKC,cAaA,iHAJU,KAAM,SAAS,mCAIL,oCAfb,oDADS,KAAM,SAAS,qJAH1B,0BAAL,gNADH,uLACQ,uBAAL,6HAAA,yIA7BS,eACA,eACA,cACA,WAAoB,OACpB,YACA,OAA2B,WAC3B,qBAEL,GAAW,IAKX,EAAgB,IACjB,EAAM,SAAS,CAAM,EACxB,EAAM,OAAO,EAAM,QAAQ,CAAM,EAAG,CAAC,EAErC,EAAM,KAAK,CAAM,EAElB,EAAS,SAAU,CAAK,eAkBL,EAAa,CAAM,OACzB,IACV,EAAS,UACR,MAAO,EAAQ,QAAQ,CAAM,EAC7B,MAAO,EACP,SAAU,EAAI,cAAc,0RAnB3B,kBAAmB,EAAW,GAAQ,gBAAgB,sMCDzC,+KAWR,OAAS,6PAXD,qKAWR,OAAS,0TAbJ,MAAM,WAAc,YAAc,KAAM,mNAAxC,MAAM,WAAc,YAAc,KAAM,iKAnB7C,UAAkB,OAClB,sBACA,UAAmB,OACnB,eACA,cACA,eACA,WACA,QAAgB,qBAChB,OAA2B,WAC3B,iBAEA,osBCjBC,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,iBAEV,YAAa,CACZ,QAAS,4BAEV,aAAc,EAAO,QAAQ,OAAS,CAAC,EAAO,QAAQ,EAAE,EAAI,EAC7D"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.84ff132c.css b/gradio/templates/cdn/assets/index.84ff132c.css new file mode 100644 index 0000000000000000000000000000000000000000..78067c2729600b4ee3e7e9c6442a129e8ffe9894 --- /dev/null +++ b/gradio/templates/cdn/assets/index.84ff132c.css @@ -0,0 +1 @@ +.gradio-bokeh.svelte-1fe5ixn.svelte-1fe5ixn{display:flex;justify-content:center}.layout.svelte-1fe5ixn.svelte-1fe5ixn{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--size-full);height:var(--size-full);color:var(--body-text-color)}.altair.svelte-1fe5ixn.svelte-1fe5ixn{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--size-full);height:var(--size-full)}.caption.svelte-1fe5ixn.svelte-1fe5ixn{font-size:var(--text-sm)}.matplotlib.svelte-1fe5ixn img.svelte-1fe5ixn{object-fit:contain} diff --git a/gradio/templates/cdn/assets/index.85ca7b2d.js b/gradio/templates/cdn/assets/index.85ca7b2d.js new file mode 100644 index 0000000000000000000000000000000000000000..200d7b57f5a812f651b32def70cfe5e80c0bd224 --- /dev/null +++ b/gradio/templates/cdn/assets/index.85ca7b2d.js @@ -0,0 +1,5 @@ +import{S as de,i as he,s as ge,F as q,B as g,O as E,f as B,I,p as M,a2 as me,G as J,E as le,x as oe,b as G,H as $,J as be,ag as sl,e as rl,D as L,a as te,o as T,c as P,m as Z,t as R,l as Q,k as W,n as X,j as ne,q as ze,A as x,V as U,y as ce,z as _e,v as il,a7 as ul,a8 as Ae,g as fl,h as ol}from"./index.7a68216a.js";import{U as cl}from"./Upload.c051b7dd.js";import{B as He}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";/* empty css */import"./ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js";import{d as _l}from"./dsv.7fe76a93.js";var je=Object.prototype.hasOwnProperty;function ae(a,e){var l,n;if(a===e)return!0;if(a&&e&&(l=a.constructor)===e.constructor){if(l===Date)return a.getTime()===e.getTime();if(l===RegExp)return a.toString()===e.toString();if(l===Array){if((n=a.length)===e.length)for(;n--&&ae(a[n],e[n]););return n===-1}if(!l||typeof a=="object"){n=0;for(l in a)if(je.call(a,l)&&++n&&!je.call(e,l)||!(l in e)||!ae(a[l],e[l]))return!1;return Object.keys(e).length===n}}return a!==a&&e!==e}function De(a){let e,l,n;return{c(){e=q("input"),g(e,"tabindex","-1"),e.value=a[0],g(e,"class","svelte-q8uklq"),E(e,"header",a[3])},m(t,r){B(t,e,r),a[7](e),l||(n=[I(e,"keydown",a[6]),I(e,"blur",a[8])],l=!0)},p(t,r){r&1&&e.value!==t[0]&&(e.value=t[0]),r&8&&E(e,"header",t[3])},d(t){t&&M(e),a[7](null),l=!1,me(n)}}}function dl(a){let e;return{c(){e=$(a[0])},m(l,n){B(l,e,n)},p(l,n){n&1&&be(e,l[0])},d(l){l&&M(e)}}}function hl(a){let e,l;return{c(){e=new sl(!1),l=rl(),e.a=l},m(n,t){e.m(a[0],n,t),B(n,l,t)},p(n,t){t&1&&e.p(n[0])},d(n){n&&M(l),n&&e.d()}}}function gl(a){let e,l,n,t,r=a[2]&&De(a);function c(i,f){return i[4]==="markdown"||i[4]==="html"?hl:dl}let d=c(a),b=d(a);return{c(){r&&r.c(),e=J(),l=q("span"),b.c(),g(l,"tabindex","-1"),g(l,"role","button"),g(l,"class","svelte-q8uklq"),E(l,"edit",a[2])},m(i,f){r&&r.m(i,f),B(i,e,f),B(i,l,f),b.m(l,null),n||(t=I(l,"dblclick",a[5]),n=!0)},p(i,[f]){i[2]?r?r.p(i,f):(r=De(i),r.c(),r.m(e.parentNode,e)):r&&(r.d(1),r=null),d===(d=c(i))&&b?b.p(i,f):(b.d(1),b=d(i),b&&(b.c(),b.m(l,null))),f&4&&E(l,"edit",i[2])},i:le,o:le,d(i){r&&r.d(i),i&&M(e),i&&M(l),b.d(),n=!1,t()}}}function ml(a,e,l){let{edit:n}=e,{value:t=""}=e,{el:r}=e,{header:c=!1}=e,{datatype:d="str"}=e;function b(u){oe.call(this,a,u)}function i(u){oe.call(this,a,u)}function f(u){G[u?"unshift":"push"](()=>{r=u,l(1,r)})}const j=({currentTarget:u})=>{l(0,t=u.value),u.setAttribute("tabindex","-1")};return a.$$set=u=>{"edit"in u&&l(2,n=u.edit),"value"in u&&l(0,t=u.value),"el"in u&&l(1,r=u.el),"header"in u&&l(3,c=u.header),"datatype"in u&&l(4,d=u.datatype)},[t,r,n,c,d,b,i,f,j]}class Ne extends de{constructor(e){super(),he(this,e,ml,gl,ge,{edit:2,value:0,el:1,header:3,datatype:4})}}function Ee(a,e,l){const n=a.slice();return n[52]=e[l],n[54]=l,n}function Le(a,e,l){const n=a.slice();return n[55]=e[l].value,n[56]=e[l].id,n[57]=e,n[58]=l,n}function qe(a,e,l){const n=a.slice();return n[55]=e[l].value,n[56]=e[l].id,n[59]=e,n[54]=l,n}function Be(a){let e,l;return{c(){e=q("p"),l=$(a[1]),g(e,"class","svelte-8hrj8a")},m(n,t){B(n,e,t),L(e,l)},p(n,t){t[0]&2&&be(l,n[1])},d(n){n&&M(e)}}}function Me(a){let e,l;return{c(){e=q("caption"),l=$(a[1]),g(e,"class","sr-only")},m(n,t){B(n,e,t),L(e,l)},p(n,t){t[0]&2&&be(l,n[1])},d(n){n&&M(e)}}}function Te(a,e){let l,n,t,r,c,d,b,i,f,j,u,h=e[56],o,A,F;function m(S){e[30](S,e[56])}function k(){return e[31](e[56])}let p={value:e[55],edit:e[13]===e[56],header:!0};e[10][e[56]].input!==void 0&&(p.el=e[10][e[56]].input),t=new Ne({props:p}),G.push(()=>te(t,"el",m)),t.$on("keydown",e[21]),t.$on("dblclick",k);function w(){return e[32](e[54])}const C=()=>e[33](l,h),N=()=>e[33](null,h);return{key:a,first:null,c(){l=q("th"),n=q("div"),P(t.$$.fragment),c=J(),d=q("div"),b=x("svg"),i=x("path"),j=J(),g(i,"d","M4.49999 0L8.3971 6.75H0.602875L4.49999 0Z"),g(b,"width","1em"),g(b,"height","1em"),g(b,"viewBox","0 0 9 7"),g(b,"fill","none"),g(b,"xmlns","http://www.w3.org/2000/svg"),g(b,"class","svelte-8hrj8a"),g(d,"class",f="sort-button "+e[11]+" svelte-8hrj8a"),E(d,"sorted",e[12]===e[54]),E(d,"des",e[12]===e[54]&&e[11]==="des"),g(n,"class","cell-wrap svelte-8hrj8a"),g(l,"aria-sort",u=e[15](e[55],e[12],e[11])),g(l,"class","svelte-8hrj8a"),E(l,"editing",e[13]===e[56]),this.first=l},m(S,O){B(S,l,O),L(l,n),Z(t,n,null),L(n,c),L(n,d),L(d,b),L(b,i),L(l,j),C(),o=!0,A||(F=I(d,"click",w),A=!0)},p(S,O){e=S;const V={};O[0]&256&&(V.value=e[55]),O[0]&8448&&(V.edit=e[13]===e[56]),!r&&O[0]&1280&&(r=!0,V.el=e[10][e[56]].input,ne(()=>r=!1)),t.$set(V),(!o||O[0]&2048&&f!==(f="sort-button "+e[11]+" svelte-8hrj8a"))&&g(d,"class",f),O[0]&6400&&E(d,"sorted",e[12]===e[54]),O[0]&6400&&E(d,"des",e[12]===e[54]&&e[11]==="des"),(!o||O[0]&6400&&u!==(u=e[15](e[55],e[12],e[11])))&&g(l,"aria-sort",u),h!==e[56]&&(N(),h=e[56],C()),O[0]&8448&&E(l,"editing",e[13]===e[56])},i(S){o||(T(t.$$.fragment,S),o=!0)},o(S){R(t.$$.fragment,S),o=!1},d(S){S&&M(l),Q(t),N(),A=!1,F()}}}function Ce(a,e){let l,n,t,r,c,d=e[56],b,i,f;function j(w){e[34](w,e[55],e[57],e[58])}function u(w){e[35](w,e[56])}let h={edit:e[6]===e[56],datatype:Array.isArray(e[0])?e[0][e[58]]:e[0]};e[55]!==void 0&&(h.value=e[55]),e[10][e[56]].input!==void 0&&(h.el=e[10][e[56]].input),t=new Ne({props:h}),G.push(()=>te(t,"value",j)),G.push(()=>te(t,"el",u));const o=()=>e[36](l,d),A=()=>e[36](null,d);function F(){return e[37](e[56])}function m(){return e[38](e[56])}function k(){return e[39](e[56])}function p(...w){return e[40](e[54],e[58],e[56],...w)}return{key:a,first:null,c(){l=q("td"),n=q("div"),P(t.$$.fragment),g(n,"class","cell-wrap svelte-8hrj8a"),E(n,"border-transparent",e[7]!==e[56]),g(l,"tabindex","0"),g(l,"class","svelte-8hrj8a"),this.first=l},m(w,C){B(w,l,C),L(l,n),Z(t,n,null),o(),b=!0,i||(f=[I(l,"touchstart",F,{passive:!0}),I(l,"click",m),I(l,"dblclick",k),I(l,"keydown",p)],i=!0)},p(w,C){e=w;const N={};C[0]&576&&(N.edit=e[6]===e[56]),C[0]&513&&(N.datatype=Array.isArray(e[0])?e[0][e[58]]:e[0]),!r&&C[0]&512&&(r=!0,N.value=e[55],ne(()=>r=!1)),!c&&C[0]&1536&&(c=!0,N.el=e[10][e[56]].input,ne(()=>c=!1)),t.$set(N),C[0]&640&&E(n,"border-transparent",e[7]!==e[56]),d!==e[56]&&(A(),d=e[56],o())},i(w){b||(T(t.$$.fragment,w),b=!0)},o(w){R(t.$$.fragment,w),b=!1},d(w){w&&M(l),Q(t),A(),i=!1,me(f)}}}function Fe(a,e){let l,n=[],t=new Map,r,c,d=e[52];const b=i=>i[56];for(let i=0;im[56];for(let m=0;mm[52];for(let m=0;m{t=null}),X()),c[2][1]==="dynamic"?r?(r.p(c,d),d[0]&4&&T(r,1)):(r=Se(c),r.c(),T(r,1),r.m(e,null)):r&&(W(),R(r,1,1,()=>{r=null}),X())},i(c){n||(T(t),T(r),n=!0)},o(c){R(t),R(r),n=!1},d(c){c&&M(e),t&&t.d(),r&&r.d()}}}function Re(a){let e,l,n;return l=new He({props:{variant:"secondary",size:"sm",$$slots:{default:[pl]},$$scope:{ctx:a}}}),l.$on("click",a[43]),{c(){e=q("span"),P(l.$$.fragment),g(e,"class","button-wrap svelte-8hrj8a")},m(t,r){B(t,e,r),Z(l,e,null),n=!0},p(t,r){const c={};r[1]&536870912&&(c.$$scope={dirty:r,ctx:t}),l.$set(c)},i(t){n||(T(l.$$.fragment,t),n=!0)},o(t){R(l.$$.fragment,t),n=!1},d(t){t&&M(e),Q(l)}}}function pl(a){let e,l,n;return{c(){e=x("svg"),l=x("path"),n=$(` + New row`),g(l,"fill","currentColor"),g(l,"d","M24.59 16.59L17 24.17V4h-2v20.17l-7.59-7.58L6 18l10 10l10-10l-1.41-1.41z"),g(e,"xmlns","http://www.w3.org/2000/svg"),g(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),g(e,"aria-hidden","true"),g(e,"role","img"),g(e,"width","1em"),g(e,"height","1em"),g(e,"preserveAspectRatio","xMidYMid meet"),g(e,"viewBox","0 0 32 32"),g(e,"class","svelte-8hrj8a")},m(t,r){B(t,e,r),L(e,l),B(t,n,r)},p:le,d(t){t&&M(e),t&&M(n)}}}function Se(a){let e,l,n;return l=new He({props:{variant:"secondary",size:"sm",$$slots:{default:[wl]},$$scope:{ctx:a}}}),l.$on("click",a[23]),{c(){e=q("span"),P(l.$$.fragment),g(e,"class","button-wrap svelte-8hrj8a")},m(t,r){B(t,e,r),Z(l,e,null),n=!0},p(t,r){const c={};r[1]&536870912&&(c.$$scope={dirty:r,ctx:t}),l.$set(c)},i(t){n||(T(l.$$.fragment,t),n=!0)},o(t){R(l.$$.fragment,t),n=!1},d(t){t&&M(e),Q(l)}}}function wl(a){let e,l,n;return{c(){e=x("svg"),l=x("path"),n=$(` + New column`),g(l,"fill","currentColor"),g(l,"d","m18 6l-1.43 1.393L24.15 15H4v2h20.15l-7.58 7.573L18 26l10-10L18 6z"),g(e,"xmlns","http://www.w3.org/2000/svg"),g(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),g(e,"aria-hidden","true"),g(e,"role","img"),g(e,"width","1em"),g(e,"height","1em"),g(e,"preserveAspectRatio","xMidYMid meet"),g(e,"viewBox","0 0 32 32"),g(e,"class","svelte-8hrj8a")},m(t,r){B(t,e,r),L(e,l),B(t,n,r)},p:le,d(t){t&&M(e),t&&M(n)}}}function kl(a){let e,l,n,t,r,c,d,b,i,f=a[1]&&a[1].length!==0&&Be(a);function j(o){a[41](o)}let u={flex:!1,center:!1,boundedheight:!1,disable_click:!0,$$slots:{default:[bl]},$$scope:{ctx:a}};a[14]!==void 0&&(u.dragging=a[14]),t=new cl({props:u}),G.push(()=>te(t,"dragging",j)),t.$on("load",a[42]);let h=a[4]&&Oe(a);return{c(){e=q("div"),f&&f.c(),l=J(),n=q("div"),P(t.$$.fragment),c=J(),h&&h.c(),g(n,"class","table-wrap scroll-hide svelte-8hrj8a"),E(n,"dragging",a[14]),E(n,"no-wrap",!a[5]),g(e,"class","svelte-8hrj8a"),E(e,"label",a[1]&&a[1].length!==0)},m(o,A){B(o,e,A),f&&f.m(e,null),L(e,l),L(e,n),Z(t,n,null),L(e,c),h&&h.m(e,null),d=!0,b||(i=[I(window,"click",a[24]),I(window,"touchstart",a[24])],b=!0)},p(o,A){o[1]&&o[1].length!==0?f?f.p(o,A):(f=Be(o),f.c(),f.m(e,l)):f&&(f.d(1),f=null);const F={};A[0]&32707|A[1]&536870912&&(F.$$scope={dirty:A,ctx:o}),!r&&A[0]&16384&&(r=!0,F.dragging=o[14],ne(()=>r=!1)),t.$set(F),A[0]&16384&&E(n,"dragging",o[14]),A[0]&32&&E(n,"no-wrap",!o[5]),o[4]?h?(h.p(o,A),A[0]&16&&T(h,1)):(h=Oe(o),h.c(),T(h,1),h.m(e,null)):h&&(W(),R(h,1,1,()=>{h=null}),X()),A[0]&2&&E(e,"label",o[1]&&o[1].length!==0)},i(o){d||(T(t.$$.fragment,o),T(h),d=!0)},o(o){R(t.$$.fragment,o),R(h),d=!1},d(o){o&&M(e),f&&f.d(),Q(t),h&&h.d(),b=!1,me(i)}}}function yl(a,e){return e.filter(l);function l(n){var t=-1;return a.split(` +`).every(r);function r(c){if(!c)return!0;var d=c.split(n).length;return t<0&&(t=d),t===d&&d>1}}}function vl(a){const e=atob(a.split(",")[1]),l=a.split(",")[0].split(":")[1].split(";")[0],n=new ArrayBuffer(e.length),t=new Uint8Array(n);for(let r=0;r`${D+_.length}`);_=_.concat(y)}return!_||_.length===0?Array(d[0]).fill(0).map((y,v)=>{const D=`h-${v}`;return l(10,o[D]={cell:null,input:null},o),{id:D,value:JSON.stringify(v+1)}}):_.map((y,v)=>{const D=`h-${v}`;return l(10,o[D]={cell:null,input:null},o),{id:D,value:y??""}})}function F(s){const _=s.length>0?s.length:b[0];return Array(b[1]==="fixed"||_Array(d[1]==="fixed"?d[0]:s[0].length).fill(0).map((D,H)=>{const K=`${v}-${H}`;return l(10,o[K]={input:null,cell:null},o),{value:s?.[v]?.[H]??"",id:K}}))}let m=A(r),k;async function p(){typeof u=="string"?(await U(),o[u]?.input?.focus()):typeof h=="string"&&(await U(),o[h]?.input?.focus())}let w=[[]],C;function N(s,_,y){if(!_)return"none";if(r[_]===s){if(y==="asc")return"ascending";if(y==="des")return"descending"}}function S(s){return w.reduce((_,y,v)=>{const D=y.reduce((H,K,ue)=>s===K.id?ue:H,-1);return D===-1?_:[v,D]},[-1,-1])}async function O(s,_){if(!i||u===s)return;if(_){const[v,D]=S(s);l(9,w[v][D].value="",w)}l(6,u=s),await U();const{input:y}=o[s];y?.focus()}async function V(s,_,y,v){let D;switch(s.key){case"ArrowRight":if(u)break;s.preventDefault(),D=w[_][y+1],l(7,h=D?D.id:h);break;case"ArrowLeft":if(u)break;s.preventDefault(),D=w[_][y-1],l(7,h=D?D.id:h);break;case"ArrowDown":if(u)break;s.preventDefault(),D=w[_+1],l(7,h=D?D[y].id:h);break;case"ArrowUp":if(u)break;s.preventDefault(),D=w[_-1],l(7,h=D?D[y].id:h);break;case"Escape":if(!i)break;s.preventDefault(),l(7,h=u),l(6,u=!1);break;case"Enter":if(!i)break;if(s.preventDefault(),s.shiftKey){re(_),await U();const[al]=S(v);l(7,h=w[al+1][y].id)}else u===v?l(6,u=!1):O(v);break;case"Backspace":if(!i)break;u||(s.preventDefault(),l(9,w[_][y].value="",w));break;case"Delete":if(!i)break;u||(s.preventDefault(),l(9,w[_][y].value="",w));break;case"Tab":let H=s.shiftKey?-1:1,K=w[_][y+H],ue=w?.[_+H]?.[H>0?0:m.length-1],fe=K||ue;fe&&(s.preventDefault(),l(7,h=fe?fe.id:h)),l(6,u=!1);break;default:(!u||u&&u!==v)&&s.key.length===1&&O(v,!0);break}}async function pe(s){u!==s&&h!==s&&(l(6,u=!1),l(7,h=s))}async function we(s,_){if(_==="edit"&&typeof s=="string"&&(await U(),o[s].input?.focus()),_==="edit"&&typeof s=="boolean"&&typeof h=="string"){let y=o[h]?.cell;await U(),y?.focus()}if(_==="select"&&typeof s=="string"){const{cell:y}=o[s];await U(),y?.focus()}}let Y,ee;function Ue(s,_){_==="asc"?l(9,w=w.sort((y,v)=>y[s].valuey[s].value>v[s].value?-1:1))}function ke(s){typeof ee!="number"||ee!==s?(l(11,Y="asc"),l(12,ee=s)):Y==="asc"?l(11,Y="des"):Y==="des"&&l(11,Y="asc"),Ue(s,Y)}let z;function ye(){if(typeof h=="string"){const s=o[h].input?.value;if(m.find(_=>_.id===h)){let _=m.find(y=>y.id===h);s&&(_.value=s)}else s&&m.push({id:h,value:s})}}async function se(s,_){!i||d[1]!=="dynamic"||u===s||(l(13,z=s),await U(),o[s].input?.focus(),_&&o[s].input?.select())}function Ie(s){if(!!i)switch(s.key){case"Escape":case"Enter":case"Tab":s.preventDefault(),l(7,h=z),l(13,z=!1),ye();break}}function re(s){b[1]==="dynamic"&&(w.splice(s?s+1:w.length,0,Array(w[0].length).fill(0).map((_,y)=>{const v=`${w.length}-${y}`;return l(10,o[v]={cell:null,input:null},o),{id:v,value:""}})),l(9,w),l(27,c),l(29,C),l(26,r))}async function Je(){if(d[1]!=="dynamic")return;for(let _=0;_se(s),Ge=s=>ke(s);function Pe(s,_){G[s?"unshift":"push"](()=>{o[_].cell=s,l(10,o)})}function Ze(s,_,y,v){y[v].value=s,l(9,w),l(27,c),l(29,C),l(26,r)}function Qe(s,_){a.$$.not_equal(o[_].input,s)&&(o[_].input=s,l(10,o))}function We(s,_){G[s?"unshift":"push"](()=>{o[_].cell=s,l(10,o)})}const Xe=s=>O(s),xe=s=>pe(s),$e=s=>O(s),el=(s,_,y,v)=>V(v,s,_,y);function ll(s){ie=s,l(14,ie)}const tl=s=>ve(vl(s.detail.data)),nl=()=>re();return a.$$set=s=>{"datatype"in s&&l(0,n=s.datatype),"label"in s&&l(1,t=s.label),"headers"in s&&l(26,r=s.headers),"values"in s&&l(27,c=s.values),"col_count"in s&&l(2,d=s.col_count),"row_count"in s&&l(3,b=s.row_count),"editable"in s&&l(4,i=s.editable),"wrap"in s&&l(5,f=s.wrap)},a.$$.update=()=>{if(a.$$.dirty[0]&201326592&&(c&&!Array.isArray(c)?(l(26,r=c.headers),l(27,c=c.data.length===0?[Array(r.length).fill("")]:c.data)):c===null?l(27,c=[Array(r.length).fill("")]):(l(27,c),l(26,r))),a.$$.dirty[0]&671088640&&(ae(c,C)||(l(9,w=F(c)),l(29,C=c),p())),a.$$.dirty[0]&640&&h!==!1){const s=h.split("-"),_=parseInt(s[0]),y=parseInt(s[1]);j("select",{index:[_,y],value:w[_][y].value})}a.$$.dirty[0]&335544320&&(ae(r,k)||(l(8,m=A(r)),l(28,k=r),p())),a.$$.dirty[0]&768&&m&&j("change",{data:w.map(s=>s.map(({value:_})=>_)),headers:m.map(s=>s.value)}),a.$$.dirty[0]&64&&we(u,"edit"),a.$$.dirty[0]&128&&we(h,"select")},[n,t,d,b,i,f,u,h,m,w,o,Y,ee,z,ie,N,O,V,pe,ke,se,Ie,re,Je,Ke,ve,r,c,k,C,Ve,Ye,Ge,Pe,Ze,Qe,We,Xe,xe,$e,el,ll,tl,nl]}class jl extends de{constructor(e){super(),he(this,e,Al,kl,ge,{datatype:0,label:1,headers:26,values:27,col_count:2,row_count:3,editable:4,wrap:5},null,[-1,-1])}}function Dl(a){let e,l,n,t,r,c;const d=[a[11]];let b={};for(let i=0;iF(p);function k(p){oe.call(this,a,p)}return a.$$set=p=>{"headers"in p&&l(1,n=p.headers),"elem_id"in p&&l(2,t=p.elem_id),"elem_classes"in p&&l(3,r=p.elem_classes),"visible"in p&&l(4,c=p.visible),"value"in p&&l(0,d=p.value),"mode"in p&&l(5,b=p.mode),"col_count"in p&&l(6,i=p.col_count),"row_count"in p&&l(7,f=p.row_count),"label"in p&&l(8,j=p.label),"wrap"in p&&l(9,u=p.wrap),"datatype"in p&&l(10,h=p.datatype),"loading_status"in p&&l(11,A=p.loading_status)},[d,n,t,r,c,b,i,f,j,u,h,A,F,m,k]}class Ll extends de{constructor(e){super(),he(this,e,El,Dl,ge,{headers:1,elem_id:2,elem_classes:3,visible:4,value:0,mode:5,col_count:6,row_count:7,label:8,wrap:9,datatype:10,loading_status:11})}}var Ol=Ll;const Rl=["static","dynamic"],Sl=a=>({type:{payload:"{ data: Array>; headers: Array }"},description:{payload:"an object with an array of data and an array of headers"},example_data:a.value});export{Ol as Component,Sl as document,Rl as modes}; +//# sourceMappingURL=index.85ca7b2d.js.map diff --git a/gradio/templates/cdn/assets/index.85ca7b2d.js.map b/gradio/templates/cdn/assets/index.85ca7b2d.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d50e5f65deef4cb7cbe013d6746e4002f96434e3 --- /dev/null +++ b/gradio/templates/cdn/assets/index.85ca7b2d.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.85ca7b2d.js","sources":["../../../../ui/node_modules/.pnpm/dequal@2.0.2/node_modules/dequal/lite/index.mjs","../../../../ui/packages/table/src/EditableCell.svelte","../../../../ui/packages/table/src/Table.svelte","../../../../ui/packages/app/src/components/DataFrame/DataFrame.svelte","../../../../ui/packages/app/src/components/DataFrame/index.ts"],"sourcesContent":["var has = Object.prototype.hasOwnProperty;\n\nexport function dequal(foo, bar) {\n\tvar ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","\n\n{#if edit}\n\t {\n\t\t\tvalue = currentTarget.value;\n\t\t\tcurrentTarget.setAttribute(\"tabindex\", \"-1\");\n\t\t}}\n\t/>\n{/if}\n\n\t{#if datatype === \"markdown\" || datatype === \"html\"}\n\t\t{@html value}\n\t{:else}\n\t\t{value}\n\t{/if}\n\n\n\n","\n\n\n\n
\n\t{#if label && label.length !== 0}\n\t\t

\n\t\t\t{label}\n\t\t

\n\t{/if}\n\t
\n\t\t blob_to_string(data_uri_to_blob(e.detail.data))}\n\t\t\tbind:dragging\n\t\t>\n\t\t\t\n\t\t\t\t{#if label && label.length !== 0}\n\t\t\t\t\t\n\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{#each _headers as { value, id }, i (id)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t edit_header(id)}\n\t\t\t\t\t\t\t\t\t\theader\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t handle_sort(i)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t
\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{#each data as row, i (row)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{#each row as { value, id }, j (id)}\n\t\t\t\t\t\t\t\t start_edit(id)}\n\t\t\t\t\t\t\t\t\ton:click={() => handle_cell_click(id)}\n\t\t\t\t\t\t\t\t\ton:dblclick={() => start_edit(id)}\n\t\t\t\t\t\t\t\t\ton:keydown={(e) => handle_keydown(e, i, j, id)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\n\t\t\t\t\t{/each}\n\t\t\t\t\n\t\t\t
{label}
\n\t\t\n\t
\n\t{#if editable}\n\t\t
\n\t\t\t{#if row_count[1] === \"dynamic\"}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{/if}\n\t\t\t{#if col_count[1] === \"dynamic\"}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{/if}\n\t\t
\n\t{/if}\n
\n\n\n","\n\n
\n\t\n\t handle_change(detail)}\n\t\ton:select\n\t\teditable={mode === \"dynamic\"}\n\t\t{wrap}\n\t\t{datatype}\n\t/>\n
\n\n\n","export { default as Component } from \"./DataFrame.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"{ data: Array>; headers: Array }\"\n\t},\n\tdescription: {\n\t\tpayload: \"an object with an array of data and an array of headers\"\n\t},\n\texample_data: config.value\n});\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.878f7f07.js b/gradio/templates/cdn/assets/index.878f7f07.js new file mode 100644 index 0000000000000000000000000000000000000000..cc2f4f31dc240bf1cc648c81d13887a0b6c31cbf --- /dev/null +++ b/gradio/templates/cdn/assets/index.878f7f07.js @@ -0,0 +1,2 @@ +import{S as L,i as M,s as j,F as w,B as o,O as c,f as g,E as H,p as v,q as S,c as d,m as h,o as b,t as T,l as k,v as q,a7 as B,G as C,g as E,h as z,x as D}from"./index.7a68216a.js";import{a as F}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";function G(t){let e,a;return{c(){e=w("div"),o(e,"class",a="prose "+t[1].join(" ")+" svelte-1ybaih5"),o(e,"id",t[0]),c(e,"min",t[4]),c(e,"hide",!t[3])},m(s,i){g(s,e,i),e.innerHTML=t[2]},p(s,[i]){i&4&&(e.innerHTML=s[2]),i&2&&a!==(a="prose "+s[1].join(" ")+" svelte-1ybaih5")&&o(e,"class",a),i&1&&o(e,"id",s[0]),i&18&&c(e,"min",s[4]),i&10&&c(e,"hide",!s[3])},i:H,o:H,d(s){s&&v(e)}}}function O(t,e,a){let{elem_id:s=""}=e,{elem_classes:i=[]}=e,{value:m}=e,{visible:u=!0}=e,{min_height:f=!1}=e;const l=S();return t.$$set=n=>{"elem_id"in n&&a(0,s=n.elem_id),"elem_classes"in n&&a(1,i=n.elem_classes),"value"in n&&a(2,m=n.value),"visible"in n&&a(3,u=n.visible),"min_height"in n&&a(4,f=n.min_height)},t.$$.update=()=>{t.$$.dirty&4&&l("change")},[s,i,m,u,f]}class A extends L{constructor(e){super(),M(this,e,O,G,j,{elem_id:0,elem_classes:1,value:2,visible:3,min_height:4})}}function I(t){let e,a,s,i,m;const u=[t[4],{variant:"center"}];let f={};for(let l=0;l{"label"in _&&a(5,s=_.label),"elem_id"in _&&a(0,i=_.elem_id),"elem_classes"in _&&a(1,m=_.elem_classes),"visible"in _&&a(2,u=_.visible),"value"in _&&a(3,f=_.value),"loading_status"in _&&a(4,l=_.loading_status)},t.$$.update=()=>{t.$$.dirty&32&&n("change")},[i,m,u,f,l,s,r]}class N extends L{constructor(e){super(),M(this,e,K,J,j,{label:5,elem_id:0,elem_classes:1,visible:2,value:3,loading_status:4})}}var R=N;const U=["static"],V=t=>({type:{payload:"string"},description:{payload:"HTML output"}});export{R as Component,V as document,U as modes}; +//# sourceMappingURL=index.878f7f07.js.map diff --git a/gradio/templates/cdn/assets/index.878f7f07.js.map b/gradio/templates/cdn/assets/index.878f7f07.js.map new file mode 100644 index 0000000000000000000000000000000000000000..66a004edec47f833598a3e965467f3690518baa0 --- /dev/null +++ b/gradio/templates/cdn/assets/index.878f7f07.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.878f7f07.js","sources":["../../../../ui/packages/html/src/HTML.svelte","../../../../ui/packages/app/src/components/HTML/HTML.svelte","../../../../ui/packages/app/src/components/HTML/index.ts"],"sourcesContent":["\n\n\n\t{@html value}\n\n\n\n","\n\n\n\t\n\t
\n\t\t\n\t
\n
\n\n\n","export { default as Component } from \"./HTML.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"string\"\n\t},\n\tdescription: {\n\t\tpayload: \"HTML output\"\n\t}\n});\n"],"names":[],"mappings":"8TAee,KAAa,KAAK,GAAG,8BAE/B,gBADO,kBAEE,cAJd,qBAMQ,iCAAA,2BALO,KAAa,KAAK,GAAG,mDAE/B,sBADO,wBAEE,oDAfF,UAAkB,OAClB,sBACA,YACA,UAAmB,OACnB,aAAa,WAElB,GAAW,mOAEP,EAAS,QAAQ,wKCSR,+HAGL,MAAkB,MAAgB,SAAW,8LAFvC,MAAgB,SAAW,SAAS,4BAAxD,sDADmB,yDAGL,MAAkB,MAAgB,SAAW,qIAFvC,MAAgB,SAAW,SAAS,8OAFN,uUAZvC,YACA,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAgB,OAChB,yBAEL,GAAW,uSAEP,EAAS,QAAQ,gKCff,GAAQ,CAAC,QAAQ,EAEjB,EAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,cAEX"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.894bc2f2.js b/gradio/templates/cdn/assets/index.894bc2f2.js new file mode 100644 index 0000000000000000000000000000000000000000..c235e76b0844b1dfbae55842eb72805e50ba1f83 --- /dev/null +++ b/gradio/templates/cdn/assets/index.894bc2f2.js @@ -0,0 +1,3 @@ +import{S as R,i as V,s as W,A as S,B as _,f as L,D as y,E as O,p as j,F as X,G as Y,H as J,C as F,a3 as ye,ak as we,J as P,N as G,e as I,a1 as Le,L as je,q as de,r as Ee,al as Z,c as N,m as H,o as z,t as B,l as q,v as Ae,a7 as Ce,g as Me,h as Te,k as pe,n as ve}from"./index.7a68216a.js";import{U as ze}from"./Upload.c051b7dd.js";import{M as Be}from"./ModifyUpload.06b7f9d9.js";import{a as Se}from"./Empty.svelte_svelte_type_style_lang.d7a3af78.js";import{B as Ue}from"./BlockLabel.fd555cfa.js";import{E as Fe}from"./Empty.092ff864.js";import{g as Ne}from"./color.f2fbe15a.js";import{_ as K,m as Q,Z as $}from"./linear.955f0731.js";import{a as He}from"./csv.27f5436c.js";import{U as qe}from"./UploadText.e78ad6f6.js";import"./Blocks.1c8a32b7.js";/* empty css */import"./ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js";import"./dsv.7fe76a93.js";function De(l){let e,n,t;return{c(){e=S("svg"),n=S("path"),t=S("path"),_(n,"d","M28.828 3.172a4.094 4.094 0 0 0-5.656 0L4.05 22.292A6.954 6.954 0 0 0 2 27.242V30h2.756a6.952 6.952 0 0 0 4.95-2.05L28.828 8.829a3.999 3.999 0 0 0 0-5.657zM10.91 18.26l2.829 2.829l-2.122 2.121l-2.828-2.828zm-2.619 8.276A4.966 4.966 0 0 1 4.756 28H4v-.759a4.967 4.967 0 0 1 1.464-3.535l1.91-1.91l2.829 2.828zM27.415 7.414l-12.261 12.26l-2.829-2.828l12.262-12.26a2.047 2.047 0 0 1 2.828 0a2 2 0 0 1 0 2.828z"),_(n,"fill","currentColor"),_(t,"d","M6.5 15a3.5 3.5 0 0 1-2.475-5.974l3.5-3.5a1.502 1.502 0 0 0 0-2.121a1.537 1.537 0 0 0-2.121 0L3.415 5.394L2 3.98l1.99-1.988a3.585 3.585 0 0 1 4.95 0a3.504 3.504 0 0 1 0 4.949L5.439 10.44a1.502 1.502 0 0 0 0 2.121a1.537 1.537 0 0 0 2.122 0l4.024-4.024L13 9.95l-4.025 4.024A3.475 3.475 0 0 1 6.5 15z"),_(t,"fill","currentColor"),_(e,"width","1em"),_(e,"height","1em"),_(e,"viewBox","0 0 32 32")},m(o,s){L(o,e,s),y(e,n),y(e,t)},p:O,i:O,o:O,d(o){o&&j(e)}}}class be extends R{constructor(e){super(),V(this,e,null,De,W,{})}}function x(l){let e;return Array.isArray(l)?e=l.reduce((n,{values:t})=>[...n,...t.map(({y:o})=>o)],[]):e=l.values,[Math.min(...e),Math.max(...e)]}function ee(l,e,n){const t=Object.entries(l[0]).reduce((o,s,a)=>(!e&&a===0||e&&s[0]===e?o.x.name=s[0]:(!n||n&&n.includes(s[0]))&&o.y.push({name:s[0],values:[]}),o),{x:{name:"",values:[]},y:[]});for(let o=0;ol[6].call(e))},m(a,f){L(a,e,f),y(e,n),y(e,t),y(e,o),s=we(e,l[6].bind(e))},p(a,[f]){f&8&&F(n,"background",a[3]),f&1&&P(o,a[0]),f&36&&F(e,"top",a[2]-a[5]/2+"px"),f&18&&F(e,"left",a[1]-a[4]-7+"px")},i:O,o:O,d(a){a&&j(e),s()}}}function Xe(l,e,n){let{text:t}=e,{x:o}=e,{y:s}=e,{color:a}=e,f,r;function p(){f=this.offsetWidth,r=this.offsetHeight,n(4,f),n(5,r)}return l.$$set=d=>{"text"in d&&n(0,t=d.text),"x"in d&&n(1,o=d.x),"y"in d&&n(2,s=d.y),"color"in d&&n(3,a=d.color)},[t,o,s,a,f,r,p]}class Ye extends R{constructor(e){super(),V(this,e,Xe,Oe,W,{text:0,x:1,y:2,color:3})}}function Ge(l,{color:e,text:n}){let t;function o(r){return t=new Ye({props:{text:n,x:r.pageX,y:r.pageY,color:e},target:document.body}),r}function s(r){t.$set({x:r.pageX,y:r.pageY})}function a(){t.$destroy()}const f=l;return f.addEventListener("mouseover",o),f.addEventListener("mouseleave",a),f.addEventListener("mousemove",s),{destroy(){f.removeEventListener("mouseover",o),f.removeEventListener("mouseleave",a),f.removeEventListener("mousemove",s)}}}function le(l,e,n){const t=l.slice();t[16]=e[n].name,t[17]=e[n].values;const o=t[8][t[16]];return t[18]=o,t}function te(l,e,n){const t=l.slice();return t[0]=e[n].x,t[1]=e[n].y,t}function ne(l,e,n){const t=l.slice();t[16]=e[n].name,t[17]=e[n].values;const o=t[8][t[16]];return t[18]=o,t}function oe(l,e,n){const t=l.slice();return t[0]=e[n].x,t[1]=e[n].y,t}function ae(l,e,n){const t=l.slice();return t[27]=e[n],t}function se(l,e,n){const t=l.slice();return t[27]=e[n],t}function re(l,e,n){const t=l.slice();return t[16]=e[n].name,t}function ie(l){let e,n,t,o=l[16]+"",s,a;return{c(){e=X("div"),n=X("span"),t=Y(),s=J(o),a=Y(),_(n,"class","legend-box svelte-1mjxput"),F(n,"background-color",l[8][l[16]]),_(e,"class","legend-item svelte-1mjxput")},m(f,r){L(f,e,r),y(e,n),y(e,t),y(e,s),y(e,a)},p(f,r){r[0]&260&&F(n,"background-color",f[8][f[16]]),r[0]&4&&o!==(o=f[16]+"")&&P(s,o)},d(f){f&&j(e)}}}function fe(l){let e,n,t,o,s,a,f=l[27]+"",r,p,d;return{c(){e=S("line"),a=S("text"),r=J(f),_(e,"stroke-width","0.5"),_(e,"x1",n=l[5](l[27])),_(e,"x2",t=l[5](l[27])),_(e,"y1",o=l[4](l[9][0]l[9][l[9].length-1]?l[6][1]:l[9][l[9].length-1])),_(e,"stroke","#aaa"),_(a,"class","label-text svelte-1mjxput"),_(a,"text-anchor","middle"),_(a,"x",p=l[5](l[27])),_(a,"y",d=l[4](l[9][0])+30)},m(i,h){L(i,e,h),L(i,a,h),y(a,r)},p(i,h){h[0]&1056&&n!==(n=i[5](i[27]))&&_(e,"x1",n),h[0]&1056&&t!==(t=i[5](i[27]))&&_(e,"x2",t),h[0]&592&&o!==(o=i[4](i[9][0]i[9][i[9].length-1]?i[6][1]:i[9][i[9].length-1]))&&_(e,"y2",s),h[0]&1024&&f!==(f=i[27]+"")&&P(r,f),h[0]&1056&&p!==(p=i[5](i[27]))&&_(a,"x",p),h[0]&528&&d!==(d=i[4](i[9][0])+30)&&_(a,"y",d)},d(i){i&&j(e),i&&j(a)}}}function _e(l){let e,n,t,o,s,a,f=l[27]+"",r,p,d;return{c(){e=S("line"),a=S("text"),r=J(f),_(e,"stroke-width","0.5"),_(e,"y1",n=l[4](l[27])),_(e,"y2",t=l[4](l[27])),_(e,"x1",o=l[5](l[10][0]l[10][l[10].length-1]?l[7][1]:l[10][l[10].length-1])),_(e,"stroke","#aaa"),_(a,"class","label-text svelte-1mjxput"),_(a,"text-anchor","end"),_(a,"y",p=l[4](l[27])+4),_(a,"x",d=l[5](l[10][0])-20)},m(i,h){L(i,e,h),L(i,a,h),y(a,r)},p(i,h){h[0]&528&&n!==(n=i[4](i[27]))&&_(e,"y1",n),h[0]&528&&t!==(t=i[4](i[27]))&&_(e,"y2",t),h[0]&1184&&o!==(o=i[5](i[10][0]i[10][i[10].length-1]?i[7][1]:i[10][i[10].length-1]))&&_(e,"x2",s),h[0]&512&&f!==(f=i[27]+"")&&P(r,f),h[0]&528&&p!==(p=i[4](i[27])+4)&&_(a,"y",p),h[0]&1056&&d!==(d=i[5](i[10][0])-20)&&_(a,"x",d)},d(i){i&&j(e),i&&j(a)}}}function ue(l){let e,n,t,o,s,a,f=l[6][1]+"",r,p,d;return{c(){e=S("line"),a=S("text"),r=J(f),_(e,"stroke-width","0.5"),_(e,"y1",n=l[4](l[6][1])),_(e,"y2",t=l[4](l[6][1])),_(e,"x1",o=l[5](l[10][0])),_(e,"x2",s=l[5](l[7][1])),_(e,"stroke","#aaa"),_(a,"class","label-text svelte-1mjxput"),_(a,"text-anchor","end"),_(a,"y",p=l[4](l[6][1])+4),_(a,"x",d=l[5](l[10][0])-20)},m(i,h){L(i,e,h),L(i,a,h),y(a,r)},p(i,h){h[0]&80&&n!==(n=i[4](i[6][1]))&&_(e,"y1",n),h[0]&80&&t!==(t=i[4](i[6][1]))&&_(e,"y2",t),h[0]&1056&&o!==(o=i[5](i[10][0]))&&_(e,"x1",o),h[0]&160&&s!==(s=i[5](i[7][1]))&&_(e,"x2",s),h[0]&64&&f!==(f=i[6][1]+"")&&P(r,f),h[0]&80&&p!==(p=i[4](i[6][1])+4)&&_(a,"y",p),h[0]&1056&&d!==(d=i[5](i[10][0])-20)&&_(a,"x",d)},d(i){i&&j(e),i&&j(a)}}}function ce(l){let e,n,t,o;return{c(){e=S("circle"),_(e,"r","3.5"),_(e,"cx",n=l[5](l[0])),_(e,"cy",t=l[4](l[1])),_(e,"stroke-width","1.5"),_(e,"stroke",o=l[18]),_(e,"fill","none")},m(s,a){L(s,e,a)},p(s,a){a[0]&36&&n!==(n=s[5](s[0]))&&_(e,"cx",n),a[0]&20&&t!==(t=s[4](s[1]))&&_(e,"cy",t),a[0]&260&&o!==(o=s[18])&&_(e,"stroke",o)},d(s){s&&j(e)}}}function me(l){let e,n,t,o=l[17],s=[];for(let a=0;al[9][l[9].length-1]&&ue(l),A=l[2],C=[];for(let c=0;cc[9][c[9].length-1]?b?b.p(c,M):(b=ue(c),b.c(),b.m(s,null)):b&&(b.d(1),b=null),M[0]&308){A=c[2];let u;for(u=0;u{k("process",{x:t,y:o})});const w=({x:b,y:A})=>[f(b),r(A)];return l.$$set=b=>{"value"in b&&n(11,i=b.value),"x"in b&&n(0,h=b.x),"y"in b&&n(1,E=b.y),"colors"in b&&n(12,m=b.colors)},l.$$.update=()=>{l.$$.dirty[0]&2051&&n(3,{x:t,y:o}=ee(typeof i=="string"?He(i):i,h,E),t,(n(2,o),n(11,i),n(0,h),n(1,E))),l.$$.dirty[0]&8&&n(7,s=x(t)),l.$$.dirty[0]&4&&n(6,a=x(o)),l.$$.dirty[0]&128&&n(5,f=$(s,[0,600]).nice()),l.$$.dirty[0]&64&&n(4,r=$(a,[350,0]).nice()),l.$$.dirty[0]&32&&n(10,p=f.ticks(8)),l.$$.dirty[0]&16&&n(9,d=r.ticks(8)),l.$$.dirty[0]&4&&n(8,v=o.reduce((b,A,C)=>({...b,[A.name]:U(C)}),{}))},[h,E,o,t,r,f,a,s,v,d,p,i,m,w]}class ke extends R{constructor(e){super(),V(this,e,Je,Ie,W,{value:11,x:0,y:1,colors:12},null,[-1,-1])}}function Pe(l){let e,n;return e=new ze({props:{filetype:"text/csv",include_file_metadata:!1,$$slots:{default:[We]},$$scope:{ctx:l}}}),e.$on("load",l[16]),{c(){N(e.$$.fragment)},m(t,o){H(e,t,o),n=!0},p(t,o){const s={};o&1048576&&(s.$$scope={dirty:o,ctx:t}),e.$set(s)},i(t){n||(z(e.$$.fragment,t),n=!0)},o(t){B(e.$$.fragment,t),n=!1},d(t){q(e,t)}}}function Re(l){let e,n,t,o,s;return n=new Be({}),n.$on("clear",l[14]),o=new ke({props:{value:l[11],y:l[4],x:l[5],colors:l[9]}}),o.$on("process",l[15]),{c(){e=X("div"),N(n.$$.fragment),t=Y(),N(o.$$.fragment),_(e,"class","chart svelte-etmurc")},m(a,f){L(a,e,f),H(n,e,null),y(e,t),H(o,e,null),s=!0},p(a,f){const r={};f&2048&&(r.value=a[11]),f&16&&(r.y=a[4]),f&32&&(r.x=a[5]),f&512&&(r.colors=a[9]),o.$set(r)},i(a){s||(z(n.$$.fragment,a),z(o.$$.fragment,a),s=!0)},o(a){B(n.$$.fragment,a),B(o.$$.fragment,a),s=!1},d(a){a&&j(e),q(n),q(o)}}}function Ve(l){let e,n,t,o;const s=[Ke,Ze],a=[];function f(r,p){return r[12]?0:1}return e=f(l),n=a[e]=s[e](l),{c(){n.c(),t=I()},m(r,p){a[e].m(r,p),L(r,t,p),o=!0},p(r,p){let d=e;e=f(r),e===d?a[e].p(r,p):(pe(),B(a[d],1,1,()=>{a[d]=null}),ve(),n=a[e],n?n.p(r,p):(n=a[e]=s[e](r),n.c()),z(n,1),n.m(t.parentNode,t))},i(r){o||(z(n),o=!0)},o(r){B(n),o=!1},d(r){a[e].d(r),r&&j(t)}}}function We(l){let e,n;return e=new qe({props:{type:"csv"}}),{c(){N(e.$$.fragment)},m(t,o){H(e,t,o),n=!0},p:O,i(t){n||(z(e.$$.fragment,t),n=!0)},o(t){B(e.$$.fragment,t),n=!1},d(t){q(e,t)}}}function Ze(l){let e,n;return e=new Fe({props:{size:"large",unpadded_box:!0,$$slots:{default:[Qe]},$$scope:{ctx:l}}}),{c(){N(e.$$.fragment)},m(t,o){H(e,t,o),n=!0},p(t,o){const s={};o&1048576&&(s.$$scope={dirty:o,ctx:t}),e.$set(s)},i(t){n||(z(e.$$.fragment,t),n=!0)},o(t){B(e.$$.fragment,t),n=!1},d(t){q(e,t)}}}function Ke(l){let e,n;return e=new ke({props:{value:l[12],colors:l[9]}}),{c(){N(e.$$.fragment)},m(t,o){H(e,t,o),n=!0},p(t,o){const s={};o&4096&&(s.value=t[12]),o&512&&(s.colors=t[9]),e.$set(s)},i(t){n||(z(e.$$.fragment,t),n=!0)},o(t){B(e.$$.fragment,t),n=!1},d(t){q(e,t)}}}function Qe(l){let e,n;return e=new be({}),{c(){N(e.$$.fragment)},m(t,o){H(e,t,o),n=!0},i(t){n||(z(e.$$.fragment,t),n=!0)},o(t){B(e.$$.fragment,t),n=!1},d(t){q(e,t)}}}function $e(l){let e,n,t,o,s,a,f,r;e=new Ue({props:{show_label:l[8],Icon:be,label:l[7]||"TimeSeries"}});const p=[l[10]];let d={};for(let m=0;m{h[w]=null}),ve()),~s?(a=h[s],a?a.p(m,k):(a=h[s]=i[s](m),a.c()),z(a,1),a.m(f.parentNode,f)):a=null)},i(m){r||(z(e.$$.fragment,m),z(t.$$.fragment,m),z(a),r=!0)},o(m){B(e.$$.fragment,m),B(t.$$.fragment,m),B(a),r=!1},d(m){q(e,m),m&&j(n),q(t,m),m&&j(o),~s&&h[s].d(m),m&&j(f)}}}function xe(l){let e,n;return e=new Se({props:{visible:l[3],variant:l[6]==="dynamic"&&!l[11]?"dashed":"solid",padding:!1,elem_id:l[1],elem_classes:l[2],$$slots:{default:[$e]},$$scope:{ctx:l}}}),{c(){N(e.$$.fragment)},m(t,o){H(e,t,o),n=!0},p(t,[o]){const s={};o&8&&(s.visible=t[3]),o&2112&&(s.variant=t[6]==="dynamic"&&!t[11]?"dashed":"solid"),o&2&&(s.elem_id=t[1]),o&4&&(s.elem_classes=t[2]),o&1056753&&(s.$$scope={dirty:o,ctx:t}),e.$set(s)},i(t){n||(z(e.$$.fragment,t),n=!0)},o(t){B(e.$$.fragment,t),n=!1},d(t){q(e,t)}}}function el(l){return l.data.map(e=>e.reduce((n,t,o)=>({...n,[l.headers[o]]:t}),{}))}function ll(l){const e=atob(l.split(",")[1]),n=l.split(",")[0].split(":")[1].split(";")[0],t=new ArrayBuffer(e.length),o=new Uint8Array(t);for(let s=0;sn.push(o));for(let o=0;os.push(a[o].y)),t.push(s)}return{headers:n,data:t}}function nl(l,e,n){let t;const o=de();let{elem_id:s=""}=e,{elem_classes:a=[]}=e,{visible:f=!0}=e,{value:r}=e,{y:p}=e,{x:d}=e,{mode:i}=e,{label:h}=e,{show_label:E}=e,{colors:m}=e,{loading_status:k}=e,v;function U(g){const c=new FileReader;c.addEventListener("loadend",M=>{n(11,v=M.srcElement.result)}),c.readAsText(g)}function w(g){g.headers&&n(11,v=g.headers.join(",")),g.data.forEach(M=>{n(11,v=v+` +`),n(11,v=v+M.join(","))})}function b(g){return n(0,r={data:g}),g}function A({detail:g}){n(0,r=null),o("change"),o("clear")}const C=({detail:{x:g,y:c}})=>n(0,r=tl(g,c)),D=({detail:g})=>b(g);return l.$$set=g=>{"elem_id"in g&&n(1,s=g.elem_id),"elem_classes"in g&&n(2,a=g.elem_classes),"visible"in g&&n(3,f=g.visible),"value"in g&&n(0,r=g.value),"y"in g&&n(4,p=g.y),"x"in g&&n(5,d=g.x),"mode"in g&&n(6,i=g.mode),"label"in g&&n(7,h=g.label),"show_label"in g&&n(8,E=g.show_label),"colors"in g&&n(9,m=g.colors),"loading_status"in g&&n(10,k=g.loading_status)},l.$$.update=()=>{l.$$.dirty&1&&(r&&r.data&&typeof r.data=="string"?r?U(ll(r.data)):n(11,v=null):r&&r.data&&typeof r.data!="string"&&(r||n(11,v=null),w(r))),l.$$.dirty&2049&&n(11,v=r==null?null:v),l.$$.dirty&65&&n(12,t=i==="static"&&r&&el(r)),l.$$.dirty&1&&o("change")},[r,s,a,f,p,d,i,h,E,m,k,v,t,b,A,C,D]}class ol extends R{constructor(e){super(),V(this,e,nl,xe,W,{elem_id:1,elem_classes:2,visible:3,value:0,y:4,x:5,mode:6,label:7,show_label:8,colors:9,loading_status:10})}}var bl=ol;const kl=["static","dynamic"],yl=l=>({type:{payload:"{data: Array> | string; headers?: Array;}"},description:{payload:"dataset of series"}});export{bl as Component,yl as document,kl as modes}; +//# sourceMappingURL=index.894bc2f2.js.map diff --git a/gradio/templates/cdn/assets/index.894bc2f2.js.map b/gradio/templates/cdn/assets/index.894bc2f2.js.map new file mode 100644 index 0000000000000000000000000000000000000000..cca1ea0253e88b7f07b49821b110c1843942c3e3 --- /dev/null +++ b/gradio/templates/cdn/assets/index.894bc2f2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.894bc2f2.js","sources":["../../../../ui/packages/icons/src/Chart.svelte","../../../../ui/packages/chart/src/utils.ts","../../../../ui/packages/tooltip/src/Tooltip.svelte","../../../../ui/packages/tooltip/src/tooltip.ts","../../../../ui/packages/chart/src/Chart.svelte","../../../../ui/packages/app/src/components/TimeSeries/TimeSeries.svelte","../../../../ui/packages/app/src/components/TimeSeries/index.ts"],"sourcesContent":["\n\t\n\t\n\n","interface XYValue {\n\tx: number;\n\ty: number;\n}\n\ninterface ObjectValue {\n\tvalues: XYValue[];\n}\n\nexport function get_domains(\n\tvalues: ObjectValue[] | { values: number[] }\n): [number, number] {\n\tlet _vs: number[];\n\tif (Array.isArray(values)) {\n\t\t_vs = values.reduce((acc, { values }) => {\n\t\t\treturn [...acc, ...values.map(({ y }) => y)];\n\t\t}, []);\n\t} else {\n\t\t_vs = values.values;\n\t}\n\treturn [Math.min(..._vs), Math.max(..._vs)];\n}\n\ninterface Row {\n\tname: string;\n\tvalues: number[];\n}\n\ninterface RowPoint {\n\tname: string;\n\tvalues: Array<{ x: number; y: number }>;\n}\n\ninterface TransformedValues {\n\tx: Row;\n\ty: Array;\n}\n\nexport function transform_values(\n\tvalues: Array>,\n\tx?: string,\n\ty?: string[]\n) {\n\tconst transformed_values = Object.entries(\n\t\tvalues[0]\n\t).reduce(\n\t\t(acc, next, i) => {\n\t\t\tif ((!x && i === 0) || (x && next[0] === x)) {\n\t\t\t\tacc.x.name = next[0];\n\t\t\t} else if (!y || (y && y.includes(next[0]))) {\n\t\t\t\tacc.y.push({ name: next[0], values: [] });\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\t{ x: { name: \"\", values: [] }, y: [] }\n\t);\n\n\tfor (let i = 0; i < values.length; i++) {\n\t\tconst _a = Object.entries(values[i]);\n\t\tfor (let j = 0; j < _a.length; j++) {\n\t\t\tlet [name, x] = _a[j];\n\t\t\tif (name === transformed_values.x.name) {\n\t\t\t\ttransformed_values.x.values.push(parseFloat(x));\n\t\t\t} else {\n\t\t\t\ttransformed_values.y[j - 1].values.push({\n\t\t\t\t\ty: parseFloat(_a[j][1]),\n\t\t\t\t\tx: parseFloat(_a[0][1])\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn transformed_values;\n}\n","\n\n\n\t\n\t{text}\n\n\n\n","import Tooltip from \"./Tooltip.svelte\";\n\ninterface ActionArgs {\n\tcolor: string;\n\ttext: string;\n}\n\nexport function tooltip(\n\telement: HTMLElement | SVGElement,\n\t{ color, text }: ActionArgs\n) {\n\tlet tooltipComponent: Tooltip;\n\tfunction mouse_over(event: MouseEvent) {\n\t\ttooltipComponent = new Tooltip({\n\t\t\tprops: {\n\t\t\t\ttext,\n\t\t\t\tx: event.pageX,\n\t\t\t\ty: event.pageY,\n\t\t\t\tcolor\n\t\t\t},\n\t\t\ttarget: document.body\n\t\t});\n\n\t\treturn event;\n\t}\n\tfunction mouseMove(event: MouseEvent) {\n\t\ttooltipComponent.$set({\n\t\t\tx: event.pageX,\n\t\t\ty: event.pageY\n\t\t});\n\t}\n\tfunction mouseLeave() {\n\t\ttooltipComponent.$destroy();\n\t}\n\n\tconst el = element as HTMLElement;\n\n\tel.addEventListener(\"mouseover\", mouse_over);\n\tel.addEventListener(\"mouseleave\", mouseLeave);\n\tel.addEventListener(\"mousemove\", mouseMove);\n\n\treturn {\n\t\tdestroy() {\n\t\t\tel.removeEventListener(\"mouseover\", mouse_over);\n\t\t\tel.removeEventListener(\"mouseleave\", mouseLeave);\n\t\t\tel.removeEventListener(\"mousemove\", mouseMove);\n\t\t}\n\t};\n}\n","\n\n
\n\t
\n\t\t{#each _y as { name }}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{name}\n\t\t\t
\n\t\t{/each}\n\t
\n\t\n\t\t\n\t\t\t{#each x_ticks as tick}\n\t\t\t\t y_ticks[y_ticks.length - 1]\n\t\t\t\t\t\t\t? y_domain[1]\n\t\t\t\t\t\t\t: y_ticks[y_ticks.length - 1]\n\t\t\t\t\t)}\n\t\t\t\t\tstroke=\"#aaa\"\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\t{tick}\n\t\t\t\t\n\t\t\t{/each}\n\n\t\t\t{#each y_ticks as tick}\n\t\t\t\t x_ticks[x_ticks.length - 1]\n\t\t\t\t\t\t\t? x_domain[1]\n\t\t\t\t\t\t\t: x_ticks[x_ticks.length - 1]\n\t\t\t\t\t)}\n\t\t\t\t\tstroke=\"#aaa\"\n\t\t\t\t/>\n\n\t\t\t\t\n\t\t\t\t\t{tick}\n\t\t\t\t\n\t\t\t{/each}\n\n\t\t\t{#if y_domain[1] > y_ticks[y_ticks.length - 1]}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{y_domain[1]}\n\t\t\t\t\n\t\t\t{/if}\n\t\t\n\n\t\t{#each _y as { name, values }}\n\t\t\t{@const color = color_map[name]}\n\t\t\t{#each values as { x, y }}\n\t\t\t\t\n\t\t\t{/each}\n\t\t\t [scale_x(x), scale_y(y)])\n\t\t\t\t)}\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke={color}\n\t\t\t\tstroke-width=\"3\"\n\t\t\t/>\n\t\t{/each}\n\n\t\t{#each _y as { name, values }}\n\t\t\t{@const color = color_map[name]}\n\t\t\t{#each values as { x, y }}\n\t\t\t\t\n\t\t\t{/each}\n\t\t{/each}\n\t\n\n\t
\n\t\t{_x.name}\n\t
\n
\n\n\n","\n\n\n\t\n\t\n\n\t{#if mode === \"static\"}\n\t\t{#if static_data}\n\t\t\t\n\t\t{:else}\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t{/if}\n\t{:else if _value}\n\t\t
\n\t\t\t\n\t\t\t (value = make_dict(x, y))}\n\t\t\t\t{colors}\n\t\t\t/>\n\t\t
\n\t{:else if value === undefined || value === null}\n\t\t handle_load(detail)}\n\t\t\tinclude_file_metadata={false}\n\t\t>\n\t\t\t\n\t\t\n\t{/if}\n\n\n\n","export { default as Component } from \"./TimeSeries.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"{data: Array> | string; headers?: Array;}\"\n\t},\n\tdescription: {\n\t\tpayload: \"dataset of series\"\n\t}\n});\n"],"names":["colors","color_palette","scaleLinear","ChartIcon","document"],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/cdn/assets/index.89ce7356.css b/gradio/templates/cdn/assets/index.89ce7356.css new file mode 100644 index 0000000000000000000000000000000000000000..c02568c42d3cf011dc008a256fdece5721dbccab --- /dev/null +++ b/gradio/templates/cdn/assets/index.89ce7356.css @@ -0,0 +1 @@ +.hide.svelte-ydeks8{display:none} diff --git a/gradio/templates/cdn/favicon.png b/gradio/templates/cdn/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6f5eb5a2f1f1c882d265cf479de25caa925645 Binary files /dev/null and b/gradio/templates/cdn/favicon.png differ diff --git a/gradio/templates/cdn/gradio.js b/gradio/templates/cdn/gradio.js new file mode 100644 index 0000000000000000000000000000000000000000..8caf3c7164af84cdf9fc854237bb1298507db5a8 --- /dev/null +++ b/gradio/templates/cdn/gradio.js @@ -0,0 +1,10 @@ + + +function make_script(src) { + const script = document.createElement('script'); + script.type = 'module'; + script.setAttribute("crossorigin", ""); + script.src = src; + document.head.appendChild(script); +} +make_script("https://gradio.s3-us-west-2.amazonaws.com/3.23.0/assets/index.7a68216a.js"); diff --git a/gradio/templates/cdn/index.html b/gradio/templates/cdn/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c5c97e3f62616401fa805bc5ab8f36effcd4e39c --- /dev/null +++ b/gradio/templates/cdn/index.html @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradio/templates/cdn/static/img/Bunny.obj b/gradio/templates/cdn/static/img/Bunny.obj new file mode 100644 index 0000000000000000000000000000000000000000..9baeb363cce8feb5dd62ecaf8d64a14b6c50ce37 --- /dev/null +++ b/gradio/templates/cdn/static/img/Bunny.obj @@ -0,0 +1,7474 @@ +# OBJ file format with ext .obj +# vertex count = 2503 +# face count = 4968 +v -3.4101800e-003 1.3031957e-001 2.1754370e-002 +v -8.1719160e-002 1.5250145e-001 2.9656090e-002 +v -3.0543480e-002 1.2477885e-001 1.0983400e-003 +v -2.4901590e-002 1.1211138e-001 3.7560240e-002 +v -1.8405680e-002 1.7843055e-001 -2.4219580e-002 +v 1.9067940e-002 1.2144925e-001 3.1968440e-002 +v 6.0412000e-003 1.2494359e-001 3.2652890e-002 +v -1.3469030e-002 1.6299355e-001 -1.2000020e-002 +v -3.4393240e-002 1.7236688e-001 -9.8213000e-004 +v -8.4314160e-002 1.0957263e-001 3.7097300e-003 +v -4.2233540e-002 1.7211574e-001 -4.1799800e-003 +v -6.3308390e-002 1.5660615e-001 -1.3838790e-002 +v -7.6903950e-002 1.6708033e-001 -2.6931360e-002 +v -7.2253920e-002 1.1539550e-001 5.1670300e-002 +v 1.2981330e-002 1.1366375e-001 3.8302950e-002 +v -3.7857280e-002 1.7010102e-001 1.4236000e-003 +v 4.8689400e-003 3.7962370e-002 4.5867630e-002 +v -5.7180550e-002 4.0918830e-002 4.6301340e-002 +v -4.5209070e-002 3.8839100e-002 4.4503770e-002 +v -3.3761490e-002 1.2617876e-001 1.7132300e-003 +v -5.0242270e-002 1.5773747e-001 9.3944500e-003 +v -2.1216950e-002 1.5887938e-001 -4.6923700e-003 +v -5.6472950e-002 1.5778406e-001 8.1786500e-003 +v -5.2802060e-002 4.1319860e-002 4.6169800e-002 +v -4.9960340e-002 4.3101950e-002 4.4462650e-002 +v -2.9748750e-002 3.6539860e-002 5.2493310e-002 +v -3.5438900e-003 4.2659770e-002 4.7541530e-002 +v 4.9304900e-003 4.1982660e-002 4.5723390e-002 +v -3.9088180e-002 1.6872020e-001 -1.1924680e-002 +v -5.6901000e-002 4.5437000e-002 4.3236960e-002 +v -4.1244880e-002 4.3098890e-002 4.2129560e-002 +v -2.6471980e-002 4.5034530e-002 5.1219460e-002 +v -2.1866970e-002 4.4022930e-002 5.3243800e-002 +v -3.6996250e-002 1.6899301e-001 1.3256300e-003 +v -6.7216590e-002 1.6171340e-001 -1.3733710e-002 +v 4.9760060e-002 7.0235220e-002 2.3732020e-002 +v -4.9186640e-002 4.6411230e-002 4.1170040e-002 +v -4.4590380e-002 4.3797990e-002 4.2685460e-002 +v -4.3686470e-002 4.7154500e-002 4.0286310e-002 +v -2.2491950e-002 4.6513620e-002 5.1885310e-002 +v -6.5174200e-003 4.5036200e-002 4.7502780e-002 +v 3.7699000e-004 4.4935790e-002 4.6519930e-002 +v 3.4023920e-002 1.1353879e-001 2.4595280e-002 +v -2.6467900e-002 1.8104250e-001 -8.0811700e-003 +v -1.7533470e-002 4.7964250e-002 4.8829630e-002 +v -7.0012600e-003 4.6416520e-002 4.7485540e-002 +v 5.9862300e-003 4.6689140e-002 4.9073620e-002 +v 9.1007200e-003 4.8474490e-002 4.9353190e-002 +v -3.5453700e-002 1.1244769e-001 3.5055410e-002 +v -7.5983200e-002 1.3820800e-001 4.9216580e-002 +v 3.4838440e-002 4.3153410e-002 2.8954310e-002 +v -5.2655550e-002 4.8494220e-002 3.8731190e-002 +v -4.7378940e-002 4.8456670e-002 3.9126790e-002 +v -3.8933750e-002 4.6364270e-002 4.0364780e-002 +v -2.6468940e-002 4.7816430e-002 4.9322590e-002 +v -2.2365790e-002 4.8073650e-002 5.0126500e-002 +v -1.3373430e-002 4.7892410e-002 4.7883850e-002 +v -1.2193490e-002 4.9470300e-002 4.9484490e-002 +v -6.3364000e-004 4.7193060e-002 4.9136900e-002 +v 2.0656800e-003 5.0104680e-002 5.2290220e-002 +v -2.2749270e-002 4.9883880e-002 4.6605520e-002 +v -1.8002080e-002 4.9917850e-002 4.6947970e-002 +v -7.8036800e-003 5.0169310e-002 5.0988650e-002 +v -2.6843800e-003 5.1247420e-002 5.3186790e-002 +v -6.3875650e-002 1.6140094e-001 -2.0064210e-002 +v 3.2434000e-002 4.5333970e-002 3.0316760e-002 +v -8.8064570e-002 1.2496764e-001 5.7412000e-004 +v -4.1503710e-002 1.6748512e-001 3.2765900e-003 +v -6.4457010e-002 1.5342891e-001 -5.1180400e-003 +v -3.4303190e-002 5.0520150e-002 3.8286020e-002 +v -2.2949400e-002 5.1020650e-002 4.3926450e-002 +v -1.4354710e-002 5.4428200e-002 5.0710310e-002 +v 1.3773100e-003 5.2302710e-002 5.3149010e-002 +v 3.6285000e-003 5.3198640e-002 5.3422710e-002 +v 8.0723800e-003 5.1574140e-002 5.1773560e-002 +v -7.2665890e-002 1.3005582e-001 5.1668200e-002 +v 3.7992780e-002 4.9793200e-002 3.1902020e-002 +v 3.8497260e-002 4.8062400e-002 3.1737450e-002 +v 2.1503510e-002 1.2563988e-001 2.1252620e-002 +v -7.6481330e-002 1.4827412e-001 -8.9376200e-003 +v -8.7240410e-002 1.1967213e-001 -1.7813000e-004 +v -4.3719960e-002 1.6822738e-001 2.3425000e-003 +v -4.0652200e-002 1.2266506e-001 2.6290300e-002 +v -4.6686180e-002 5.4570720e-002 3.7587370e-002 +v -4.4071750e-002 5.1058250e-002 3.8977810e-002 +v -3.8144110e-002 5.0599600e-002 3.9302160e-002 +v -1.9875770e-002 5.1607710e-002 4.6142000e-002 +v -1.6911250e-002 5.1843550e-002 4.8459320e-002 +v -1.6249190e-002 5.4292110e-002 5.0306940e-002 +v -1.0446540e-002 5.3685970e-002 5.1958610e-002 +v -4.3090900e-003 5.4467500e-002 5.3908250e-002 +v 7.8152700e-003 5.5050680e-002 5.2750250e-002 +v 3.7955090e-002 1.0488710e-001 -3.2031800e-003 +v -7.9003790e-002 1.2850550e-001 5.3149340e-002 +v -7.9778990e-002 1.3448894e-001 5.0990290e-002 +v -5.9129700e-002 1.5039712e-001 3.4489540e-002 +v -6.5691790e-002 1.4961818e-001 3.8160980e-002 +v -3.1951660e-002 1.2518394e-001 1.9400580e-002 +v -6.9372590e-002 1.6061775e-001 -9.1905000e-003 +v -4.5225500e-002 1.2935459e-001 2.0377520e-002 +v -4.1879110e-002 5.6164390e-002 3.9796700e-002 +v -3.0614840e-002 5.4412650e-002 3.6694290e-002 +v -2.4787600e-002 5.2606220e-002 4.0839760e-002 +v -2.1588860e-002 5.6836920e-002 4.5467040e-002 +v -2.4264000e-004 5.4536020e-002 5.4641200e-002 +v -8.0900510e-002 1.2558713e-001 5.2155370e-002 +v -2.9996210e-002 1.7811137e-001 -5.2358200e-003 +v 3.5515390e-002 5.0449570e-002 3.1439830e-002 +v 4.3315550e-002 5.2145550e-002 3.2492110e-002 +v -6.3938540e-002 1.5262699e-001 3.4481070e-002 +v -4.4489440e-002 6.1077710e-002 3.9545320e-002 +v -3.8979900e-002 5.7996270e-002 4.0151390e-002 +v -7.9087730e-002 1.7044488e-001 -4.1373170e-002 +v -4.6247300e-003 5.7759650e-002 5.3990710e-002 +v -1.4985500e-003 5.5925480e-002 5.4630800e-002 +v 5.1981700e-003 5.7017990e-002 5.3423530e-002 +v 3.0920000e-005 1.2315746e-001 3.4749660e-002 +v 3.3568300e-002 1.1523716e-001 2.1798410e-002 +v 3.8686300e-002 5.6450590e-002 3.1188930e-002 +v -3.4385780e-002 5.4096000e-002 3.8060290e-002 +v -8.5308300e-003 6.0159420e-002 5.5308950e-002 +v -4.4024000e-004 5.8343410e-002 5.4483410e-002 +v -9.1078730e-002 1.1506037e-001 4.0141810e-002 +v 4.0775480e-002 5.4557490e-002 3.2014740e-002 +v 4.5636880e-002 5.7402620e-002 3.1992220e-002 +v 2.0358850e-002 1.2448747e-001 2.5906340e-002 +v -1.4169700e-002 1.2767892e-001 1.3080500e-003 +v -1.1987590e-002 5.7493210e-002 5.2752420e-002 +v 3.2514500e-003 5.9828640e-002 5.5464300e-002 +v -1.2395240e-002 1.2264726e-001 3.3588280e-002 +v 1.3813780e-002 1.2322188e-001 3.2502590e-002 +v -7.7004310e-002 1.5521281e-001 2.4534770e-002 +v -2.8001360e-002 6.1075420e-002 3.7471210e-002 +v -8.5480000e-004 6.0593520e-002 5.5824810e-002 +v -3.8050200e-002 1.1527068e-001 3.3178540e-002 +v -1.6231340e-002 1.2382942e-001 2.9576990e-002 +v -2.5373550e-002 1.5840012e-001 -1.4801300e-003 +v -6.7818590e-002 1.5454353e-001 3.0233720e-002 +v -4.3082600e-003 6.1418570e-002 5.5688490e-002 +v -3.1958900e-003 1.1912518e-001 3.8349580e-002 +v -6.4292400e-003 1.2201090e-001 3.5740890e-002 +v 4.2312960e-002 5.9099150e-002 3.0848420e-002 +v 4.8510010e-002 6.1780760e-002 3.0347250e-002 +v 5.0412290e-002 6.0312610e-002 3.0245060e-002 +v -3.9185590e-002 6.3074530e-002 4.1382890e-002 +v -3.4448660e-002 6.0780500e-002 3.9543990e-002 +v -1.4746030e-002 6.5583910e-002 5.3730860e-002 +v 2.6645200e-003 6.2700010e-002 5.6525210e-002 +v -1.3991610e-002 1.1962575e-001 3.6251540e-002 +v 1.9659170e-002 1.1236219e-001 3.7545270e-002 +v -3.2597160e-002 1.7498725e-001 -2.5953100e-003 +v -2.1513900e-003 9.9437380e-002 4.9849750e-002 +v -5.6001390e-002 6.1830670e-002 2.7931150e-002 +v -5.4707260e-002 6.3461570e-002 3.1670590e-002 +v -5.1307940e-002 6.0521660e-002 3.1434930e-002 +v -4.1979320e-002 6.9629980e-002 4.1824930e-002 +v -3.0272490e-002 6.2474660e-002 3.7982220e-002 +v -1.1387860e-002 6.4742460e-002 5.4918000e-002 +v 6.9544900e-003 6.4700130e-002 5.5599150e-002 +v 4.3015090e-002 9.7690960e-002 1.0258300e-003 +v 4.0635900e-002 6.1574860e-002 2.9841250e-002 +v 4.6183560e-002 6.1910110e-002 3.0223400e-002 +v 3.7552960e-002 1.0685291e-001 2.6303470e-002 +v -7.8640730e-002 1.6387238e-001 -2.8387790e-002 +v -6.1996240e-002 1.4761484e-001 -4.3256800e-003 +v -5.7499800e-003 6.5488980e-002 5.6173390e-002 +v 2.5369000e-004 6.5741170e-002 5.6569260e-002 +v -2.0542550e-002 1.1979518e-001 3.3003670e-002 +v 4.3155900e-003 1.2782561e-001 2.8646880e-002 +v -4.6549580e-002 6.7652130e-002 3.9635790e-002 +v -1.7420580e-002 6.9659490e-002 5.4089530e-002 +v -1.5242190e-002 7.0909900e-002 5.5004790e-002 +v -1.0282890e-002 6.8926360e-002 5.5289610e-002 +v -1.1289000e-004 6.9288200e-002 5.6579790e-002 +v -3.6309330e-002 1.1876943e-001 3.0674020e-002 +v -7.0325800e-002 6.3367770e-002 1.9809180e-002 +v 4.3023100e-002 6.3795810e-002 2.8039210e-002 +v 4.2831110e-002 8.5556040e-002 2.7873760e-002 +v 1.6981600e-002 1.2715003e-001 2.2931490e-002 +v -4.2121490e-002 1.2825104e-001 1.0751500e-003 +v 1.6329230e-002 1.2251895e-001 3.1375390e-002 +v -8.1264160e-002 1.5381172e-001 2.5897830e-002 +v -3.2257870e-002 8.8192600e-002 -2.5130960e-002 +v -1.3774950e-002 7.0887950e-002 5.4695630e-002 +v 5.2929600e-003 6.8006030e-002 5.5670490e-002 +v 7.6962500e-003 7.2375600e-002 5.6062150e-002 +v 3.4830600e-003 1.2002635e-001 3.6911950e-002 +v 6.6532500e-003 1.1673563e-001 3.8716340e-002 +v 4.6086570e-002 6.6473930e-002 2.6808990e-002 +v 5.2327290e-002 6.4327070e-002 2.8281890e-002 +v -6.1897630e-002 1.2297065e-001 -8.7725500e-003 +v -6.3934700e-003 1.0524472e-001 -2.2841900e-002 +v -3.5218330e-002 6.8559830e-002 4.1381470e-002 +v -3.2689880e-002 6.7729720e-002 4.0124390e-002 +v -2.9245440e-002 6.9551520e-002 3.9369010e-002 +v -5.0024500e-003 6.9655000e-002 5.6892510e-002 +v 1.6573960e-002 1.1890153e-001 3.5042300e-002 +v -8.9385100e-002 9.9024040e-002 1.7521830e-002 +v 4.5719230e-002 6.9489400e-002 2.3549340e-002 +v 5.4537210e-002 6.8796720e-002 2.4517690e-002 +v -4.4989450e-002 7.1577330e-002 4.1929250e-002 +v -4.2439400e-003 1.2914902e-001 2.5829230e-002 +v -7.3880090e-002 1.2091638e-001 5.3395800e-002 +v -7.4033870e-002 1.4406894e-001 4.4994970e-002 +v 5.0400010e-002 6.7292480e-002 2.6851470e-002 +v -5.4056890e-002 1.5671602e-001 -2.4865900e-003 +v 2.6148110e-002 1.2014725e-001 2.7308010e-002 +v -1.0736490e-002 1.2990285e-001 1.0993790e-002 +v -4.5078840e-002 8.7261130e-002 -2.1865520e-002 +v -3.8340900e-002 6.8843770e-002 4.1846470e-002 +v -2.9255580e-002 7.5169210e-002 4.1186430e-002 +v -4.7311210e-002 1.6296037e-001 6.0740300e-003 +v -1.1866030e-002 7.3183750e-002 5.6250050e-002 +v -6.3734600e-003 7.2184340e-002 5.7972980e-002 +v -2.9935300e-003 7.2186440e-002 5.8167190e-002 +v -2.5781060e-002 9.3778180e-002 -2.8388220e-002 +v -1.6692560e-002 1.1568553e-001 3.7853150e-002 +v -8.4123410e-002 1.0832050e-001 2.4730980e-002 +v -7.4294080e-002 1.6356850e-001 -1.5534220e-002 +v -9.4297150e-002 1.2617744e-001 1.9224650e-002 +v -3.5207090e-002 1.2505219e-001 2.1635690e-002 +v -4.9495940e-002 7.3436340e-002 4.1673570e-002 +v -3.3064160e-002 7.6654840e-002 4.1277900e-002 +v -7.3157300e-003 7.3919590e-002 5.7971690e-002 +v 2.1850000e-005 7.3496040e-002 5.7696650e-002 +v 4.1934400e-003 7.2915170e-002 5.6298730e-002 +v -7.7256080e-002 1.4565854e-001 4.3122930e-002 +v 4.1073260e-002 8.8724320e-002 -9.7879400e-003 +v 3.7418710e-002 1.0850822e-001 3.3973000e-004 +v -5.5111380e-002 7.4687840e-002 4.1939740e-002 +v -4.2740230e-002 7.6995340e-002 4.2804080e-002 +v -6.8531190e-002 1.5630045e-001 2.0997710e-002 +v -9.9440200e-003 7.6343100e-002 5.7388560e-002 +v -3.2479200e-003 7.5710690e-002 5.8714640e-002 +v 1.3414380e-002 9.3073740e-002 5.1467750e-002 +v -7.3504440e-002 9.3883340e-002 -1.4751720e-002 +v -7.4471830e-002 1.3507476e-001 5.0688900e-002 +v -2.5851310e-002 1.2182948e-001 2.6079670e-002 +v -3.4022940e-002 1.7597076e-001 -3.7271600e-003 +v -7.5405850e-002 1.6839072e-001 -2.6792980e-002 +v -3.6658410e-002 7.5087300e-002 4.2006940e-002 +v -1.7795480e-002 7.7486190e-002 5.6087240e-002 +v -1.1378660e-002 7.9877150e-002 5.7698880e-002 +v -1.0415000e-004 7.6881950e-002 5.8190740e-002 +v 2.7381400e-003 7.9105680e-002 5.6719190e-002 +v 5.5681200e-003 7.6397140e-002 5.6327220e-002 +v -6.1895860e-002 1.5424247e-001 -1.9018600e-002 +v -7.2646960e-002 1.4098943e-001 4.6976640e-002 +v 1.5799740e-002 1.2901416e-001 1.3236870e-002 +v -1.1703420e-002 9.7355720e-002 5.1592080e-002 +v -5.8922160e-002 7.7545490e-002 4.2961390e-002 +v -5.3121320e-002 7.7912430e-002 4.3334920e-002 +v -5.0745740e-002 7.6148400e-002 4.3137630e-002 +v -4.7401820e-002 7.5550340e-002 4.2630140e-002 +v -4.5055620e-002 7.8796280e-002 4.2341310e-002 +v -3.9517650e-002 7.8127780e-002 4.2918620e-002 +v -1.5245570e-002 8.2940770e-002 5.6934590e-002 +v -1.4557790e-002 7.6582160e-002 5.6493250e-002 +v -5.9406000e-003 7.9038240e-002 5.7969830e-002 +v 3.7176540e-002 1.1064404e-001 1.8811330e-002 +v 2.3929700e-003 1.3162713e-001 1.1955100e-002 +v -9.3644210e-002 1.1789378e-001 1.8662080e-002 +v -6.3939810e-002 7.8621830e-002 4.2083520e-002 +v -4.5376460e-002 8.2383550e-002 4.3282120e-002 +v -3.6505460e-002 8.1152260e-002 4.3162320e-002 +v -3.3244340e-002 8.2266590e-002 4.1852180e-002 +v -3.0800650e-002 8.0068420e-002 4.1798070e-002 +v -2.0578500e-003 8.0998290e-002 5.7553840e-002 +v 8.1848100e-003 8.0756170e-002 5.5374510e-002 +v -1.2953370e-002 1.1593580e-001 3.8920230e-002 +v -7.8081470e-002 1.2351940e-001 5.2136990e-002 +v -2.6580930e-002 1.5567694e-001 -4.1963400e-003 +v -8.2471600e-002 1.1624130e-001 -2.3236300e-003 +v -2.7538480e-002 7.9964780e-002 4.7697210e-002 +v 1.2556400e-003 8.3845570e-002 5.7446440e-002 +v 6.1508300e-003 8.3406240e-002 5.6463500e-002 +v -6.2433240e-002 8.4035270e-002 4.4203120e-002 +v -5.9867170e-002 8.0540510e-002 4.3277090e-002 +v -5.5238340e-002 8.1999450e-002 4.4984770e-002 +v -5.4000400e-002 8.0568410e-002 4.4601460e-002 +v -5.0027020e-002 8.1311330e-002 4.4264180e-002 +v -4.1996120e-002 8.1083670e-002 4.2456150e-002 +v -3.9357940e-002 8.3631380e-002 4.3502350e-002 +v -8.6161480e-002 1.0838594e-001 1.8244920e-002 +v -8.6723010e-002 9.9917250e-002 3.5537100e-003 +v -2.2413700e-002 8.3283520e-002 5.5590700e-002 +v -1.6993180e-002 8.2555820e-002 5.7523880e-002 +v -1.2406010e-002 8.5222570e-002 5.7267780e-002 +v -7.4442100e-003 1.1693417e-001 3.9283850e-002 +v -2.1452000e-003 1.1143287e-001 4.2436620e-002 +v -7.5718220e-002 1.2522734e-001 5.3087330e-002 +v -7.7056660e-002 1.3193469e-001 5.2462430e-002 +v -6.1121040e-002 1.5569660e-001 2.2517050e-002 +v -3.7538540e-002 1.2744127e-001 1.5320870e-002 +v -2.0516700e-003 1.0093469e-001 4.5625920e-002 +v -6.4992150e-002 8.4550900e-002 4.4120060e-002 +v -5.7861950e-002 8.3944360e-002 4.4186030e-002 +v -4.5681080e-002 8.4988010e-002 4.4159500e-002 +v -3.5022640e-002 8.2888160e-002 4.2912760e-002 +v -2.9982010e-002 8.5402300e-002 4.3745080e-002 +v -8.8892260e-002 9.9209100e-002 9.5703200e-003 +v -1.9135300e-002 8.3474800e-002 5.7217390e-002 +v -8.3489710e-002 1.0724729e-001 7.5790000e-004 +v -7.0112800e-002 1.1790350e-001 5.2714160e-002 +v -3.5526320e-002 1.7595563e-001 -4.8676200e-003 +v -7.0831390e-002 1.2254425e-001 5.3274880e-002 +v 4.5133810e-002 9.3630690e-002 6.2336800e-003 +v -5.3616700e-002 8.5346850e-002 4.5332470e-002 +v -4.9000840e-002 8.6221680e-002 4.5352040e-002 +v -3.6744880e-002 8.6083690e-002 4.3612890e-002 +v -1.0872600e-002 8.8826770e-002 5.6665490e-002 +v -3.8450200e-003 8.4787810e-002 5.7197980e-002 +v -4.9020070e-002 1.1771293e-001 3.1581430e-002 +v -4.2914400e-002 1.1835991e-001 3.0645040e-002 +v -5.7684530e-002 1.5561695e-001 1.2983110e-002 +v -2.5411730e-002 1.2472533e-001 1.2886000e-004 +v 1.9012230e-002 1.2736197e-001 1.7786580e-002 +v -5.9498600e-002 8.8845470e-002 4.5109290e-002 +v -5.6931050e-002 8.8101500e-002 4.4692930e-002 +v 3.5765600e-003 1.3138981e-001 7.2086000e-003 +v -1.6683350e-002 8.7266690e-002 5.6741190e-002 +v -8.4980800e-003 8.3990470e-002 5.7605220e-002 +v 3.5078200e-003 8.6339520e-002 5.7048320e-002 +v -2.8398700e-002 1.8070650e-001 -7.8469500e-003 +v -7.6565830e-002 1.1674037e-001 5.1489350e-002 +v 1.7869430e-002 9.0898610e-002 4.8712940e-002 +v -4.0342100e-002 1.1669551e-001 3.2460200e-002 +v 5.9105700e-003 1.3140929e-001 1.6823750e-002 +v -8.5777550e-002 9.1701370e-002 -4.6970000e-005 +v -5.0372230e-002 8.8844660e-002 4.5188000e-002 +v -4.4434130e-002 8.7654530e-002 4.3477620e-002 +v -4.2056390e-002 8.6711520e-002 4.2534630e-002 +v -3.3058460e-002 8.6185500e-002 4.2560350e-002 +v -2.9241910e-002 9.0453360e-002 4.4236610e-002 +v -6.8964100e-003 8.4432910e-002 5.7168580e-002 +v -6.6210600e-003 9.0415250e-002 5.6879750e-002 +v -1.2439100e-003 8.9093200e-002 5.6552120e-002 +v 9.4076000e-003 9.0328050e-002 5.4214140e-002 +v 4.0194810e-002 1.0231597e-001 -2.0048600e-003 +v -8.6227130e-002 1.1466841e-001 2.2102000e-003 +v -8.9495490e-002 9.5632430e-002 1.4234810e-002 +v -6.7132160e-002 1.5709447e-001 -6.2032000e-003 +v -5.2935640e-002 9.0913520e-002 4.4568870e-002 +v -3.6744910e-002 8.8886950e-002 4.3312050e-002 +v -1.3626110e-002 8.9787930e-002 5.6674380e-002 +v 2.3337130e-002 1.2353449e-001 2.4874140e-002 +v -3.7053790e-002 1.2715094e-001 3.5474000e-004 +v -7.3696690e-002 1.5613015e-001 1.4359790e-002 +v -6.5592380e-002 9.1042400e-002 4.4092080e-002 +v -5.8997380e-002 9.2030670e-002 4.5335270e-002 +v -3.3238910e-002 8.8573580e-002 4.3697040e-002 +v -3.1834990e-002 9.0722970e-002 4.4173460e-002 +v -2.0022170e-002 8.8032110e-002 5.5589350e-002 +v -1.1213830e-002 9.2366370e-002 5.6105260e-002 +v 3.9108440e-002 1.0829072e-001 1.3142330e-002 +v 2.8675700e-002 1.1959600e-001 2.4545910e-002 +v -6.8940210e-002 1.5652777e-001 -1.9716000e-003 +v -6.2615110e-002 9.1126880e-002 4.5090730e-002 +v 3.0444560e-002 1.1886441e-001 2.0821750e-002 +v -1.5241090e-002 9.1821720e-002 5.5817230e-002 +v -5.6221700e-003 9.3235010e-002 5.5893630e-002 +v 4.7989900e-003 9.1654840e-002 5.4715170e-002 +v -6.8282400e-002 9.2376840e-002 4.2388730e-002 +v -5.5623730e-002 9.2187420e-002 4.5054970e-002 +v -5.1901030e-002 9.5457620e-002 4.3937650e-002 +v -4.8809030e-002 9.1083890e-002 4.4456690e-002 +v -4.5411560e-002 9.1002130e-002 4.3252770e-002 +v -4.4514550e-002 9.4860420e-002 4.2972490e-002 +v -3.9430320e-002 8.9597620e-002 4.3177890e-002 +v -3.5642240e-002 9.2617410e-002 4.4238490e-002 +v -1.2246000e-004 9.3201160e-002 5.5398380e-002 +v 9.5104600e-003 9.5483870e-002 5.0910600e-002 +v 2.1441660e-002 9.1354960e-002 4.8043360e-002 +v -8.9830300e-003 1.6926449e-001 -2.2683480e-002 +v -7.3019050e-002 1.5602104e-001 2.2419340e-002 +v -6.4760430e-002 1.5311588e-001 -2.0371200e-003 +v -6.9368510e-002 9.5242790e-002 4.2129000e-002 +v -6.0117140e-002 9.5552910e-002 4.4183820e-002 +v -2.9241690e-002 9.4290440e-002 4.4821190e-002 +v -2.6561430e-002 9.3289510e-002 4.4975420e-002 +v -1.4394030e-002 9.4587640e-002 5.3993500e-002 +v -8.8691600e-003 9.5400260e-002 5.4445980e-002 +v -1.2188700e-003 9.6201750e-002 5.3815910e-002 +v 4.0479000e-003 9.5817360e-002 5.2936770e-002 +v -4.6019400e-003 1.2428544e-001 3.3471960e-002 +v -7.8436460e-002 1.3928013e-001 4.8329360e-002 +v 1.0774610e-002 1.3079162e-001 1.4341740e-002 +v -5.6623730e-002 9.6322170e-002 4.3667910e-002 +v -3.6298870e-002 9.5695620e-002 4.3580310e-002 +v -2.4379930e-002 9.5866450e-002 4.4434530e-002 +v 1.0915500e-002 1.2633629e-001 2.9857020e-002 +v -5.8622700e-003 9.7350210e-002 5.2743650e-002 +v 1.6973450e-002 9.7106620e-002 4.7440920e-002 +v -6.7231980e-002 9.9173950e-002 4.1593880e-002 +v -5.4994210e-002 9.9640820e-002 4.2955230e-002 +v -4.8617990e-002 9.6452700e-002 4.4183060e-002 +v -5.5369000e-002 1.5442476e-001 1.6160650e-002 +v -9.4243550e-002 1.2207432e-001 2.3568470e-002 +v 1.3242990e-002 9.6738240e-002 4.8750160e-002 +v 2.0639290e-002 9.6602480e-002 4.6971000e-002 +v 7.3429700e-003 1.2098188e-001 3.5973430e-002 +v -1.3493870e-002 1.2882438e-001 5.9690700e-003 +v -2.0110640e-002 1.2504545e-001 2.3588310e-002 +v -6.9438450e-002 1.6479930e-001 -1.7218700e-002 +v -6.4028050e-002 9.7838670e-002 4.2565330e-002 +v -5.1996350e-002 9.9707850e-002 4.2716590e-002 +v -4.3990880e-002 9.9425460e-002 4.2383430e-002 +v -3.9738250e-002 1.0215357e-001 4.0574410e-002 +v -3.5931490e-002 9.9809950e-002 4.2335800e-002 +v -3.0867600e-002 9.6914680e-002 4.4651400e-002 +v -2.8342070e-002 9.7782680e-002 4.3761280e-002 +v -2.5622580e-002 9.8713420e-002 4.4210890e-002 +v -8.5236620e-002 1.1077356e-001 2.4537670e-002 +v 7.1936000e-003 9.8859470e-002 4.8419510e-002 +v 9.6509200e-003 1.0108782e-001 4.7373080e-002 +v 1.3487100e-002 1.0076420e-001 4.7454290e-002 +v 7.7389800e-003 1.3147500e-001 1.1682970e-002 +v 8.0905000e-004 1.1633319e-001 4.0167560e-002 +v -7.2652570e-002 1.6567918e-001 -1.8212480e-002 +v -5.6009400e-003 1.3076674e-001 1.0516060e-002 +v -2.6303720e-002 1.2518875e-001 1.7392980e-002 +v -4.7590430e-002 1.0081180e-001 4.2349150e-002 +v -4.1460830e-002 9.8544800e-002 4.1778620e-002 +v -3.3582070e-002 1.0383908e-001 4.0737990e-002 +v -2.2870240e-002 1.0284737e-001 4.3544750e-002 +v -2.2361970e-002 9.8207610e-002 4.4765940e-002 +v -1.8870510e-002 9.8973200e-002 4.4489280e-002 +v -7.1433690e-002 7.7573520e-002 3.8060760e-002 +v -7.3001150e-002 1.1826712e-001 5.3034590e-002 +v -6.8466430e-002 1.3498146e-001 -8.3359800e-003 +v -7.4683810e-002 1.0786100e-001 -9.0477100e-003 +v -6.4958960e-002 1.5852021e-001 -1.2595320e-002 +v -7.8931700e-002 1.5093057e-001 3.5151900e-002 +v -7.4113550e-002 9.9442520e-002 3.8337710e-002 +v -7.0456930e-002 1.0098777e-001 3.9794060e-002 +v -5.9058760e-002 1.0041260e-001 4.2725130e-002 +v -4.9187330e-002 1.0452012e-001 4.0301390e-002 +v -2.9151180e-002 1.0197369e-001 4.2633060e-002 +v -1.1599720e-002 1.0107813e-001 4.4191660e-002 +v 5.1450400e-003 1.0163906e-001 4.5423010e-002 +v -5.1495700e-002 1.0496738e-001 4.0347210e-002 +v -2.0218210e-002 1.0214391e-001 4.3701160e-002 +v 4.2515900e-003 1.0523743e-001 4.2563550e-002 +v 1.6832800e-002 1.0337487e-001 4.5287270e-002 +v -2.5661080e-002 1.2562669e-001 4.5537500e-003 +v -7.2141950e-002 1.0536685e-001 3.7523210e-002 +v -6.4984570e-002 1.0371550e-001 4.0647810e-002 +v -6.0652480e-002 1.0467197e-001 4.0906390e-002 +v -5.5308980e-002 1.0365394e-001 4.1516690e-002 +v -4.4243240e-002 1.0431726e-001 4.1339990e-002 +v -1.5513340e-002 1.0436131e-001 4.2919420e-002 +v -7.6323200e-003 1.0304531e-001 4.3710640e-002 +v -7.8046900e-003 1.0516619e-001 4.3825460e-002 +v 9.7163200e-003 1.0523506e-001 4.3603830e-002 +v 3.0300390e-002 1.1553645e-001 2.8685010e-002 +v -4.7496910e-002 1.0635662e-001 4.0165640e-002 +v -3.8978950e-002 1.0683037e-001 3.8247660e-002 +v -2.5869310e-002 1.0426705e-001 4.2207540e-002 +v -1.8057930e-002 1.0503919e-001 4.2802830e-002 +v -1.5180030e-002 1.0807750e-001 4.2350430e-002 +v -3.8981500e-003 1.0566175e-001 4.4047190e-002 +v 2.6820000e-005 1.0446731e-001 4.3775910e-002 +v 1.1978350e-002 1.0403629e-001 4.5396310e-002 +v 1.5004970e-002 1.0726898e-001 4.1811990e-002 +v 2.6488060e-002 1.2230287e-001 2.0398110e-002 +v -3.6225630e-002 1.0634244e-001 3.8644860e-002 +v -2.1126780e-002 1.0932290e-001 4.0715320e-002 +v -1.2819810e-002 1.0457100e-001 4.3465690e-002 +v 5.2847900e-003 1.0943666e-001 4.1674980e-002 +v 8.9403700e-003 1.0710645e-001 4.1243400e-002 +v -5.1839670e-002 1.6062039e-001 7.1421300e-003 +v -5.4201370e-002 1.1451730e-001 3.4843990e-002 +v 1.3226250e-002 1.2958070e-001 1.9689610e-002 +v -6.9382410e-002 1.0865787e-001 3.7507800e-002 +v -6.7691040e-002 1.0734145e-001 3.8018440e-002 +v -6.3782400e-002 1.1037270e-001 3.7579790e-002 +v -5.0749390e-002 1.0928682e-001 3.8297580e-002 +v -9.3936200e-003 1.0742813e-001 4.3454570e-002 +v 1.1760100e-003 1.0932531e-001 4.2662800e-002 +v 9.8020300e-003 1.1003994e-001 3.9945400e-002 +v 2.0131290e-002 1.0732778e-001 4.0323840e-002 +v -2.7872800e-003 1.0577531e-001 -2.2459030e-002 +v -5.4996890e-002 1.0774199e-001 3.9424590e-002 +v -4.5966740e-002 1.0905146e-001 3.8754110e-002 +v -4.2324540e-002 1.0737278e-001 3.9456440e-002 +v -3.2161240e-002 1.0896504e-001 3.8102720e-002 +v -3.0770180e-002 1.1597313e-001 3.2858800e-002 +v -1.1608610e-002 1.0983707e-001 4.2475330e-002 +v -2.9428320e-002 9.3166620e-002 -2.4931860e-002 +v -8.0043570e-002 9.2080160e-002 -9.4198200e-003 +v -4.9797430e-002 1.1342104e-001 3.5117920e-002 +v -4.3723850e-002 1.6191369e-001 5.7713400e-003 +v -5.7981740e-002 1.0943152e-001 3.7997640e-002 +v -4.1491180e-002 1.1224766e-001 3.5873450e-002 +v -2.4929830e-002 1.1592775e-001 3.4094730e-002 +v -2.0881690e-002 1.1409528e-001 3.7872990e-002 +v -7.5519700e-003 1.1183813e-001 4.2039690e-002 +v 3.7667200e-003 1.1240547e-001 4.1494710e-002 +v -6.2829620e-002 1.5189480e-001 -9.2373400e-003 +v -5.9195950e-002 1.1320797e-001 3.6234680e-002 +v -5.1079080e-002 9.3892810e-002 -2.1761690e-002 +v -7.3945370e-002 8.4374880e-002 -1.5154490e-002 +v -7.2146240e-002 1.3486431e-001 -7.7592200e-003 +v -1.9408870e-002 1.7041104e-001 -2.0994830e-002 +v -5.5530450e-002 1.4905531e-001 -1.9602100e-003 +v 1.6688460e-002 3.6976600e-002 4.3000600e-002 +v -5.2277330e-002 1.1775075e-001 3.3769460e-002 +v -6.9201380e-002 9.3039200e-002 -1.6486120e-002 +v 2.6579210e-002 1.1702438e-001 3.0867940e-002 +v -2.3574310e-002 3.7036910e-002 5.4144750e-002 +v -7.3775100e-003 3.8988430e-002 4.8929450e-002 +v 1.3234660e-002 3.8453060e-002 4.4501470e-002 +v 1.9487350e-002 4.0809290e-002 4.2641060e-002 +v -6.3953930e-002 1.4694729e-001 3.8484200e-002 +v -4.9579470e-002 3.6096540e-002 4.5955360e-002 +v -4.3323650e-002 3.6286400e-002 4.4042360e-002 +v -2.9047200e-002 1.2556338e-001 7.7617700e-003 +v -1.7343100e-003 3.9476800e-002 4.7262900e-002 +v -3.1358130e-002 1.5362199e-001 -4.6738900e-003 +v 2.5822000e-003 1.0747582e-001 -2.0606030e-002 +v -5.6802300e-002 1.4514674e-001 3.1740300e-002 +v -5.6464330e-002 3.7683110e-002 4.6819640e-002 +v -5.0964750e-002 3.8312290e-002 4.6286140e-002 +v -5.0980410e-002 1.3486613e-001 2.7585000e-002 +v -2.5647410e-002 3.8860730e-002 5.4161390e-002 +v -2.2542110e-002 4.0615780e-002 5.3986030e-002 +v -1.7618010e-002 3.8911170e-002 5.2403440e-002 +v -1.9711750e-002 1.6829145e-001 -1.3020960e-002 +v 2.3780070e-002 9.5222940e-002 4.6347330e-002 +v 1.4744290e-002 4.2716950e-002 4.4510310e-002 +v 2.1691360e-002 4.0161530e-002 4.0846450e-002 +v -6.4067240e-002 9.0172190e-002 -1.8855520e-002 +v 2.0319150e-002 1.0041961e-001 4.5760520e-002 +v -3.6425000e-002 9.3630690e-002 -2.3534630e-002 +v -1.4981170e-002 4.2571420e-002 5.1404530e-002 +v -5.7335340e-002 1.2340101e-001 4.0231470e-002 +v -5.4172560e-002 1.2337919e-001 3.7576440e-002 +v 2.2625210e-002 4.3621680e-002 4.0904580e-002 +v 2.8810520e-002 4.3352290e-002 3.2157720e-002 +v -4.2764160e-002 1.5727487e-001 5.2016200e-003 +v 9.2231900e-003 4.4125090e-002 4.5057440e-002 +v 1.5048210e-002 4.5755840e-002 4.3793870e-002 +v -6.3757290e-002 1.0251144e-001 -1.7484400e-002 +v -3.4070430e-002 1.6148975e-001 -1.3786960e-002 +v -8.2191500e-002 7.5610200e-002 1.6542620e-002 +v -6.6299420e-002 1.2337119e-001 5.0615920e-002 +v -1.5510100e-002 4.5283110e-002 5.0653040e-002 +v 1.8928020e-002 4.4249610e-002 4.3009830e-002 +v 2.5821800e-002 4.6326610e-002 3.8277230e-002 +v 2.7268700e-002 4.4547790e-002 3.6152520e-002 +v -4.5301340e-002 1.5695057e-001 7.2036900e-003 +v 2.3855760e-002 1.0616625e-001 3.9378080e-002 +v 2.1632670e-002 4.8127270e-002 4.0694430e-002 +v 4.3785360e-002 4.8803700e-002 3.1343420e-002 +v 4.8074790e-002 4.8969960e-002 2.8165490e-002 +v 5.2663090e-002 4.7673620e-002 2.1201270e-002 +v -5.2722450e-002 4.4722850e-002 4.4143250e-002 +v -3.0071610e-002 1.7258324e-001 -6.3597700e-003 +v -3.4508050e-002 1.5447469e-001 1.6504600e-003 +v 1.0629710e-002 4.6711810e-002 4.6472020e-002 +v 1.6743440e-002 4.8439000e-002 4.3678630e-002 +v 2.8827050e-002 9.2133370e-002 4.3920090e-002 +v -5.9937100e-002 1.2726188e-001 4.0771270e-002 +v -3.6752090e-002 1.5802075e-001 4.1862000e-003 +v -3.7885390e-002 1.6199719e-001 2.4686000e-004 +v -2.2047790e-002 1.8348586e-001 -1.2094990e-002 +v -2.4364620e-002 1.8096836e-001 -9.8312000e-003 +v -4.4882280e-002 1.5052959e-001 7.6451700e-003 +v 2.6996760e-002 5.1317780e-002 3.8752040e-002 +v 4.7735750e-002 5.2751040e-002 3.0797290e-002 +v 5.1703790e-002 4.8857380e-002 2.4147970e-002 +v -6.7504360e-002 1.1424088e-001 4.8036050e-002 +v -1.6257520e-002 1.6031250e-001 -9.6926000e-003 +v -6.3926300e-002 1.6792441e-001 -4.0730420e-002 +v -4.1665290e-002 1.4996141e-001 4.5405000e-003 +v -3.5203230e-002 1.6493551e-001 -2.6810000e-003 +v 4.1318770e-002 9.9496740e-002 2.4275750e-002 +v 1.4055220e-002 5.2523910e-002 4.8593880e-002 +v 1.9421220e-002 5.1321300e-002 4.4798910e-002 +v 2.3677990e-002 5.1474390e-002 4.1053270e-002 +v 3.4258130e-002 5.1930810e-002 3.2757880e-002 +v 5.5957340e-002 5.3147410e-002 2.3197720e-002 +v -3.9937960e-002 1.4922850e-001 1.6017200e-003 +v -4.6988800e-002 1.2600802e-001 2.6985500e-002 +v -2.7708370e-002 9.0081290e-002 -3.1911460e-002 +v 1.9204630e-002 5.5166510e-002 4.7722150e-002 +v 2.1886000e-002 5.3927560e-002 4.5102460e-002 +v 3.1286270e-002 5.2863840e-002 3.6913620e-002 +v 4.6661160e-002 5.4719230e-002 3.1976810e-002 +v 5.1823730e-002 5.3276700e-002 2.7927010e-002 +v -2.9264880e-002 1.6140418e-001 -2.1039500e-003 +v -6.8700770e-002 1.4463537e-001 4.3041630e-002 +v -5.6070060e-002 1.5000706e-001 2.9867640e-002 +v 4.4717850e-002 9.4802660e-002 1.2024710e-002 +v -4.1804090e-002 1.5582081e-001 6.4548200e-003 +v -6.8369340e-002 1.2289287e-001 5.2437860e-002 +v -6.4114810e-002 9.5509880e-002 -1.8114610e-002 +v -1.8383130e-002 1.8543664e-001 -1.7136370e-002 +v 1.1745400e-002 5.6678340e-002 5.1914060e-002 +v -5.9375360e-002 1.1998238e-001 4.0548240e-002 +v 5.9092080e-002 5.7956980e-002 2.0270120e-002 +v 4.3547740e-002 9.7389400e-002 1.7314650e-002 +v -2.6291780e-002 1.5963381e-001 -5.1845000e-004 +v 1.4904780e-002 5.6350380e-002 4.9522780e-002 +v 2.4286200e-002 5.4958580e-002 4.3086850e-002 +v 2.8952610e-002 5.6125250e-002 4.0388970e-002 +v -4.9507770e-002 1.2949500e-001 3.0259270e-002 +v 4.0824790e-002 9.5170220e-002 2.8657920e-002 +v 1.7774800e-002 5.8243780e-002 4.8864720e-002 +v 3.3573840e-002 5.8515260e-002 3.8310990e-002 +v 3.6385040e-002 5.6996480e-002 3.3601460e-002 +v -6.4205010e-002 1.2243894e-001 4.8008340e-002 +v -6.5424500e-002 1.4011279e-001 4.1308960e-002 +v 5.0801340e-002 5.7308080e-002 3.0001390e-002 +v 5.6671750e-002 5.6970820e-002 2.4291920e-002 +v -4.9349930e-002 1.4913519e-001 1.1274060e-002 +v -6.9760570e-002 1.3442855e-001 4.8265220e-002 +v 1.9537060e-002 6.0003780e-002 4.8576140e-002 +v 2.7013910e-002 5.9952790e-002 4.3454420e-002 +v 5.7679430e-002 6.1392970e-002 2.4201790e-002 +v -5.6916540e-002 1.2623512e-001 3.9426610e-002 +v 2.3469280e-002 1.1656262e-001 3.3537270e-002 +v -5.8298640e-002 1.3885500e-001 3.2937460e-002 +v 6.4598400e-003 6.0297430e-002 5.4780030e-002 +v 1.0406020e-002 5.9162400e-002 5.2484370e-002 +v 2.3183950e-002 5.8654360e-002 4.5871060e-002 +v 3.3040360e-002 6.1773840e-002 3.9781440e-002 +v -6.4348220e-002 1.2628088e-001 4.6650200e-002 +v -5.7031440e-002 1.1562007e-001 3.6494880e-002 +v 5.4451560e-002 5.8342890e-002 2.7653010e-002 +v -3.0134400e-002 1.7011322e-001 -7.3591600e-003 +v -3.7077100e-002 1.5986369e-001 1.6096500e-003 +v -5.6032760e-002 1.3731083e-001 3.1970590e-002 +v -6.7676470e-002 1.4150325e-001 4.3868140e-002 +v 9.9911700e-003 6.2735270e-002 5.4009240e-002 +v 1.4521510e-002 6.1382890e-002 5.0500900e-002 +v 3.0051740e-002 6.2169610e-002 4.1545810e-002 +v 3.7519170e-002 6.1062710e-002 3.4366020e-002 +v 5.3944010e-002 6.1391550e-002 2.8268530e-002 +v 5.9119900e-002 6.3128810e-002 2.1561830e-002 +v -2.4366390e-002 1.7693266e-001 -1.1719630e-002 +v -1.3253420e-002 1.6627152e-001 -1.4120370e-002 +v 3.9218740e-002 1.0669250e-001 2.0450190e-002 +v -1.7968980e-002 1.8078031e-001 -1.8103430e-002 +v 2.1902390e-002 6.0875970e-002 4.7282360e-002 +v 3.5341750e-002 6.1630030e-002 3.7606020e-002 +v -6.2145620e-002 1.3599775e-001 3.6700970e-002 +v 5.6820620e-002 6.3691150e-002 2.5286090e-002 +v -3.2800040e-002 1.5948699e-001 2.1962800e-003 +v 1.1212140e-002 6.6584120e-002 5.3982180e-002 +v 1.2919590e-002 6.4203580e-002 5.2441150e-002 +v 2.0126950e-002 6.3851330e-002 4.7919660e-002 +v 3.5971760e-002 6.6669610e-002 3.7781400e-002 +v 3.9906940e-002 6.4361260e-002 3.1686660e-002 +v -6.6702350e-002 1.3210600e-001 4.5480940e-002 +v -4.1601430e-002 1.5978000e-001 3.5374700e-003 +v 3.3044580e-002 1.0766252e-001 3.1916150e-002 +v 2.4672100e-002 6.3694500e-002 4.5204640e-002 +v 2.6108660e-002 6.8007640e-002 4.3902690e-002 +v 3.3363940e-002 6.7054760e-002 3.9729480e-002 +v 4.2915790e-002 6.6707700e-002 2.6994720e-002 +v 5.4714960e-002 6.4697160e-002 2.6979680e-002 +v -1.6530940e-002 1.6325000e-001 -9.2475200e-003 +v -1.7891600e-002 1.6113800e-001 -6.7072700e-003 +v 4.1118120e-002 9.7491260e-002 -3.9756700e-003 +v 2.3386770e-002 7.0075990e-002 4.7012620e-002 +v 3.8102900e-002 6.5678440e-002 3.5132520e-002 +v 1.0145240e-002 1.2221678e-001 3.4718950e-002 +v 5.8392410e-002 6.6741240e-002 2.1979460e-002 +v 3.8302050e-002 8.4549140e-002 -1.4478830e-002 +v 3.4126440e-002 9.7053980e-002 3.7590390e-002 +v -3.1355740e-002 1.5809888e-001 1.9128800e-003 +v -5.8259510e-002 1.4099493e-001 3.2440640e-002 +v -6.6817230e-002 1.1951525e-001 5.1490220e-002 +v -6.8090040e-002 1.1647050e-001 5.1151230e-002 +v 1.6568300e-002 6.6269890e-002 5.1009890e-002 +v 2.9362870e-002 6.6509780e-002 4.2289380e-002 +v 3.7027180e-002 9.3949630e-002 -1.1674040e-002 +v 5.6412730e-002 6.7659930e-002 2.3969320e-002 +v -6.1295740e-002 1.4519988e-001 3.7137830e-002 +v 8.3873000e-003 1.1336223e-001 3.9792610e-002 +v 1.1807030e-002 7.0920980e-002 5.4240490e-002 +v 2.9741730e-002 7.0647100e-002 4.1653890e-002 +v 3.6294410e-002 7.1220700e-002 3.7114610e-002 +v 3.9899680e-002 7.0294820e-002 3.2720020e-002 +v -6.2763130e-002 1.3778012e-001 3.6678590e-002 +v -1.5815440e-002 1.7504938e-001 -1.8654160e-002 +v -9.2268990e-002 1.1475156e-001 1.7017380e-002 +v -9.4964000e-004 1.0141111e-001 4.4290070e-002 +v -6.3712920e-002 1.1274250e-001 3.8006760e-002 +v -6.1096020e-002 1.1701650e-001 3.9654020e-002 +v 2.0991870e-002 6.9335450e-002 4.9003540e-002 +v 2.5658530e-002 7.0550460e-002 4.4539930e-002 +v 3.2978560e-002 7.3500690e-002 4.0486510e-002 +v 4.2156130e-002 6.9717580e-002 2.8318230e-002 +v -5.5516860e-002 1.2956070e-001 3.6598450e-002 +v -4.0802290e-002 1.6436059e-001 3.7448800e-003 +v -6.2546500e-003 1.0121650e-001 4.4322030e-002 +v -1.0986820e-002 1.6621199e-001 -1.6047550e-002 +v -3.0351420e-002 1.6448158e-001 -5.3291400e-003 +v 2.6110920e-002 1.0088990e-001 4.1733260e-002 +v -6.5599940e-002 1.1329504e-001 4.2318710e-002 +v 2.8814660e-002 9.6712680e-002 4.2257700e-002 +v 1.5263280e-002 7.1571940e-002 5.2717390e-002 +v 2.8982400e-002 7.4088480e-002 4.3447240e-002 +v 4.4872540e-002 7.5516710e-002 2.3155250e-002 +v -7.8225230e-002 1.4962481e-001 -2.5019400e-003 +v -4.6094940e-002 1.5296850e-001 9.0029700e-003 +v -5.2369030e-002 1.4682913e-001 1.8934650e-002 +v -2.1592100e-002 1.5763440e-001 -6.8623600e-003 +v 1.7176770e-002 7.3066230e-002 5.1826600e-002 +v 2.2687500e-002 7.5149180e-002 4.9312500e-002 +v 3.5472040e-002 7.3076670e-002 3.8482270e-002 +v -8.9480840e-002 1.3839976e-001 2.5061450e-002 +v -5.3216730e-002 1.3221978e-001 3.2978380e-002 +v -3.7776780e-002 1.5551947e-001 4.3700800e-003 +v -9.0549380e-002 1.3511875e-001 2.1680550e-002 +v -6.3366580e-002 1.3037076e-001 4.1669940e-002 +v 1.4074270e-002 7.6651720e-002 5.4221350e-002 +v 1.8109790e-002 7.5806590e-002 5.2488260e-002 +v 4.2209940e-002 7.8861480e-002 2.9187200e-002 +v -5.2115930e-002 1.4179906e-001 2.0510310e-002 +v 2.9063090e-002 1.1149602e-001 3.3805790e-002 +v -5.4731460e-002 1.4267229e-001 2.8980480e-002 +v 2.5903640e-002 7.5536040e-002 4.6416650e-002 +v 3.1298760e-002 7.5907440e-002 4.2699060e-002 +v 3.8446170e-002 7.5649430e-002 3.5050640e-002 +v 4.6351670e-002 7.4079520e-002 1.8354320e-002 +v -4.7656560e-002 1.3077525e-001 2.5523570e-002 +v -1.1447430e-002 1.7131059e-001 -1.9602980e-002 +v -3.6647240e-002 1.6640131e-001 -2.8167000e-004 +v -4.6653530e-002 1.5917824e-001 7.8019000e-003 +v -4.5569890e-002 1.4663612e-001 5.6514200e-003 +v 4.1438880e-002 9.2365100e-002 -7.4587000e-003 +v -6.4287420e-002 1.3463625e-001 3.9945640e-002 +v -6.1128890e-002 1.3178328e-001 3.8915910e-002 +v -4.7843540e-002 1.2215063e-001 2.8833160e-002 +v -4.9536830e-002 1.2491344e-001 3.1778440e-002 +v -7.1135380e-002 1.3817656e-001 4.7853960e-002 +v 1.0113870e-002 7.6468110e-002 5.5256790e-002 +v 1.7897450e-002 7.9516550e-002 5.2759530e-002 +v 2.1740850e-002 8.0250650e-002 5.0425390e-002 +v 2.5271590e-002 7.8724920e-002 4.8026570e-002 +v 3.0885040e-002 7.8999480e-002 4.3388770e-002 +v -6.2441930e-002 1.4084781e-001 3.6965840e-002 +v -6.2165060e-002 1.5666850e-001 -1.7837760e-002 +v 2.0657260e-002 1.0416830e-001 4.3004680e-002 +v -6.3602800e-002 1.1571453e-001 4.2572290e-002 +v 1.4424020e-002 8.0085500e-002 5.3755600e-002 +v 2.8779340e-002 8.2553250e-002 4.4527350e-002 +v 4.4450130e-002 8.1846900e-002 2.4552920e-002 +v 4.5541990e-002 8.3338380e-002 1.9700850e-002 +v -4.9665810e-002 1.2063801e-001 3.2163270e-002 +v -2.9177290e-002 1.7619959e-001 -5.6241100e-003 +v -5.8203130e-002 1.3270975e-001 3.6918680e-002 +v 3.8997050e-002 9.7088220e-002 -7.7799300e-003 +v -5.4725800e-002 1.2071262e-001 3.7451450e-002 +v 1.3189120e-002 8.4211180e-002 5.3065830e-002 +v -1.9926300e-002 1.6489742e-001 -9.9900200e-003 +v 2.0153130e-002 1.1849719e-001 3.4271250e-002 +v -5.5859940e-002 1.1774313e-001 3.7253480e-002 +v 1.8045260e-002 8.3623160e-002 5.1285840e-002 +v -6.3757130e-002 1.5912175e-001 -5.0155730e-002 +v -1.8527620e-002 1.7653197e-001 -1.7043540e-002 +v 2.8734400e-002 1.0360053e-001 3.8035240e-002 +v 4.1414010e-002 1.0284216e-001 1.6578920e-002 +v 2.4411730e-002 9.8016880e-002 4.4687400e-002 +v 2.0925180e-002 8.6311430e-002 4.9433120e-002 +v 3.0445010e-002 8.4959560e-002 4.3011090e-002 +v 3.3030090e-002 8.3781640e-002 4.1636930e-002 +v 3.6975090e-002 7.9876480e-002 3.7198390e-002 +v -7.7721460e-002 1.1355888e-001 4.8155990e-002 +v 2.9250000e-002 1.0651935e-001 3.6590330e-002 +v -5.3078180e-002 1.3754688e-001 2.8266470e-002 +v -6.2990590e-002 1.1999459e-001 4.5235530e-002 +v -6.5398320e-002 1.1751956e-001 4.8735570e-002 +v 3.3373910e-002 1.1227890e-001 2.7788130e-002 +v 3.8413590e-002 8.7489930e-002 3.5185850e-002 +v -6.1945930e-002 1.6479234e-001 -5.6647670e-002 +v -2.2876480e-002 1.7392813e-001 -1.3431140e-002 +v 4.3766230e-002 8.8390020e-002 -3.5708800e-003 +v 3.9291530e-002 1.0125969e-001 2.7550520e-002 +v 1.0936230e-002 8.6027290e-002 5.4732670e-002 +v 2.4108720e-002 8.4492600e-002 4.8292310e-002 +v 3.6758390e-002 9.9195470e-002 3.2837670e-002 +v -5.1941640e-002 1.2565987e-001 3.4587860e-002 +v -3.1582110e-002 1.6641850e-001 -5.7320000e-003 +v 7.6405900e-003 8.6427230e-002 5.6117850e-002 +v 1.6771020e-002 8.8644690e-002 5.0522960e-002 +v 3.4404610e-002 8.6932850e-002 4.0574270e-002 +v 3.6143820e-002 8.4439200e-002 3.7936930e-002 +v 4.1258830e-002 1.0361081e-001 2.6760600e-003 +v 2.4766140e-002 1.1081111e-001 3.6728360e-002 +v -2.2601590e-002 1.6250449e-001 -6.0717000e-003 +v -1.2893670e-002 1.7879041e-001 -2.2624750e-002 +v -2.4939150e-002 1.7031135e-001 -1.1329700e-002 +v -4.8468630e-002 1.4559606e-001 8.3661500e-003 +v 1.2534490e-002 8.9593930e-002 5.3394630e-002 +v 2.5872860e-002 8.8482290e-002 4.6655260e-002 +v 3.2756470e-002 8.8969130e-002 4.2215450e-002 +v -2.3343620e-002 1.6103450e-001 -3.1862400e-003 +v -9.2594970e-002 1.1943826e-001 2.6802950e-002 +v -7.4314840e-002 1.3761738e-001 -6.6698800e-003 +v -9.2499230e-002 1.2131500e-001 2.9256200e-002 +v -7.7378260e-002 1.5764266e-001 -1.4133650e-002 +v -9.2907340e-002 1.2307021e-001 3.6523230e-002 +v 2.8423340e-002 8.8011080e-002 4.4234200e-002 +v 3.5251680e-002 9.0836820e-002 3.9183920e-002 +v 1.5760560e-002 9.3203560e-002 4.9939310e-002 +v 3.8785530e-002 9.4954300e-002 3.2520220e-002 +v -6.1511220e-002 1.2373565e-001 4.3062680e-002 +v -6.8145120e-002 1.2748676e-001 5.0148970e-002 +v -2.0616710e-002 1.8237588e-001 -1.4299100e-002 +v 1.5137190e-002 1.1571495e-001 3.7031980e-002 +v -5.0718270e-002 1.5276300e-001 1.1816680e-002 +v 3.0168690e-002 1.0048686e-001 3.9404710e-002 +v -8.7426500e-002 9.5469530e-002 4.0312400e-003 +v -6.0010390e-002 1.4284463e-001 3.5449690e-002 +v -5.8603310e-002 1.4637237e-001 3.3808800e-002 +v 3.2411650e-002 9.3736150e-002 4.0890240e-002 +v -7.5917780e-002 1.4997690e-001 -1.6842050e-002 +v 1.8596570e-002 3.5293940e-002 -8.6782200e-003 +v 1.7209800e-002 3.5259400e-002 -1.4685160e-002 +v 4.4326540e-002 9.0818120e-002 2.2097520e-002 +v 3.8335910e-002 3.8830830e-002 3.0938100e-003 +v 2.2192920e-002 3.6775320e-002 -2.0919300e-003 +v 1.9636020e-002 3.8234010e-002 -1.2507670e-002 +v 2.3682120e-002 3.9762540e-002 3.7148760e-002 +v 4.6693280e-002 4.2465320e-002 6.5649500e-003 +v 2.1621110e-002 3.7657240e-002 -4.7021600e-003 +v 1.6638610e-002 3.8196090e-002 -1.9884930e-002 +v -9.0253980e-002 1.1366307e-001 3.7720210e-002 +v -9.0593870e-002 1.1373094e-001 1.0276770e-002 +v -6.2541690e-002 1.7679461e-001 -5.7821820e-002 +v -1.1091940e-002 1.7992082e-001 -2.5996430e-002 +v -6.2263130e-002 1.5219935e-001 -2.2578880e-002 +v -4.2276760e-002 9.4982570e-002 -2.2562420e-002 +v 4.3293410e-002 4.1864140e-002 2.0634400e-003 +v 4.3779590e-002 4.4530720e-002 -1.2622500e-003 +v 2.1696990e-002 4.0427270e-002 -9.4629500e-003 +v -1.1183700e-002 1.6450000e-001 -1.6151690e-002 +v -6.2372570e-002 1.5313041e-001 -2.8997120e-002 +v -9.2489300e-003 1.7725850e-001 -2.8270200e-002 +v 4.1477400e-002 8.5509410e-002 -9.1575000e-003 +v -8.1268710e-002 1.0879438e-001 2.9440660e-002 +v 4.9575680e-002 4.3815900e-002 1.4582960e-002 +v 5.2987960e-002 4.7747690e-002 5.0420000e-003 +v 2.1977540e-002 4.2855330e-002 -1.4536230e-002 +v 1.8505700e-002 3.8294100e-002 -1.7136500e-002 +v -3.5100500e-002 1.5203437e-001 -1.3279000e-004 +v 4.8749130e-002 4.5265000e-002 2.3023500e-003 +v 3.1912900e-002 9.9870060e-002 -1.4620980e-002 +v -1.4222520e-002 1.6167426e-001 -1.3349060e-002 +v -4.8663640e-002 1.3638523e-001 6.8063900e-003 +v -9.5837200e-003 1.7426102e-001 -2.8390760e-002 +v 5.2801850e-002 4.6539940e-002 1.0427720e-002 +v 5.1433800e-002 4.8485200e-002 1.0401000e-003 +v 2.3911240e-002 9.8021670e-002 -2.0807290e-002 +v 2.4567060e-002 4.4130110e-002 -1.0820840e-002 +v 2.0356810e-002 4.3662400e-002 -2.0456280e-002 +v -2.1882420e-002 1.1087418e-001 -1.9695320e-002 +v -5.3831800e-002 1.4981693e-001 2.5066610e-002 +v 5.4114210e-002 4.7773090e-002 1.7484000e-002 +v 5.6730570e-002 5.0515740e-002 1.0627080e-002 +v 4.5941820e-002 4.8138820e-002 -3.8715700e-003 +v -8.3817760e-002 1.1109094e-001 2.8524490e-002 +v 2.9207770e-002 4.7450250e-002 -8.5081800e-003 +v 2.8454920e-002 4.8067390e-002 -1.2847240e-002 +v 2.6637260e-002 4.7607100e-002 -1.6427740e-002 +v 2.2040110e-002 4.4992500e-002 -1.7528500e-002 +v 1.9120080e-002 4.7167750e-002 -2.2114680e-002 +v -1.5782200e-002 1.0072957e-001 -2.3724130e-002 +v -6.2514170e-002 1.7213119e-001 -5.2788100e-002 +v -6.2345600e-002 1.4745498e-001 -7.6600200e-003 +v 4.5598180e-002 8.8151720e-002 1.3124070e-002 +v -4.9422610e-002 1.4283525e-001 8.9728300e-003 +v -8.2761860e-002 1.1162341e-001 4.4221460e-002 +v -5.2166220e-002 1.5013661e-001 1.7448750e-002 +v -6.3616740e-002 1.4801371e-001 -2.0170260e-002 +v -5.1492690e-002 1.3796388e-001 2.3662180e-002 +v -6.1517580e-002 1.7517449e-001 -6.0631700e-002 +v 5.6524870e-002 5.0125660e-002 1.5564490e-002 +v 5.5257900e-002 5.1416260e-002 3.2062600e-003 +v 5.0318130e-002 5.2786370e-002 -3.4166300e-003 +v -6.2681950e-002 1.6744086e-001 -4.5713890e-002 +v 5.6520150e-002 5.1179900e-002 1.9940560e-002 +v 5.6907980e-002 5.1578130e-002 7.2538300e-003 +v 5.2854160e-002 5.1898670e-002 -6.2070000e-004 +v -3.8921140e-002 3.3767390e-002 -2.9042560e-002 +v 2.9740700e-002 5.0324690e-002 -1.3990860e-002 +v -6.8796190e-002 3.5117720e-002 -5.2067400e-003 +v 5.8826020e-002 5.5503780e-002 1.8647920e-002 +v -2.6160570e-002 1.2309988e-001 -4.4735500e-003 +v -5.3341960e-002 1.4401200e-001 2.4261390e-002 +v 5.8177390e-002 5.2821320e-002 1.5182420e-002 +v 5.9798140e-002 5.6840180e-002 1.3342730e-002 +v 5.4549870e-002 5.6044630e-002 -6.6158000e-004 +v 2.6775460e-002 5.1423450e-002 -2.0234060e-002 +v -8.6960400e-003 1.7291588e-001 -2.6708770e-002 +v -7.7039560e-002 7.1967020e-002 2.6405070e-002 +v -6.3069890e-002 1.5897471e-001 -4.2951850e-002 +v 3.5706690e-002 5.6083040e-002 -8.9993300e-003 +v 3.2600380e-002 5.3707520e-002 -1.1006150e-002 +v 2.9739960e-002 5.2538430e-002 -1.6224950e-002 +v 5.9238530e-002 5.6362780e-002 9.4530800e-003 +v 5.7421750e-002 5.6012210e-002 4.0245600e-003 +v 2.9062990e-002 5.5210580e-002 -1.8042060e-002 +v -1.7224410e-002 9.5214090e-002 -3.2085300e-002 +v -8.5911380e-002 1.0968787e-001 7.6582400e-003 +v 6.0594930e-002 6.1677210e-002 1.5591560e-002 +v 5.9531640e-002 6.0504600e-002 5.8397000e-003 +v 5.7306470e-002 5.9944620e-002 1.8886400e-003 +v 3.8829380e-002 5.9839830e-002 -6.4252500e-003 +v 3.0662770e-002 5.7300390e-002 -1.6518370e-002 +v -2.7762070e-002 1.2068537e-001 -9.0152900e-003 +v -8.8194590e-002 1.0314633e-001 1.7509020e-002 +v 6.0778800e-002 6.1646560e-002 1.0463990e-002 +v 3.5915080e-002 5.9916380e-002 -1.1966510e-002 +v 2.4251860e-002 5.6457470e-002 -2.4254800e-002 +v -6.1954390e-002 1.6865320e-001 -5.2621160e-002 +v -9.0557930e-002 1.1275994e-001 1.6141030e-002 +v -8.8469220e-002 1.1124294e-001 1.2679160e-002 +v 5.9558010e-002 6.3099260e-002 5.9471000e-003 +v 3.0940440e-002 6.0518080e-002 -1.8132720e-002 +v -9.3575750e-002 1.2474629e-001 2.6213300e-002 +v -9.3189820e-002 1.2019919e-001 3.7913720e-002 +v -9.2296100e-003 1.7314463e-001 -2.4197660e-002 +v -8.1739460e-002 7.6861340e-002 2.3313610e-002 +v -3.6992750e-002 1.5063932e-001 -2.0372300e-003 +v 6.0093570e-002 6.5693450e-002 1.8533320e-002 +v 5.9837240e-002 6.6423180e-002 8.5139400e-003 +v 4.0706180e-002 6.4475310e-002 -5.5920300e-003 +v 3.4745940e-002 6.3261340e-002 -1.4646740e-002 +v -6.1879660e-002 1.6000450e-001 -2.5806250e-002 +v -7.6537810e-002 1.5344875e-001 -1.2898750e-002 +v 3.8111070e-002 6.4811810e-002 -1.1142000e-002 +v 3.1909340e-002 6.4657050e-002 -1.8473410e-002 +v -8.3159350e-002 1.4674277e-001 3.0757900e-003 +v -8.7055900e-002 1.0562761e-001 9.7651100e-003 +v -7.1448330e-002 1.8105301e-001 -5.5478550e-002 +v -8.5632110e-002 1.2461094e-001 -2.7335800e-003 +v 6.0728970e-002 6.5806600e-002 1.3974830e-002 +v 3.9909650e-002 6.8171740e-002 -9.5698200e-003 +v 3.4981790e-002 6.7740790e-002 -1.5683210e-002 +v -9.1822030e-002 1.2747346e-001 3.6458650e-002 +v -6.2425420e-002 1.6366637e-001 -4.9667290e-002 +v -7.1168950e-002 1.4740156e-001 -2.7590940e-002 +v -5.0364760e-002 1.3715763e-001 1.9526100e-003 +v -5.0492650e-002 1.4159899e-001 1.6291740e-002 +v 5.9886670e-002 6.8513050e-002 1.6171610e-002 +v -6.1406990e-002 1.7268822e-001 -5.8265750e-002 +v 2.4990740e-002 6.5897320e-002 -2.3568270e-002 +v -7.4852750e-002 1.4993112e-001 -2.7752940e-002 +v -6.2225690e-002 6.0265200e-002 2.0449290e-002 +v -6.2001940e-002 3.6435020e-002 4.3918940e-002 +v 5.8374570e-002 7.1186410e-002 1.3072740e-002 +v -3.6125040e-002 1.2286688e-001 -8.2927900e-003 +v 2.9216510e-002 6.7850250e-002 -2.0418570e-002 +v -4.1681700e-002 1.2575112e-001 -7.0193300e-003 +v -7.4226550e-002 1.6437012e-001 -3.8240340e-002 +v -9.7845700e-003 1.6928488e-001 -2.4756660e-002 +v -8.9577950e-002 1.2078310e-001 3.5229100e-003 +v -6.2311930e-002 1.6371109e-001 -4.0623990e-002 +v 4.3514770e-002 9.1519890e-002 -2.6468100e-003 +v -4.8434350e-002 1.3754973e-001 1.3244980e-002 +v -8.9313160e-002 1.3653006e-001 3.0458750e-002 +v -7.4230190e-002 1.5652681e-001 -2.5167090e-002 +v 3.7378600e-002 7.3093410e-002 -1.2635370e-002 +v 2.6321810e-002 7.0240650e-002 -2.3878680e-002 +v -4.8023620e-002 1.4426649e-001 4.2498600e-003 +v -9.2019580e-002 1.1611534e-001 3.5842730e-002 +v -7.1305510e-002 7.3899020e-002 3.5969780e-002 +v -6.2059290e-002 1.5697807e-001 -3.3784580e-002 +v -9.7015300e-003 1.6738863e-001 -1.9360250e-002 +v 4.3342140e-002 7.1676120e-002 -2.2304600e-003 +v 4.1772460e-002 6.9568020e-002 -6.1596000e-003 +v 3.3505410e-002 7.2809860e-002 -1.7034800e-002 +v 2.9665000e-002 7.1506830e-002 -2.1282340e-002 +v -2.9460160e-002 1.5550263e-001 -1.1914700e-003 +v -8.6396440e-002 1.0479356e-001 5.9820600e-003 +v -5.4910700e-002 1.4662313e-001 2.8438970e-002 +v 4.4203810e-002 8.5204260e-002 -2.1170500e-003 +v 4.3264350e-002 7.5810540e-002 -3.8843900e-003 +v 1.3096990e-002 9.1126480e-002 -2.9269770e-002 +v -6.7069210e-002 9.1144610e-002 -1.7425950e-002 +v -9.0821680e-002 1.2276896e-001 6.0998500e-003 +v 4.5620000e-002 7.4684430e-002 2.6073900e-003 +v -9.3039800e-002 1.2026416e-001 1.1216820e-002 +v 4.4635590e-002 9.2794290e-002 1.7832070e-002 +v -1.1243390e-002 1.6457514e-001 -1.8240780e-002 +v 4.5511190e-002 8.6953050e-002 3.8865500e-003 +v 4.6252720e-002 7.7373870e-002 6.9140800e-003 +v 4.0281640e-002 7.2637130e-002 -9.2881000e-003 +v 4.3218200e-002 9.9486740e-002 5.0153300e-003 +v -5.1108270e-002 1.4520219e-001 1.4279480e-002 +v 4.4692980e-002 9.2688550e-002 2.2466700e-003 +v 4.3422540e-002 9.1860370e-002 2.4538450e-002 +v 4.0751360e-002 1.0554729e-001 7.5074100e-003 +v -8.5613030e-002 9.6277110e-002 -6.6514000e-004 +v 4.0721470e-002 7.8475530e-002 -8.2130000e-003 +v 3.5538080e-002 7.6062960e-002 -1.4434750e-002 +v -9.2736510e-002 1.2073095e-001 3.2692730e-002 +v -6.2278520e-002 1.5166598e-001 -1.4672730e-002 +v 4.4960220e-002 8.0942630e-002 6.1119000e-004 +v 3.7814740e-002 7.9698150e-002 -1.3289630e-002 +v 3.3864490e-002 7.8656690e-002 -1.7632490e-002 +v -9.1044280e-002 1.4199862e-001 2.1729630e-002 +v -7.4004450e-002 1.7818523e-001 -5.3916320e-002 +v -6.1768650e-002 1.6067957e-001 -3.4046350e-002 +v -4.9747450e-002 1.4112519e-001 5.2937500e-003 +v 4.1065440e-002 9.0460700e-002 2.9888620e-002 +v -7.2916360e-002 6.5057400e-002 1.8794620e-002 +v -9.0949690e-002 1.3895375e-001 1.7371130e-002 +v 4.2879050e-002 1.0093777e-001 9.4753200e-003 +v -7.2455480e-002 1.7610676e-001 -5.3535420e-002 +v -7.5862940e-002 1.5071299e-001 -9.0209000e-003 +v -8.5269820e-002 1.0267793e-001 1.3935600e-003 +v -7.7025570e-002 1.1396763e-001 -4.6168100e-003 +v 4.6280880e-002 7.8702020e-002 1.4786330e-002 +v 4.2106910e-002 8.1533160e-002 -6.6690900e-003 +v 3.6523880e-002 8.1991750e-002 -1.6229590e-002 +v -3.7420220e-002 4.5428500e-002 -2.4226790e-002 +v -8.5148910e-002 1.3965520e-001 2.4808500e-003 +v -6.3313300e-002 1.6503258e-001 -3.2895120e-002 +v -6.1591410e-002 1.5681572e-001 -2.5945630e-002 +v 4.5918540e-002 8.7036220e-002 8.4236300e-003 +v 4.4631140e-002 8.4178380e-002 8.2665000e-004 +v -4.4842870e-002 1.4629393e-001 1.7114800e-003 +v -6.4124180e-002 1.7953625e-001 -5.8730420e-002 +v -6.7070300e-002 1.8072682e-001 -5.6618620e-002 +v -6.4793760e-002 1.7885275e-001 -5.5883250e-002 +v -6.4371030e-002 1.7296209e-001 -4.9225660e-002 +v -7.0381530e-002 1.8071180e-001 -5.3172590e-002 +v -7.5269270e-002 1.5232949e-001 3.4374060e-002 +v -1.6273090e-002 1.2844514e-001 1.6683610e-002 +v -6.2116150e-002 1.5600787e-001 1.8034420e-002 +v -5.6010790e-002 1.5381662e-001 2.5369280e-002 +v -3.7277920e-002 1.7289068e-001 -8.6627000e-004 +v -7.4158700e-002 1.7987275e-001 -5.0794750e-002 +v -7.9039960e-002 1.5537445e-001 1.5141810e-002 +v -7.2505530e-002 1.5459529e-001 2.9588830e-002 +v -6.7738180e-002 1.7728865e-001 -5.0375960e-002 +v -7.5346900e-003 1.0021302e-001 4.7488700e-002 +v -5.9575620e-002 1.5472401e-001 2.6373250e-002 +v -7.7382710e-002 1.5346600e-001 3.0894990e-002 +v -8.1496670e-002 1.5473104e-001 1.9697340e-002 +v -7.2223320e-002 1.5896734e-001 -5.4242300e-003 +v -1.3708500e-002 1.8491150e-001 -2.5549550e-002 +v -4.3465340e-002 1.2451145e-001 2.2518890e-002 +v -6.9103650e-002 1.5559479e-001 1.6370800e-003 +v -7.3748080e-002 1.5539253e-001 2.3491700e-003 +v -6.8192410e-002 1.7439828e-001 -4.5365870e-002 +v -6.0052850e-002 1.5280350e-001 3.2887630e-002 +v -2.3459490e-002 1.2615386e-001 1.6613770e-002 +v -7.2777220e-002 1.7854465e-001 -4.8208800e-002 +v -7.6595580e-002 1.7753227e-001 -4.7118080e-002 +v 1.3906410e-002 1.2790838e-001 2.5110240e-002 +v -8.6367510e-002 1.0906537e-001 1.1980640e-002 +v -3.1358850e-002 1.2140977e-001 2.5971090e-002 +v -4.9104590e-002 1.3666879e-001 1.9314030e-002 +v -4.2930640e-002 1.2928436e-001 9.2700700e-003 +v -6.5320350e-002 1.5390322e-001 9.1386000e-004 +v -3.7606490e-002 1.2422605e-001 2.4313530e-002 +v 9.5078400e-003 1.3041865e-001 2.0715020e-002 +v -1.7976800e-003 1.3117283e-001 1.6360660e-002 +v 3.6231700e-003 1.3076791e-001 2.1168600e-002 +v -9.2674700e-002 1.1701945e-001 1.1889520e-002 +v -6.5739720e-002 1.5565338e-001 2.6017600e-002 +v -8.6561940e-002 1.4249188e-001 8.4326800e-003 +v -7.0731530e-002 1.5569959e-001 6.9058200e-003 +v -8.0840700e-003 1.3030537e-001 1.6872280e-002 +v -4.4286250e-002 1.2606625e-001 2.0795220e-002 +v -7.0222260e-002 1.5143521e-001 3.6718910e-002 +v -1.5210690e-002 1.8463639e-001 -2.2057240e-002 +v -1.7270750e-002 1.8699602e-001 -1.9977570e-002 +v -8.3560950e-002 1.5255943e-001 7.6806700e-003 +v -8.8130280e-002 9.7540510e-002 5.6788000e-003 +v -8.8399240e-002 1.3899000e-001 1.0640660e-002 +v -6.7780550e-002 1.5614453e-001 1.4276320e-002 +v -6.5864600e-003 1.2641717e-001 3.0226390e-002 +v -8.8746180e-002 1.3625578e-001 7.1477800e-003 +v -7.7206730e-002 1.5639950e-001 -1.8972540e-002 +v -9.3176480e-002 1.1821016e-001 2.3362360e-002 +v -2.3506850e-002 1.2672006e-001 1.0996900e-002 +v -6.6546650e-002 1.7171115e-001 -4.2127770e-002 +v -6.9136000e-002 1.7247836e-001 -3.9013330e-002 +v 5.7180270e-002 7.1107690e-002 8.0307600e-003 +v -7.5390870e-002 1.7952824e-001 -5.2402050e-002 +v -3.1828840e-002 1.2639115e-001 1.0013410e-002 +v -8.9888800e-003 1.2952269e-001 2.2026810e-002 +v 3.4325880e-002 1.1193312e-001 -2.2406500e-003 +v -8.1414950e-002 9.7100250e-002 -6.8745800e-003 +v -2.3298830e-002 1.8324307e-001 -1.7923000e-002 +v -6.1641660e-002 1.5582039e-001 1.1099820e-002 +v -8.8826450e-002 9.0483320e-002 2.1204700e-002 +v 5.8373130e-002 6.8067590e-002 5.7247600e-003 +v -4.3045630e-002 1.2785122e-001 1.6842260e-002 +v 3.0835720e-002 1.1554234e-001 -3.1785500e-003 +v -8.8631270e-002 9.4881200e-002 7.9337600e-003 +v -9.1715140e-002 1.1709957e-001 3.0809400e-002 +v -7.2083780e-002 1.7499844e-001 -4.1930320e-002 +v -6.9540630e-002 1.5308527e-001 3.3865720e-002 +v 6.0078690e-002 6.8129260e-002 1.1454500e-002 +v -4.0081060e-002 1.2628381e-001 1.9607250e-002 +v 3.2819930e-002 1.1655625e-001 4.4458600e-003 +v -7.2823220e-002 1.4510601e-001 -1.5654680e-002 +v -8.5270210e-002 1.0551770e-001 2.3290940e-002 +v -7.6051320e-002 1.1103825e-001 -6.2722100e-003 +v -8.6537730e-002 1.5154801e-001 2.5875370e-002 +v 5.5888480e-002 7.2579250e-002 1.0669650e-002 +v -5.4642360e-002 1.5522963e-001 1.2612400e-002 +v 3.6729960e-002 1.1116756e-001 3.8670600e-003 +v 3.1501870e-002 1.1725172e-001 1.6855100e-003 +v -7.8751550e-002 9.5240290e-002 -1.0600670e-002 +v -8.9408160e-002 1.4352815e-001 3.0924750e-002 +v -2.0891130e-002 1.8595338e-001 -1.5037360e-002 +v -7.0863560e-002 1.6136525e-001 -9.7324600e-003 +v -7.0919760e-002 1.7136688e-001 -3.2763750e-002 +v -3.0771290e-002 1.2564075e-001 1.6594770e-002 +v -5.4454180e-002 1.5297699e-001 2.2505190e-002 +v -1.5539500e-003 1.2754717e-001 2.9232870e-002 +v 2.9130550e-002 1.2027445e-001 6.1117500e-003 +v 2.5725940e-002 1.2122705e-001 -3.6150000e-005 +v -8.9318970e-002 9.9546980e-002 1.3418110e-002 +v -7.5429500e-002 1.7095605e-001 -3.2879890e-002 +v -2.8596020e-002 1.1901156e-001 2.9888170e-002 +v 2.1069780e-002 1.2497756e-001 1.0998100e-003 +v -9.2240760e-002 1.1816838e-001 4.1201730e-002 +v 2.4094600e-003 1.0016785e-001 4.6938070e-002 +v -5.6627620e-002 1.5270606e-001 2.9629030e-002 +v -5.7264800e-002 1.5506250e-001 1.9322430e-002 +v -3.6452070e-002 1.2199869e-001 2.7670650e-002 +v -7.4108160e-002 1.7355729e-001 -3.7986840e-002 +v 5.1537130e-002 7.3496690e-002 1.2698700e-002 +v -6.6096040e-002 1.5532529e-001 7.1561800e-003 +v 3.6102000e-002 1.1266103e-001 1.0491780e-002 +v 1.6715210e-002 1.2689851e-001 2.2331000e-004 +v -8.0767920e-002 1.4301400e-001 -1.5312800e-003 +v -9.1757600e-002 1.4334588e-001 1.7790710e-002 +v -8.6824940e-002 1.5280775e-001 1.5521450e-002 +v -6.5808100e-002 1.6764344e-001 -3.0558670e-002 +v -7.8217340e-002 1.6873975e-001 -3.3564250e-002 +v -7.2567060e-002 1.4753230e-001 4.1714090e-002 +v 5.8439960e-002 7.0200810e-002 1.7779620e-002 +v 5.6847560e-002 7.2017160e-002 1.7139380e-002 +v 5.4919390e-002 7.3161610e-002 1.5223590e-002 +v 4.7446900e-002 7.3691410e-002 1.2430020e-002 +v 1.2319360e-002 1.2903768e-001 1.3336200e-003 +v -7.9790640e-002 1.0351662e-001 -6.6275400e-003 +v -7.6655210e-002 1.5509766e-001 7.9686300e-003 +v 2.1747320e-002 1.2118456e-001 3.0878810e-002 +v -7.5260490e-002 1.4938613e-001 3.9175980e-002 +v -2.5919610e-002 1.8272826e-001 -1.3541090e-002 +v -6.7983790e-002 1.6974781e-001 -3.1627490e-002 +v 1.6831110e-002 1.2487146e-001 2.8425580e-002 +v 5.4016490e-002 7.2883850e-002 1.8678010e-002 +v 5.0522750e-002 7.3397910e-002 1.6166890e-002 +v -5.9582440e-002 1.5623338e-001 7.9209900e-003 +v 2.5343500e-002 1.2374750e-001 9.9818800e-003 +v 1.9262750e-002 1.2689390e-001 5.5552100e-003 +v -9.0758520e-002 1.4223375e-001 2.6008130e-002 +v -4.6548490e-002 1.3320769e-001 1.6889630e-002 +v -2.4106950e-002 1.8380887e-001 -1.1544760e-002 +v 8.6784400e-003 1.2894574e-001 2.6156880e-002 +v 2.4919200e-003 1.2983563e-001 2.4847110e-002 +v 5.7345150e-002 6.9482720e-002 2.1153510e-002 +v -8.5329840e-002 1.5339912e-001 2.0378290e-002 +v 3.2877320e-002 1.1691463e-001 9.2957500e-003 +v 2.4246630e-002 1.2377758e-001 4.8764500e-003 +v -4.7765650e-002 1.3301969e-001 2.2874020e-002 +v -6.3541830e-002 1.6332115e-001 -2.5912990e-002 +v -6.6605200e-002 1.6477375e-001 -2.0670760e-002 +v -6.8504220e-002 1.6732018e-001 -2.3959570e-002 +v -7.2759160e-002 1.6965906e-001 -2.7013420e-002 +v 4.8206850e-002 7.2698580e-002 1.6994630e-002 +v -2.7383180e-002 1.2324257e-001 2.1658860e-002 +v -4.5077500e-002 1.3124443e-001 1.1145770e-002 +v 2.9253150e-002 1.2057701e-001 1.2299330e-002 +v 1.3677610e-002 1.2967262e-001 6.9327400e-003 +v 8.4210900e-003 1.3090986e-001 6.2754400e-003 +v 9.6836000e-004 1.3064303e-001 2.5865900e-003 +v 3.0802000e-003 9.8307360e-002 5.0535640e-002 +v -5.2420170e-002 1.5310101e-001 1.2927370e-002 +v -7.0359720e-002 1.6906988e-001 -2.6144260e-002 +v 5.4359390e-002 7.1467260e-002 2.1381250e-002 +v 4.5161440e-002 7.1030380e-002 2.2530690e-002 +v 1.9320440e-002 1.2738348e-001 1.1296310e-002 +v -9.3281210e-002 1.2691094e-001 1.3505010e-002 +v -8.7405060e-002 1.0593990e-001 1.3645920e-002 +v -2.2851640e-002 9.0635040e-002 5.2280460e-002 +v -6.2099370e-002 1.5406697e-001 3.0837360e-002 +v -4.5851560e-002 1.2072981e-001 2.7665040e-002 +v 5.0781670e-002 7.2155170e-002 2.0680180e-002 +v -8.9607270e-002 1.3971105e-001 2.9308560e-002 +v -5.3323050e-002 1.5273520e-001 1.6213860e-002 +v -1.5227080e-002 1.2784878e-001 2.1545200e-002 +v 3.3663540e-002 1.1574212e-001 1.7181290e-002 +v 2.4000260e-002 1.2468761e-001 1.5517930e-002 +v -8.4166840e-002 9.7756820e-002 -3.2761900e-003 +v -3.6223590e-002 1.2777519e-001 9.8501500e-003 +v -3.9189580e-002 1.2828193e-001 5.0346300e-003 +v -3.3674050e-002 1.7774449e-001 -8.1799500e-003 +v -7.4488620e-002 1.5649443e-001 -2.5954600e-003 +v -4.6755620e-002 1.3284294e-001 8.1212800e-003 +v -8.4970410e-002 1.5322309e-001 1.2654460e-002 +v -1.0866210e-002 1.2691699e-001 2.7575440e-002 +v -3.1074000e-003 1.3072898e-001 5.6428500e-003 +v -8.8760540e-002 9.7037440e-002 2.1079040e-002 +v -6.4811320e-002 3.4530640e-002 1.5508440e-002 +v -6.4300260e-002 3.5086450e-002 2.4272050e-002 +v -6.6727020e-002 3.5895770e-002 3.3849430e-002 +v 1.9838510e-002 9.6518890e-002 -2.2785880e-002 +v -3.8670510e-002 1.6070199e-001 -1.2357760e-002 +v -7.6890090e-002 1.3041906e-001 -6.9570100e-003 +v -7.2539730e-002 3.5399270e-002 7.0298800e-003 +v -6.9209050e-002 3.5454810e-002 1.2042140e-002 +v -6.4160810e-002 3.5900770e-002 1.7687570e-002 +v -6.6804150e-002 3.7377740e-002 3.3296290e-002 +v -6.2928350e-002 3.9061660e-002 4.2707680e-002 +v -7.1752230e-002 3.6789350e-002 8.6966700e-003 +v -6.5171380e-002 3.7289500e-002 2.5953770e-002 +v -6.6392030e-002 3.7712350e-002 2.9621950e-002 +v -6.4558720e-002 3.9639900e-002 3.9411530e-002 +v -6.0145790e-002 4.1202050e-002 4.4293830e-002 +v -6.0318430e-002 3.8442990e-002 4.5245950e-002 +v -3.6756310e-002 8.8663360e-002 -2.3868800e-002 +v -3.9494750e-002 3.7551570e-002 4.2870900e-002 +v -7.2016030e-002 3.7572700e-002 3.9789400e-003 +v -7.1693630e-002 3.9461000e-002 6.0145000e-003 +v -7.1165950e-002 3.9366310e-002 8.1142100e-003 +v -6.9000300e-002 3.8467710e-002 1.0768900e-002 +v -6.7253420e-002 3.8142160e-002 1.3533960e-002 +v -6.1125670e-002 3.7790050e-002 1.9710900e-002 +v -3.9179680e-002 4.2406740e-002 4.1476070e-002 +v -3.5145960e-002 3.8585920e-002 4.7732690e-002 +v -2.8950940e-002 3.9285940e-002 5.3309090e-002 +v -1.8223900e-002 9.7494570e-002 4.6847940e-002 +v -6.6916260e-002 1.2278907e-001 -8.9077400e-003 +v -6.3754640e-002 3.8250120e-002 1.6593500e-002 +v -6.4415760e-002 4.1283840e-002 2.8243480e-002 +v -8.5856340e-002 9.7025390e-002 2.7414960e-002 +v -3.7501130e-002 4.0221900e-002 4.4296550e-002 +v -3.4333970e-002 4.0923630e-002 4.8425810e-002 +v -3.1172890e-002 4.0294330e-002 5.1312460e-002 +v -6.9997320e-002 4.2073080e-002 6.6897800e-003 +v -8.0379330e-002 9.7800660e-002 3.3645750e-002 +v -2.6273160e-002 7.7631160e-002 4.8356180e-002 +v -3.7501450e-002 4.2736690e-002 4.2988400e-002 +v -2.6177500e-002 4.2498930e-002 5.3315220e-002 +v -6.9637250e-002 4.1881270e-002 3.1825800e-003 +v -6.7156510e-002 4.1972860e-002 1.0240940e-002 +v -8.7405510e-002 1.0205209e-001 2.2020360e-002 +v -2.3944380e-002 7.8800140e-002 5.3534730e-002 +v -6.0902360e-002 4.3429500e-002 4.2678530e-002 +v -3.1217880e-002 4.3847510e-002 4.9780920e-002 +v -7.5729440e-002 1.0354026e-001 3.6070970e-002 +v -6.2425320e-002 4.1885720e-002 1.4646770e-002 +v -6.1051660e-002 4.4392230e-002 1.2421940e-002 +v 2.5855060e-002 8.9610660e-002 -2.2701840e-002 +v -7.7644960e-002 8.2214940e-002 3.5797660e-002 +v -6.0381270e-002 4.5921420e-002 4.0088740e-002 +v -2.4982010e-002 8.1777650e-002 5.3421060e-002 +v -3.4453850e-002 4.4563960e-002 4.5422990e-002 +v -2.9842910e-002 4.6782280e-002 4.7746920e-002 +v -1.5119580e-002 9.9930020e-002 4.4500270e-002 +v -6.7306470e-002 4.4176830e-002 7.5958300e-003 +v -5.7852990e-002 4.6444500e-002 1.1062610e-002 +v -5.1815260e-002 1.6392582e-001 1.7488800e-003 +v -5.5174130e-002 4.8383880e-002 3.8517780e-002 +v -7.8849150e-002 1.1867375e-001 5.0622870e-002 +v -2.7229070e-002 8.7991480e-002 4.7909730e-002 +v -7.5536880e-002 1.5977062e-001 -1.0438650e-002 +v -3.6151280e-002 4.6505140e-002 4.0740900e-002 +v -2.5439220e-002 9.0677870e-002 4.8852330e-002 +v -8.0050370e-002 1.1670406e-001 4.8762460e-002 +v -5.2513640e-002 4.7577880e-002 1.4858440e-002 +v -3.2043560e-002 5.0461830e-002 3.9341520e-002 +v -3.1487770e-002 4.6930210e-002 4.5253210e-002 +v -2.0321500e-002 9.3999570e-002 5.1588540e-002 +v -7.2145040e-002 9.1556450e-002 4.1494780e-002 +v -5.3644200e-002 4.9358170e-002 1.2201850e-002 +v -8.2403890e-002 1.2186563e-001 4.9365030e-002 +v -4.9754420e-002 4.9738300e-002 3.7037110e-002 +v -3.2332060e-002 4.8672840e-002 4.2523960e-002 +v -2.3122950e-002 9.4515900e-002 4.7358870e-002 +v -8.6347140e-002 9.1722090e-002 2.6811080e-002 +v -5.7713110e-002 4.8717820e-002 7.2765100e-003 +v -8.6970360e-002 8.8912090e-002 2.4879860e-002 +v -9.2237750e-002 1.2488519e-001 4.0786530e-002 +v -1.5862800e-002 9.7021620e-002 5.0139360e-002 +v -2.7720040e-002 5.0502090e-002 4.3340720e-002 +v -8.5918770e-002 1.4263412e-001 3.9849810e-002 +v -7.5097360e-002 9.0073560e-002 3.9581000e-002 +v -8.9430840e-002 1.4730552e-001 2.7694960e-002 +v -5.3288350e-002 5.1925760e-002 1.1730350e-002 +v -5.0168720e-002 5.3462260e-002 1.6255440e-002 +v -8.5986050e-002 1.4670902e-001 3.4827030e-002 +v -6.9937250e-002 8.6076860e-002 4.2175690e-002 +v -5.0399320e-002 5.1831330e-002 3.4037400e-002 +v -8.3298980e-002 1.4960772e-001 3.3740890e-002 +v -2.9174820e-002 5.2264530e-002 3.7637320e-002 +v -8.8763730e-002 1.1944938e-001 4.6560090e-002 +v -7.7693460e-002 1.7367969e-001 -4.1478670e-002 +v -8.3418140e-002 9.4127440e-002 3.0898450e-002 +v -5.6067510e-002 5.3470630e-002 7.3718200e-003 +v -7.8935630e-002 1.4817228e-001 3.9463070e-002 +v -6.7902770e-002 8.7817230e-002 4.3526990e-002 +v -4.4111240e-002 9.2883990e-002 -2.2373210e-002 +v -8.6605100e-002 1.3226807e-001 4.6783020e-002 +v -9.2654280e-002 1.2084025e-001 4.1629650e-002 +v -5.0887310e-002 5.2727900e-002 1.4455790e-002 +v -4.9763410e-002 5.6241200e-002 3.3624250e-002 +v -8.9771330e-002 1.2904861e-001 4.3022990e-002 +v -2.8054240e-002 5.4551030e-002 3.6786850e-002 +v -2.5867080e-002 5.6689210e-002 3.9182240e-002 +v -8.3702200e-002 1.2226381e-001 -3.7301400e-003 +v -8.1455470e-002 1.3012213e-001 5.2117660e-002 +v -5.1458550e-002 5.5878150e-002 1.5900350e-002 +v -7.8597700e-002 1.7441574e-001 -4.6607580e-002 +v -5.2909820e-002 5.7043070e-002 2.0988410e-002 +v -5.2978500e-002 5.9553770e-002 2.6211920e-002 +v -5.2130640e-002 5.6302970e-002 2.6672460e-002 +v -4.7714500e-002 6.1944520e-002 3.6705820e-002 +v -8.3539790e-002 8.1169560e-002 2.7014070e-002 +v -1.8340000e-002 5.7489970e-002 4.9763020e-002 +v -8.0069810e-002 9.0586130e-002 3.4593070e-002 +v -8.3812250e-002 8.6337700e-002 2.9223270e-002 +v -5.5436650e-002 5.9420250e-002 2.3018970e-002 +v -8.2227680e-002 1.4513771e-001 4.0600080e-002 +v -2.4187580e-002 7.2269150e-002 4.7681090e-002 +v -2.5353150e-002 6.2567200e-002 4.0642170e-002 +v -9.1132110e-002 1.2282100e-001 4.4115160e-002 +v -4.6076290e-002 1.6819719e-001 7.3744000e-004 +v -8.7829280e-002 1.4351461e-001 3.5707670e-002 +v -8.6990640e-002 1.3812326e-001 4.2316550e-002 +v -1.5715900e-002 6.0822970e-002 5.2365440e-002 +v -8.3803580e-002 1.2561100e-001 5.0440490e-002 +v -6.2786680e-002 1.1274190e-001 -1.3605440e-002 +v -8.1033840e-002 8.4698180e-002 3.3106400e-002 +v -8.8563540e-002 1.1624535e-001 4.5392840e-002 +v -2.0268380e-002 6.2266810e-002 4.8212120e-002 +v -1.2619630e-002 6.1635030e-002 5.4424080e-002 +v -7.0491190e-002 8.1818160e-002 4.0609890e-002 +v -8.3882520e-002 1.3331465e-001 4.9113540e-002 +v -5.6560350e-002 4.8355540e-002 3.6607050e-002 +v 9.9444900e-003 1.0919723e-001 -1.9472810e-002 +v -5.5928250e-002 3.5917310e-002 4.6376100e-002 +v -7.6003260e-002 1.6361344e-001 -1.8021110e-002 +v -8.3798850e-002 1.0290691e-001 2.8038330e-002 +v -8.8252110e-002 1.2692730e-001 4.6141300e-002 +v -7.9126720e-002 1.0619883e-001 3.2050700e-002 +v -8.8206230e-002 9.4485700e-002 2.3744010e-002 +v -8.9110330e-002 1.3851394e-001 3.7658780e-002 +v -1.9321360e-002 9.2123890e-002 5.3820650e-002 +v -5.8265630e-002 9.0926390e-002 -2.0948690e-002 +v -2.7046310e-002 6.7014450e-002 3.9672140e-002 +v -2.1416300e-002 1.7977662e-001 -2.1732520e-002 +v -7.8240000e-003 1.0924112e-001 -2.2185670e-002 +v -2.3988340e-002 8.5995590e-002 5.3716430e-002 +v -6.0483580e-002 1.5567975e-001 4.3343800e-003 +v -8.6389150e-002 1.2168475e-001 4.8412440e-002 +v -7.4084360e-002 1.4987744e-001 -3.2610050e-002 +v -2.0580600e-002 7.9572500e-002 5.6013880e-002 +v -8.3837500e-002 1.3927865e-001 4.4893850e-002 +v -2.2933960e-002 3.5632910e-002 5.2865490e-002 +v -8.6153620e-002 1.2735612e-001 4.8563960e-002 +v -6.5728590e-002 1.0709818e-001 -1.4317670e-002 +v -2.1481090e-002 7.4194460e-002 5.2857680e-002 +v -7.6423900e-002 1.5736285e-001 -9.0354600e-003 +v -7.7216010e-002 8.5594880e-002 3.7420770e-002 +v -8.4150830e-002 1.2955013e-001 5.0483700e-002 +v -8.1221440e-002 8.1003250e-002 3.1255840e-002 +v -8.1704000e-002 1.0167226e-001 3.0939660e-002 +v -8.6252730e-002 1.0106846e-001 2.5413770e-002 +v -8.0944970e-002 1.3903572e-001 4.7359080e-002 +v -7.8908350e-002 9.4830900e-002 3.5435500e-002 +v -7.3440160e-002 9.5412600e-002 4.0210650e-002 +v -5.2675780e-002 8.8220740e-002 -2.1886300e-002 +v -7.6440670e-002 7.7511060e-002 3.3748300e-002 +v -2.1791140e-002 1.0658035e-001 -2.2327000e-002 +v -8.8360940e-002 1.4996706e-001 2.6044170e-002 +v -2.4078870e-002 6.7906700e-002 4.5178370e-002 +v -2.0018090e-002 6.7569300e-002 5.1565340e-002 +v -8.3577750e-002 1.2052625e-001 4.9177500e-002 +v -1.4655950e-002 1.7456543e-001 -2.5972690e-002 +v -2.7395940e-002 8.4108300e-002 4.8745680e-002 +v -4.1933580e-002 8.8463400e-002 -2.2126350e-002 +v -3.1693900e-002 1.0261265e-001 -2.2352310e-002 +v -2.7890200e-002 1.0440703e-001 -2.2830920e-002 +v -7.3790400e-002 1.2016662e-001 -7.8851200e-003 +v -4.6124160e-002 1.0506369e-001 -2.0457580e-002 +v -2.7412650e-002 7.3269450e-002 4.2641380e-002 +v -4.5532880e-002 3.4736480e-002 -2.1363200e-002 +v -4.4993030e-002 3.9017010e-002 -2.1097830e-002 +v -4.6462610e-002 3.6800270e-002 -1.7778710e-002 +v -8.8366460e-002 1.1361863e-001 5.8227800e-003 +v 5.1746240e-002 7.2897250e-002 9.0647400e-003 +v -7.0385250e-002 3.7450300e-002 -9.3190000e-004 +v -6.0923170e-002 3.8621820e-002 2.2468850e-002 +v -7.7696720e-002 1.7027889e-001 -4.3117910e-002 +v -4.3793210e-002 1.6955506e-001 -7.3026400e-003 +v -7.7587180e-002 1.7717875e-001 -5.0221090e-002 +v -4.0541880e-002 3.8886010e-002 -2.7364950e-002 +v -4.4215850e-002 3.6131460e-002 -2.4252210e-002 +v -6.6634880e-002 4.0430310e-002 -5.0180700e-003 +v -6.9242120e-002 4.1474050e-002 1.9289000e-004 +v -7.5640690e-002 1.5930400e-001 -2.6908460e-002 +v -6.3087030e-002 3.9614170e-002 2.5181560e-002 +v -7.2303020e-002 1.5186699e-001 -4.1544310e-002 +v -4.1051490e-002 4.1528620e-002 -2.4061000e-002 +v -4.6990580e-002 3.8892380e-002 -1.4016920e-002 +v -8.9559690e-002 1.2851666e-001 4.5457500e-003 +v -7.6987340e-002 1.5369375e-001 -2.2970800e-003 +v -7.0121670e-002 1.6882633e-001 -5.1173650e-002 +v -6.4792610e-002 4.1724530e-002 3.1616900e-002 +v -4.2148060e-002 1.2409627e-001 -9.5602500e-003 +v -4.8069700e-002 1.2493027e-001 -8.4076400e-003 +v -4.2150480e-002 4.3343970e-002 -2.1508710e-002 +v -6.7315160e-002 4.4034000e-002 1.5741800e-003 +v -7.3386640e-002 1.5463418e-001 -2.9943830e-002 +v -5.5352770e-002 4.2936210e-002 1.9135490e-002 +v -6.0067770e-002 4.1419500e-002 2.2953280e-002 +v -6.5488460e-002 4.0937780e-002 3.5315470e-002 +v -8.0066400e-002 1.5039650e-001 6.0518000e-004 +v -4.4031300e-002 4.1949070e-002 -1.7993960e-002 +v -4.5186510e-002 4.2453420e-002 -1.4193620e-002 +v -8.3109430e-002 1.0265445e-001 -3.2933400e-003 +v -6.5472800e-002 4.5627570e-002 4.5575400e-003 +v -7.5427730e-002 1.5201213e-001 -1.4393690e-002 +v -5.4473420e-002 4.5937510e-002 2.3612600e-002 +v -6.2464100e-002 4.3722000e-002 2.8493310e-002 +v -6.2832600e-002 4.5182750e-002 3.4622890e-002 +v -6.3538130e-002 4.3524020e-002 3.7974010e-002 +v -6.0255260e-002 4.4749620e-002 -4.1316200e-003 +v -6.3242050e-002 4.5549700e-002 4.8428000e-004 +v -6.2249430e-002 4.6540050e-002 7.1903500e-003 +v -9.1003650e-002 1.4885725e-001 2.1507030e-002 +v -5.7094130e-002 4.5996540e-002 2.6865280e-002 +v -5.7276490e-002 4.7299580e-002 2.9889950e-002 +v -3.9519900e-002 1.7385855e-001 -7.5752600e-003 +v -8.9641110e-002 1.3841920e-001 3.4141800e-002 +v -9.2601430e-002 1.3018652e-001 2.5183580e-002 +v -9.2280860e-002 1.2762053e-001 2.9751670e-002 +v -3.3957310e-002 4.1025060e-002 -2.9660250e-002 +v -9.0199540e-002 1.1657506e-001 5.6754900e-003 +v -5.8515890e-002 4.7731310e-002 2.1246000e-004 +v -7.1723560e-002 1.4617438e-001 -2.1567820e-002 +v -5.2389820e-002 4.5449130e-002 1.7686300e-002 +v -5.9414350e-002 4.7277990e-002 3.4172420e-002 +v -5.7520620e-002 1.5877600e-001 4.1621200e-003 +v -8.0959140e-002 1.0926674e-001 -2.0189900e-003 +v -5.1904000e-002 4.6100060e-002 1.9421290e-002 +v -5.1830050e-002 4.8568730e-002 2.1647030e-002 +v -7.7650400e-002 1.5658012e-001 -1.6599150e-002 +v -3.7416450e-002 4.7682130e-002 -1.7147280e-002 +v -7.8876110e-002 1.5347012e-001 3.9875800e-003 +v -5.7635420e-002 5.0425540e-002 4.6108400e-003 +v -5.2625440e-002 5.0434620e-002 2.9046740e-002 +v -5.2998720e-002 4.9169020e-002 3.3967600e-002 +v -7.3502600e-002 1.6871934e-001 -4.4791800e-002 +v -5.4420720e-002 4.7836520e-002 -5.9186900e-003 +v -5.2312740e-002 5.1085350e-002 2.4485690e-002 +v -7.9129930e-002 1.6736568e-001 -3.5506230e-002 +v 9.4115700e-003 1.2350285e-001 -9.8291000e-003 +v -3.2715700e-002 1.0896631e-001 -1.8941410e-002 +v -3.1133380e-002 4.9607260e-002 -1.9406940e-002 +v 4.5997330e-002 6.9814450e-002 3.0143300e-003 +v 3.3525460e-002 1.0966209e-001 -6.9894800e-003 +v -5.5047160e-002 5.2767560e-002 -3.9461300e-003 +v -5.6897890e-002 4.9655570e-002 -1.5319000e-003 +v -5.0290500e-002 4.9098930e-002 1.7164780e-002 +v -5.0595170e-002 4.9923270e-002 1.9174130e-002 +v -5.1887420e-002 5.3324670e-002 2.8705560e-002 +v -6.7684480e-002 1.6533627e-001 -5.5466400e-002 +v -3.0271440e-002 5.2106080e-002 -1.7676140e-002 +v -9.1087300e-003 1.1141669e-001 -2.0543230e-002 +v -5.7069360e-002 5.4424380e-002 2.3395500e-003 +v -3.2748380e-002 1.7759875e-001 -1.1627470e-002 +v -2.9009580e-002 5.1265290e-002 -2.2175780e-002 +v -3.1383130e-002 5.1791310e-002 -1.3886800e-002 +v -5.5673960e-002 5.6983850e-002 -3.3510400e-003 +v -5.0916050e-002 5.3813610e-002 1.9753140e-002 +v -8.8875380e-002 1.5169443e-001 2.0086580e-002 +v -7.7153050e-002 1.7378676e-001 -4.7867620e-002 +v -7.8577770e-002 1.6420639e-001 -3.1825860e-002 +v -2.7545910e-002 5.4021570e-002 -2.5147390e-002 +v -5.4463660e-002 5.5357450e-002 1.0326840e-002 +v -8.7041410e-002 1.3058932e-001 9.1161000e-004 +v -9.0009340e-002 1.3278082e-001 5.9220600e-003 +v -9.2232620e-002 1.3195400e-001 1.5430650e-002 +v -4.8639980e-002 1.6472475e-001 -5.0591500e-003 +v -5.4066480e-002 5.9959350e-002 -7.5992200e-003 +v -5.7434090e-002 5.7683500e-002 8.7259700e-003 +v -8.6794730e-002 1.3850688e-001 4.5575900e-003 +v -9.2989530e-002 1.3092307e-001 1.9919290e-002 +v -9.1282030e-002 1.3311897e-001 2.4688630e-002 +v 2.1815020e-002 1.1770533e-001 -1.0015300e-002 +v -2.9647120e-002 5.8104260e-002 -2.1311320e-002 +v -3.1289530e-002 5.5208570e-002 -1.4387840e-002 +v -5.9002160e-002 5.9234620e-002 2.6140800e-003 +v -9.0241700e-002 1.3575994e-001 1.4149160e-002 +v -6.1569420e-002 1.7084875e-001 -6.1679170e-002 +v -6.6070180e-002 1.6557822e-001 -5.8644080e-002 +v -2.4539930e-002 1.8005865e-001 -1.8726950e-002 +v -1.6131750e-002 1.8298848e-001 -2.6037190e-002 +v -3.0809390e-002 5.6998040e-002 -1.7835020e-002 +v 1.0464280e-002 9.6180450e-002 -2.5898970e-002 +v -5.7491630e-002 5.9530160e-002 -1.0786100e-003 +v -8.9146460e-002 1.3650500e-001 2.5952780e-002 +v 4.3714500e-003 1.0391901e-001 -2.1515100e-002 +v -9.0377040e-002 1.3252490e-001 3.1082650e-002 +v -9.0795450e-002 1.3855232e-001 2.0562560e-002 +v -9.4237710e-002 1.2615419e-001 2.2201450e-002 +v -9.0336910e-002 1.3119830e-001 3.8138790e-002 +v -4.5082610e-002 1.2218447e-001 -1.1569430e-002 +v 1.1348010e-002 9.8243750e-002 -2.3024250e-002 +v -3.9227920e-002 9.9184630e-002 -2.1912720e-002 +v -6.5509530e-002 1.5857325e-001 -5.5600270e-002 +v -7.7409510e-002 1.6260515e-001 -2.0754580e-002 +v -4.8580010e-002 1.6689211e-001 -2.5256100e-003 +v -7.6922910e-002 1.5351394e-001 -9.0785600e-003 +v -6.7750580e-002 1.5734825e-001 -5.3982110e-002 +v 5.2906410e-002 6.5230450e-002 -5.1112000e-004 +v -2.9054820e-002 6.1084120e-002 -2.4918230e-002 +v -3.1066920e-002 6.5058860e-002 -2.2751080e-002 +v 2.4249720e-002 1.0266151e-001 -1.8313830e-002 +v -5.5473660e-002 1.6050213e-001 1.3763500e-003 +v -6.6642850e-002 1.6040875e-001 -5.6842680e-002 +v -7.8200320e-002 1.6073213e-001 -2.3999690e-002 +v -1.8320680e-002 1.1968625e-001 -1.1110660e-002 +v 2.1712970e-002 1.0956342e-001 -1.5081090e-002 +v -6.8382640e-002 1.5980248e-001 -5.4208800e-002 +v -2.5445620e-002 6.0208550e-002 -3.0864700e-002 +v -2.6540330e-002 6.5084000e-002 -3.1664870e-002 +v -2.8425710e-002 6.2199610e-002 -2.7938500e-002 +v -3.2605750e-002 6.1264600e-002 -1.5453010e-002 +v -7.0872290e-002 1.1611638e-001 -7.9563700e-003 +v -6.9780530e-002 1.5938570e-001 -4.9418240e-002 +v -3.0324870e-002 6.7694720e-002 -2.7654950e-002 +v -3.2977370e-002 6.6365180e-002 -1.8385530e-002 +v 1.3533490e-002 1.0255388e-001 -2.1579310e-002 +v 4.4408530e-002 6.9758860e-002 9.4765000e-004 +v -2.1999000e-003 1.1215881e-001 -1.9658660e-002 +v -7.2028500e-002 6.7046610e-002 -7.2256000e-004 +v -7.8699630e-002 1.7313910e-001 -4.2720470e-002 +v -8.3211970e-002 1.5072131e-001 4.2128500e-003 +v -8.7439060e-002 1.3374875e-001 2.3974700e-003 +v 2.6348020e-002 8.4562230e-002 -2.3151710e-002 +v -7.4901490e-002 7.0419350e-002 -2.2854300e-003 +v -5.4576350e-002 9.1562950e-002 -2.2098700e-002 +v -7.3242520e-002 1.5231332e-001 -3.5703520e-002 +v -7.4550960e-002 1.7218738e-001 -4.7551010e-002 +v -2.8680680e-002 6.8283500e-002 -3.0610160e-002 +v 1.7372900e-002 1.0246037e-001 -2.1487700e-002 +v -8.1257430e-002 7.3025200e-002 7.1020400e-003 +v -7.4982300e-002 1.5407794e-001 -1.8974470e-002 +v -9.1556500e-002 1.3196262e-001 1.0638150e-002 +v -8.2448000e-004 9.5165120e-002 -3.2056320e-002 +v -7.7618830e-002 7.3999130e-002 -5.3263500e-003 +v -7.9858790e-002 7.2755040e-002 3.0420200e-003 +v -8.1627470e-002 7.3470610e-002 1.1161690e-002 +v -7.3679290e-002 1.4785987e-001 -2.0236290e-002 +v -9.1309820e-002 1.4848588e-001 1.6270070e-002 +v -9.0850140e-002 1.4625613e-001 1.4809050e-002 +v -6.8543890e-002 1.7513008e-001 -5.7187900e-002 +v -2.7253960e-002 1.0747453e-001 -2.1279680e-002 +v 2.1443580e-002 1.2273826e-001 -2.9316700e-003 +v -7.9061200e-002 7.3724300e-002 -8.4521000e-004 +v -8.2063500e-002 7.5993670e-002 1.7615500e-003 +v -8.3736580e-002 7.6771840e-002 8.9586000e-003 +v -9.0205720e-002 1.4947775e-001 1.3035090e-002 +v 8.4818000e-004 1.1670025e-001 -1.7337090e-002 +v -7.4577550e-002 1.5164041e-001 -2.8647990e-002 +v -2.9087460e-002 7.2924630e-002 -3.3354470e-002 +v -3.1184020e-002 7.3989530e-002 -3.0339870e-002 +v -3.2606620e-002 7.1955620e-002 -2.4866580e-002 +v -8.0575990e-002 7.6607800e-002 -2.9879400e-003 +v -8.9491020e-002 1.4392581e-001 1.2488490e-002 +v -7.7388410e-002 1.4656426e-001 -4.3543000e-003 +v -7.2896160e-002 1.5834962e-001 -3.4109420e-002 +v 7.1346500e-003 1.1468229e-001 -1.8345640e-002 +v -3.4502610e-002 7.6130020e-002 -2.2373150e-002 +v -8.3890740e-002 8.0789530e-002 2.2951400e-003 +v -8.3740480e-002 7.7240270e-002 4.6673300e-003 +v -8.6204620e-002 8.0930750e-002 1.0535420e-002 +v -8.6061500e-002 7.9931100e-002 1.4440780e-002 +v -8.1542760e-002 7.7950660e-002 2.6727280e-002 +v 2.6666170e-002 1.1268609e-001 -1.0509540e-002 +v -7.6041430e-002 1.5663068e-001 -2.1420480e-002 +v -9.0012110e-002 1.5083344e-001 1.5752740e-002 +v -7.1156510e-002 1.6335125e-001 -4.5360530e-002 +v -3.3210960e-002 7.6873190e-002 -2.7708380e-002 +v -7.3263090e-002 7.9983830e-002 -1.3749940e-002 +v -7.9285950e-002 8.0048830e-002 -7.0125500e-003 +v -8.6034510e-002 8.2645720e-002 1.9542680e-002 +v -8.4335410e-002 8.0729950e-002 2.2180460e-002 +v -7.1351460e-002 1.5727092e-001 -4.2183090e-002 +v -7.3548450e-002 1.6120822e-001 -3.5288420e-002 +v 1.6732620e-002 1.0991230e-001 -1.7020040e-002 +v -3.0978770e-002 7.7020860e-002 -3.2816490e-002 +v -6.2359240e-002 1.7544824e-001 -6.1485990e-002 +v -1.7587870e-002 1.1491318e-001 -1.7205040e-002 +v -8.2354050e-002 8.0876320e-002 -2.4038900e-003 +v -7.8578910e-002 1.4050129e-001 -4.6031000e-003 +v -2.8931080e-002 7.9247620e-002 -3.5049800e-002 +v -3.1225710e-002 8.0413100e-002 -3.2182320e-002 +v -3.3258680e-002 7.9621670e-002 -2.7146060e-002 +v -4.4697400e-002 1.1791537e-001 -1.4725860e-002 +v -7.9723740e-002 8.4226660e-002 -8.7608600e-003 +v -8.5042160e-002 8.3817830e-002 -7.7640000e-005 +v -8.6776400e-002 8.4344860e-002 1.2419030e-002 +v -8.6674670e-002 8.2665010e-002 1.5174340e-002 +v -8.5106250e-002 8.5176580e-002 2.5679440e-002 +v -7.6975760e-002 8.2935940e-002 -1.1450630e-002 +v -8.2776390e-002 8.3430890e-002 -4.3687000e-003 +v -8.6180440e-002 8.2572150e-002 6.3639000e-003 +v -9.1160820e-002 1.4144362e-001 1.5673910e-002 +v -7.4638800e-002 1.4398484e-001 -7.1504600e-003 +v -8.3448500e-002 1.3393299e-001 -1.6873200e-003 +v -7.5804700e-002 1.5134475e-001 -1.9881200e-002 +v -7.4924140e-002 1.5273013e-001 -1.9397440e-002 +v -5.2314440e-002 1.2159646e-001 -1.0798060e-002 +v -3.0734050e-002 8.5427560e-002 -3.0506670e-002 +v -3.2590560e-002 8.1942660e-002 -2.9100210e-002 +v -8.6454830e-002 8.6940490e-002 9.1667000e-004 +v -1.2501820e-002 1.0634409e-001 -2.2360190e-002 +v -8.8585880e-002 1.4605869e-001 9.8780000e-003 +v -8.5609750e-002 1.4712513e-001 6.5981100e-003 +v -8.7511210e-002 1.5061504e-001 1.0152460e-002 +v -6.0113540e-002 3.5550440e-002 4.4907580e-002 +v -8.8284200e-002 8.6869110e-002 8.1029200e-003 +v -8.8812560e-002 8.7765490e-002 1.4226540e-002 +v -8.8001070e-002 8.6626430e-002 1.5466680e-002 +v -8.6991110e-002 8.6444700e-002 2.2420950e-002 +v -7.4609990e-002 1.4727815e-001 -1.4172380e-002 +v -3.4707910e-002 8.4035880e-002 -2.4302260e-002 +v -8.4964900e-002 8.9962540e-002 -3.0068000e-003 +v -8.8091450e-002 8.7741580e-002 4.8489900e-003 +v -9.1490470e-002 1.4543178e-001 2.2277220e-002 +v -9.4380420e-002 1.2183919e-001 1.7904340e-002 +v -2.9164530e-002 8.5393440e-002 -3.3666780e-002 +v -3.0557790e-002 8.8625920e-002 -2.7550670e-002 +v -7.7770550e-002 8.7844840e-002 -1.1694810e-002 +v -8.0728260e-002 8.8204150e-002 -7.8003100e-003 +v -8.3272540e-002 8.9476690e-002 -5.6502900e-003 +v -8.9398710e-002 8.9539000e-002 1.1645550e-002 +v -8.9698390e-002 1.3971257e-001 1.3774760e-002 +v -7.7134890e-002 1.5151225e-001 -5.5823000e-003 +v -5.1121410e-002 1.6374125e-001 -2.6640500e-003 +v -8.6442960e-002 1.2767438e-001 -1.4864100e-003 +v -6.9605590e-002 1.5490763e-001 -5.0188670e-002 +v -8.7265180e-002 9.2110030e-002 4.2059000e-003 +v -8.9086250e-002 9.2377120e-002 1.0569860e-002 +v -8.9612340e-002 9.1599880e-002 1.7812280e-002 +v -8.2732460e-002 1.4196856e-001 1.2529100e-003 +v -7.2618370e-002 1.4368135e-001 -1.0987100e-002 +v -7.7677230e-002 1.6610992e-001 -3.6777320e-002 +v -1.5078060e-002 9.3863440e-002 -3.4317310e-002 +v -7.1057280e-002 1.5476885e-001 -4.5778530e-002 +v -9.2331920e-002 1.2523886e-001 9.1589500e-003 +v -7.6046700e-002 9.1037250e-002 -1.3643150e-002 +v -8.2942810e-002 9.3291700e-002 -6.1856300e-003 +v -1.0411170e-002 9.4592340e-002 -3.3784850e-002 +v -2.9331140e-002 1.1476230e-001 -1.5844640e-002 +v -3.7218250e-002 1.1594244e-001 -1.5173050e-002 +v -1.2429920e-002 1.0286006e-001 -2.3822480e-002 +v 6.6509600e-003 8.8144500e-002 -3.2945810e-002 +v -6.4119900e-003 9.2876210e-002 -3.4817640e-002 +v 1.5800150e-002 1.1996558e-001 -1.1415630e-002 +v 2.9102740e-002 1.0247506e-001 -1.5768380e-002 +v 4.2080690e-002 6.3480630e-002 -2.5405300e-003 +v 2.8723120e-002 9.7943220e-002 -1.7497350e-002 +v -1.9987640e-002 1.0278313e-001 -2.3392920e-002 +v 3.3748350e-002 8.3644140e-002 -1.8630450e-002 +v -1.8685680e-002 1.8689625e-001 -2.0248700e-002 +v 6.4154900e-003 1.1790181e-001 -1.6282740e-002 +v 5.6305210e-002 6.7769910e-002 2.6525000e-003 +v -5.3608300e-003 1.1289400e-001 -1.9613290e-002 +v 4.5769430e-002 6.4628800e-002 -1.2166100e-003 +v -1.0090870e-002 9.8229650e-002 -2.7731360e-002 +v -6.0458520e-002 1.1755645e-001 -1.1354580e-002 +v 1.2933940e-002 1.1887250e-001 -1.3979370e-002 +v 1.5235680e-002 9.4977900e-002 -2.4437140e-002 +v -3.0892950e-002 4.7409030e-002 -2.4954000e-002 +v -1.7766190e-002 1.8572344e-001 -2.3049280e-002 +v -1.3034890e-002 1.1002855e-001 -2.0161170e-002 +v -7.1206550e-002 3.8608570e-002 7.7218000e-004 +v 1.7904800e-002 1.0627709e-001 -1.7729250e-002 +v -3.3623490e-002 1.1840428e-001 -1.1927480e-002 +v -4.9906840e-002 1.1788332e-001 -1.4402480e-002 +v -6.6878100e-003 1.1747209e-001 -1.5359280e-002 +v -1.5451470e-002 1.8597600e-001 -2.4795870e-002 +v -3.0603900e-002 3.8038460e-002 -3.0123840e-002 +v -1.3220270e-002 1.8397188e-001 -2.7519460e-002 +v -4.7859450e-002 1.1162729e-001 -1.7482120e-002 +v -1.3098990e-002 9.0776040e-002 -3.6659270e-002 +v -6.3117340e-002 1.5425437e-001 2.9730400e-003 +v -5.5139750e-002 1.1051601e-001 -1.7672740e-002 +v -1.1096770e-002 1.8202324e-001 -2.8042450e-002 +v -2.6568900e-002 3.4695830e-002 -2.9113750e-002 +v -6.6396600e-003 1.0222209e-001 -2.3519320e-002 +v -5.6996400e-002 1.5741713e-001 6.0244000e-004 +v 1.9076550e-002 9.1870620e-002 -2.4890230e-002 +v 1.3473090e-002 1.2429893e-001 -6.8361400e-003 +v -2.1730490e-002 9.8410960e-002 -2.4306850e-002 +v -1.7142170e-002 9.8057460e-002 -2.4924330e-002 +v -5.8698110e-002 1.5137318e-001 -6.5801000e-004 +v 3.5641100e-003 1.2764883e-001 -4.4672400e-003 +v -8.5369800e-003 9.9921220e-002 -2.4351070e-002 +v -1.2171980e-002 1.8125102e-001 -2.9061170e-002 +v -6.1113980e-002 1.5305212e-001 9.9983000e-004 +v -2.9570620e-002 1.1713871e-001 -1.3675530e-002 +v 3.0530110e-002 1.1221207e-001 -8.1860600e-003 +v -3.1714100e-002 3.5111530e-002 -3.0658990e-002 +v -1.3691130e-002 1.7914707e-001 -2.8126410e-002 +v 1.1620840e-002 1.1548972e-001 -1.6385680e-002 +v -6.1993570e-002 1.5028063e-001 -1.6297100e-003 +v 3.6684020e-002 1.0099570e-001 -9.8485900e-003 +v 4.8512670e-002 7.1798180e-002 6.0005000e-003 +v -4.6583000e-004 1.1983662e-001 -1.3610580e-002 +v 1.6747170e-002 9.0113950e-002 -2.7127190e-002 +v 6.9832400e-003 9.7730080e-002 -2.4800310e-002 +v -4.3226830e-002 4.6263570e-002 -1.1771730e-002 +v -8.3562500e-003 1.1373600e-001 -1.8239810e-002 +v -1.2354410e-002 1.1556773e-001 -1.6486930e-002 +v 4.6834470e-002 7.4354100e-002 1.0139500e-002 +v 2.5319170e-002 1.0931725e-001 -1.3579660e-002 +v -4.2459500e-002 1.1392482e-001 -1.6188050e-002 +v 5.7744640e-002 6.4158440e-002 2.6277600e-003 +v -5.9710530e-002 3.6535780e-002 -9.4949000e-003 +v -3.2078400e-003 1.0962100e-001 -2.1523850e-002 +v 2.7020740e-002 6.1345700e-002 -2.2292060e-002 +v 7.1030200e-003 1.0191162e-001 -2.1230990e-002 +v -3.8225680e-002 1.2465525e-001 -7.3257400e-003 +v 2.5941540e-002 1.1576352e-001 -8.2193900e-003 +v -6.1297960e-002 3.3900220e-002 -9.3216600e-003 +v -5.9466670e-002 1.4743956e-001 -1.8885400e-003 +v 1.0506610e-002 1.0087700e-001 -2.2109510e-002 +v 3.3081340e-002 1.0273382e-001 -1.2787210e-002 +v 1.2517840e-002 1.0475378e-001 -1.9915960e-002 +v 2.3087990e-002 9.3998720e-002 -2.2210680e-002 +v 3.1555430e-002 9.2484730e-002 -1.8204280e-002 +v 6.2723100e-003 9.9910370e-002 -2.2296890e-002 +v -4.0917240e-002 4.6121780e-002 -1.7942580e-002 +v 3.5407360e-002 9.8188850e-002 -1.2008970e-002 +v 9.4135900e-003 1.2121902e-001 -1.2937780e-002 +v 5.3735190e-002 7.2027350e-002 6.8010000e-003 +v 2.5620340e-002 1.1880719e-001 -5.0330800e-003 +v -3.8150260e-002 4.2466610e-002 -2.6893990e-002 +v -2.8212410e-002 1.1116862e-001 -1.8001930e-002 +v -6.0253590e-002 1.4339100e-001 -3.7906300e-003 +v 1.9016880e-002 1.0401450e-001 -1.9333120e-002 +v 7.5446700e-003 9.1682150e-002 -3.1643140e-002 +v -7.0760800e-003 1.2240119e-001 -1.1364410e-002 +v -1.9047500e-002 9.6562130e-002 -2.7579900e-002 +v -1.6953390e-002 1.0669256e-001 -2.2002990e-002 +v -6.7307000e-004 1.0119875e-001 -2.2857770e-002 +v -9.0179300e-003 1.2528031e-001 -7.7912000e-003 +v -6.8136180e-002 1.8006113e-001 -5.8816050e-002 +v -2.3600190e-002 1.1513818e-001 -1.5577390e-002 +v -5.9831220e-002 4.2842260e-002 -6.6469100e-003 +v 5.3124070e-002 5.9012380e-002 -2.8853800e-003 +v -3.6931840e-002 3.7107370e-002 -2.9714170e-002 +v -5.6215140e-002 1.4139213e-001 -2.8027300e-003 +v 3.6695880e-002 1.0372844e-001 -7.9621500e-003 +v -3.5885070e-002 1.2040038e-001 -1.0640470e-002 +v -9.3569500e-003 8.5423730e-002 -3.8112540e-002 +v -6.0127340e-002 1.2041391e-001 -9.3791100e-003 +v -3.9842790e-002 1.2156113e-001 -1.1570310e-002 +v 2.8322200e-002 1.0847957e-001 -1.2623390e-002 +v -1.8733500e-003 1.1593910e-001 -1.7169430e-002 +v 3.8648150e-002 9.0153340e-002 -1.2549680e-002 +v -1.7359200e-003 9.2244170e-002 -3.4310460e-002 +v 5.0000820e-002 6.1612070e-002 -3.4649900e-003 +v 5.5858960e-002 6.2910170e-002 6.9037000e-004 +v 2.0461520e-002 1.1515372e-001 -1.3103780e-002 +v -1.5165840e-002 1.1798075e-001 -1.4465520e-002 +v -7.0859540e-002 7.1510150e-002 3.3895100e-002 +v 2.2674030e-002 8.6606050e-002 -2.4925490e-002 +v 3.5358840e-002 8.7438890e-002 -1.7109050e-002 +v 1.8400920e-002 1.2145507e-001 -7.6804200e-003 +v -2.5425900e-002 4.1421010e-002 -2.9204830e-002 +v -8.2085100e-003 9.6777440e-002 -3.0809780e-002 +v -5.6810660e-002 3.3873940e-002 -1.1166310e-002 +v -3.4588640e-002 4.4744960e-002 -2.7122900e-002 +v -4.0251680e-002 1.1827531e-001 -1.3674080e-002 +v 1.6387020e-002 1.1402346e-001 -1.5496900e-002 +v 4.2635280e-002 6.0797460e-002 -3.4583700e-003 +v -5.0687200e-002 3.5935870e-002 -1.2380790e-002 +v 7.3446800e-003 9.4509570e-002 -2.9683220e-002 +v -1.9706700e-002 9.2917340e-002 -3.4636880e-002 +v -1.2083040e-002 1.2219229e-001 -9.7120900e-003 +v 4.8805930e-002 6.8457810e-002 1.6952900e-003 +v -3.0869700e-003 9.8402500e-002 -2.7403170e-002 +v -5.3198790e-002 1.3672896e-001 -1.6580500e-003 +v -4.7290060e-002 1.3055355e-001 1.6909100e-003 +v 4.4651700e-003 1.2044039e-001 -1.3931400e-002 +v -2.3850100e-003 1.2290534e-001 -1.0382460e-002 +v -2.4833330e-002 9.5858030e-002 -2.5162110e-002 +v -4.2296900e-002 3.6291920e-002 -2.7253600e-002 +v -5.4388260e-002 1.3404922e-001 -3.9920400e-003 +v -5.0539380e-002 1.3336659e-001 -1.0872200e-003 +v 2.6040300e-003 9.6942660e-002 -2.8407060e-002 +v -7.8163100e-003 1.2821209e-001 -1.9430400e-003 +v 6.5111700e-003 1.3002517e-001 9.2881000e-004 +v 3.4742860e-002 9.2274140e-002 -1.5654590e-002 +v -6.7787700e-002 1.8088887e-001 -5.8191050e-002 +v -3.3715410e-002 1.1151566e-001 -1.8078440e-002 +v 4.4630400e-003 1.2427294e-001 -9.4291400e-003 +v -2.3370170e-002 9.3392760e-002 -3.2031820e-002 +v -4.8982070e-002 1.2980647e-001 -1.3229400e-003 +v -7.8164000e-004 1.2822918e-001 -3.2490000e-003 +v 2.4960400e-003 8.9857600e-002 -3.3628450e-002 +v 7.4553300e-003 1.1196790e-001 -1.9554260e-002 +v 2.8791140e-002 9.1157340e-002 -2.0370210e-002 +v -5.3590150e-002 1.2437450e-001 -7.3470400e-003 +v -4.7743630e-002 1.2064432e-001 -1.2812990e-002 +v -1.9616230e-002 1.2109197e-001 -9.5487700e-003 +v -6.5047370e-002 1.7999148e-001 -5.9758600e-002 +v -5.1704160e-002 3.7620360e-002 -1.1763450e-002 +v -5.2124270e-002 1.2929832e-001 -4.1187000e-003 +v -4.5334450e-002 1.2891494e-001 1.5819100e-003 +v -3.0471200e-003 1.2919453e-001 -1.0688000e-003 +v 7.2129600e-003 1.2721957e-001 -5.2073700e-003 +v 1.1669320e-002 1.2720154e-001 -3.1850900e-003 +v 5.3056400e-002 6.9708830e-002 3.1291400e-003 +v -6.3021150e-002 1.7810951e-001 -6.0393570e-002 +v 2.8204800e-002 6.4391270e-002 -2.0698040e-002 +v 3.4400180e-002 1.0503000e-001 -1.0224920e-002 +v 3.0975190e-002 1.0790250e-001 -1.1058430e-002 +v -4.8984390e-002 1.1480518e-001 -1.5966690e-002 +v -3.2821710e-002 1.2300500e-001 -5.9088300e-003 +v -5.0792860e-002 1.2716487e-001 -4.8183200e-003 +v -3.5301670e-002 1.2547815e-001 -3.1542800e-003 +v 5.6455250e-002 6.9951490e-002 4.9191700e-003 +v -1.6240450e-002 1.2512177e-001 -3.6499700e-003 +v -1.6970400e-002 1.1119793e-001 -1.9586410e-002 +v -5.4088120e-002 3.9781210e-002 -1.0544680e-002 +v -3.4190490e-002 4.7514010e-002 -2.2301500e-002 +v 1.3699090e-002 9.3914220e-002 -2.6427690e-002 +v 8.8000000e-004 9.9234930e-002 -2.4355670e-002 +v -4.6459460e-002 1.2723953e-001 -4.8843300e-003 +v -4.1735500e-002 1.2687599e-001 -4.1742000e-003 +v -2.1000480e-002 1.2313643e-001 -6.1190100e-003 +v -1.2130450e-002 1.2572568e-001 -5.2007900e-003 +v -4.3822400e-003 1.2640753e-001 -6.9495200e-003 +v 1.4085700e-003 3.4781990e-002 -2.3265200e-002 +v -1.4846200e-002 3.5070930e-002 -2.6071900e-002 +v -2.1399500e-002 3.4795120e-002 -2.7958820e-002 +v 1.2009220e-002 3.5961900e-002 -2.1735750e-002 +v 3.8249200e-003 3.6129220e-002 -2.3878090e-002 +v -5.1139560e-002 9.6617580e-002 -2.2095120e-002 +v -5.4813320e-002 9.8102480e-002 -2.1425370e-002 +v -2.7597040e-002 1.6979824e-001 -1.8170420e-002 +v 1.3359870e-002 3.9377410e-002 -2.2496330e-002 +v 4.3919300e-003 3.8674430e-002 -2.4170290e-002 +v -6.8478200e-003 3.6444540e-002 -2.5177120e-002 +v -1.3280260e-002 3.7699590e-002 -2.6391810e-002 +v -4.7672760e-002 3.6116650e-002 -1.3301210e-002 +v -4.5590120e-002 1.0853826e-001 -1.8796680e-002 +v -5.0095670e-002 1.0990925e-001 -1.8504510e-002 +v -6.5766640e-002 3.6469550e-002 -7.2073000e-003 +v -2.3455840e-002 1.6824727e-001 -1.8822880e-002 +v -4.5918000e-003 3.8404570e-002 -2.5412870e-002 +v -2.4954130e-002 3.7441060e-002 -2.9152720e-002 +v 2.9007770e-002 3.7358220e-002 -2.7474000e-004 +v -7.9468800e-003 4.1489920e-002 -2.5911270e-002 +v -1.6803800e-002 3.9753810e-002 -2.7565350e-002 +v -6.5156150e-002 1.4034537e-001 -7.6848600e-003 +v -4.7080100e-002 4.0700690e-002 -1.1869830e-002 +v -6.8470630e-002 3.7477700e-002 -4.9557400e-003 +v 3.7326850e-002 4.0209510e-002 -8.5850000e-004 +v 3.5349870e-002 4.1257050e-002 -2.8075100e-003 +v 5.1820700e-003 4.1536320e-002 -2.4065670e-002 +v 1.8660660e-002 1.0030784e-001 -2.2127290e-002 +v -6.0510780e-002 1.0748450e-001 -1.7042300e-002 +v -6.2374340e-002 4.0146090e-002 -7.4040200e-003 +v 2.5456950e-002 3.9483890e-002 -4.0251400e-003 +v -2.2828000e-004 4.3394940e-002 -2.5124420e-002 +v -8.1088400e-003 4.3439060e-002 -2.6140070e-002 +v -1.7362450e-002 4.3237420e-002 -2.7665190e-002 +v -2.6416670e-002 4.4674020e-002 -2.8209740e-002 +v 3.8064500e-003 1.0944331e-001 -2.0203790e-002 +v -5.8232370e-002 9.5690400e-002 -2.0616030e-002 +v -6.6122370e-002 4.2341260e-002 -2.7538800e-003 +v -6.0959920e-002 9.4173040e-002 -1.9015670e-002 +v 3.1352250e-002 4.2649280e-002 -4.6745000e-003 +v -3.3540900e-002 3.6342620e-002 4.9089960e-002 +v 1.7252780e-002 4.4335610e-002 -2.3067190e-002 +v 1.0637660e-002 4.4161560e-002 -2.4926170e-002 +v 4.3843100e-003 4.5806710e-002 -2.6788990e-002 +v -8.2506400e-003 4.5148720e-002 -2.8441070e-002 +v -1.5748410e-002 4.5043860e-002 -2.7877790e-002 +v 2.8990330e-002 4.4697850e-002 -6.1863000e-003 +v 8.1686400e-003 4.5053030e-002 -2.5178740e-002 +v -9.6291000e-004 4.5378230e-002 -2.7308280e-002 +v -1.7033400e-003 4.7819200e-002 -2.9928930e-002 +v -3.1535830e-002 4.4740410e-002 -2.8079410e-002 +v -3.3619650e-002 1.5691468e-001 -1.1024870e-002 +v -5.0751180e-002 4.3109620e-002 -1.0018680e-002 +v 3.6890890e-002 4.7353200e-002 -6.1057100e-003 +v 2.4975630e-002 4.2644580e-002 -7.0169900e-003 +v 2.4562420e-002 4.8369560e-002 -1.9672760e-002 +v 1.3964040e-002 4.5579170e-002 -2.4706510e-002 +v 1.3376130e-002 4.8630300e-002 -2.6551500e-002 +v 3.7308900e-003 4.8127990e-002 -2.9025970e-002 +v -8.7947000e-003 4.7056850e-002 -2.9881630e-002 +v -1.3753770e-002 5.1865060e-002 -3.2243480e-002 +v -2.1200840e-002 4.6657090e-002 -2.7951320e-002 +v 3.9693540e-002 4.5658580e-002 -4.5274100e-003 +v 3.3627400e-002 4.8717730e-002 -6.3904600e-003 +v -6.5352120e-002 9.9294570e-002 -1.6820150e-002 +v 1.2868100e-003 5.0383670e-002 -3.0357440e-002 +v -8.1797500e-003 4.9845800e-002 -3.1071390e-002 +v -1.7184350e-002 4.8210500e-002 -2.9741930e-002 +v -2.6049450e-002 4.7692500e-002 -2.6149500e-002 +v -8.4747010e-002 1.1078350e-001 3.9488380e-002 +v -5.1316870e-002 4.8270690e-002 -7.9310500e-003 +v -8.2506510e-002 1.2765487e-001 -4.6796400e-003 +v 3.8663690e-002 5.1696670e-002 -6.6910200e-003 +v -7.5643160e-002 9.9440450e-002 -1.1927610e-002 +v 2.0284470e-002 5.1349190e-002 -2.4895380e-002 +v 5.9436000e-003 5.0976660e-002 -2.9119360e-002 +v -2.5528290e-002 5.1472710e-002 -2.6884680e-002 +v -3.5562670e-002 4.9399890e-002 -1.2865040e-002 +v -4.2818980e-002 1.6220182e-001 -1.0337510e-002 +v -6.5593600e-002 1.7665711e-001 -6.0504730e-002 +v -3.4151080e-002 1.7442797e-001 -1.3312550e-002 +v 4.3673180e-002 5.0162230e-002 -5.9843500e-003 +v -5.0342410e-002 1.5546197e-001 -5.1927700e-003 +v 2.5464180e-002 5.4029700e-002 -2.1691010e-002 +v 1.0149790e-002 4.9258540e-002 -2.7750590e-002 +v -2.2043190e-002 5.3612020e-002 -3.0135610e-002 +v -3.2875520e-002 5.1677630e-002 -1.0888650e-002 +v -3.7613820e-002 4.9534770e-002 -1.1626140e-002 +v -4.0750630e-002 4.9285110e-002 -1.1286200e-002 +v -4.6385170e-002 4.7490850e-002 -1.0085980e-002 +v 4.4473170e-002 5.3293010e-002 -6.3327900e-003 +v 3.3205620e-002 5.1020650e-002 -7.2382500e-003 +v 1.5678350e-002 5.1169270e-002 -2.6397810e-002 +v 6.8341700e-003 5.5010170e-002 -3.0561130e-002 +v 2.1424700e-003 5.5502800e-002 -3.1334400e-002 +v 5.9285000e-004 5.2867950e-002 -3.0513830e-002 +v -3.6481400e-003 5.1869000e-002 -3.1457940e-002 +v -9.4245600e-003 5.5399220e-002 -3.3653980e-002 +v -1.9302150e-002 5.8224770e-002 -3.3919700e-002 +v -6.1084270e-002 1.3386190e-001 -7.2248900e-003 +v -4.3309760e-002 5.5656840e-002 -1.1402110e-002 +v -6.1080540e-002 1.6833773e-001 -5.9192060e-002 +v 4.7574690e-002 5.2943630e-002 -5.1300300e-003 +v -3.7403030e-002 1.1150775e-001 -1.8243310e-002 +v 1.9972490e-002 5.4409710e-002 -2.7108230e-002 +v 5.3974800e-003 5.8382570e-002 -3.0903760e-002 +v -1.0603590e-002 5.3602910e-002 -3.3403350e-002 +v -3.4998290e-002 5.2331560e-002 -1.0347380e-002 +v -4.6471230e-002 5.1304340e-002 -9.8299800e-003 +v -6.7945360e-002 1.1493603e-001 -9.5107300e-003 +v -7.1048210e-002 1.5161088e-001 -4.4679270e-002 +v -5.8903800e-003 3.4790620e-002 -2.4224470e-002 +v 1.6842140e-002 5.5555670e-002 -2.8284560e-002 +v 1.0711040e-002 5.4687610e-002 -2.9767520e-002 +v -1.1826800e-003 5.9492420e-002 -3.3360920e-002 +v -5.2325900e-003 5.5688960e-002 -3.2840220e-002 +v -5.1705830e-002 5.2470760e-002 -7.4047200e-003 +v -5.2626360e-002 6.0043760e-002 -8.9566900e-003 +v -7.2598590e-002 9.7762720e-002 -1.4434510e-002 +v 4.4331260e-002 5.5818010e-002 -6.0362700e-003 +v 3.8463400e-002 5.4934820e-002 -6.1822500e-003 +v 3.8838620e-002 5.7808260e-002 -5.2584800e-003 +v -9.2015400e-003 5.9510130e-002 -3.4437110e-002 +v -3.5262560e-002 5.5284900e-002 -1.0545060e-002 +v -3.8336450e-002 5.4503540e-002 -1.0905320e-002 +v -1.7727540e-002 3.6289540e-002 5.2222250e-002 +v 5.0006490e-002 5.8095800e-002 -4.6211800e-003 +v 4.6133970e-002 5.9278810e-002 -4.7769600e-003 +v 1.5110300e-002 5.9819840e-002 -2.8645750e-002 +v 1.0312380e-002 5.7586530e-002 -2.9995250e-002 +v -6.1353400e-003 6.0256790e-002 -3.4695830e-002 +v -1.2318220e-002 5.9396390e-002 -3.5268510e-002 +v -1.4466910e-002 6.3136020e-002 -3.6865870e-002 +v -4.6650260e-002 5.9840950e-002 -1.2135840e-002 +v -5.6572080e-002 1.2480275e-001 -7.1885700e-003 +v -7.9237500e-002 1.2055419e-001 -5.6744800e-003 +v -7.9334790e-002 1.2560650e-001 -6.1175900e-003 +v 2.2340000e-002 5.8492230e-002 -2.6014120e-002 +v 7.6270400e-003 6.2098330e-002 -3.1135840e-002 +v 3.3101700e-003 6.0456840e-002 -3.2481070e-002 +v -1.6811880e-002 6.1275230e-002 -3.5929330e-002 +v -3.2491910e-002 5.7196350e-002 -1.2104730e-002 +v -3.4108240e-002 6.1466560e-002 -1.3053130e-002 +v -3.3896980e-002 5.7025330e-002 -1.1047570e-002 +v -3.8623580e-002 5.8303290e-002 -1.1505750e-002 +v -4.5008400e-002 6.2723940e-002 -1.3390450e-002 +v -5.6896010e-002 1.3398739e-001 -5.6270700e-003 +v -4.4853890e-002 1.5746031e-001 -8.6731600e-003 +v -7.8609550e-002 6.9656870e-002 1.1810740e-002 +v -2.3730020e-002 1.0186156e-001 -2.3836400e-002 +v -2.8122930e-002 9.9322390e-002 -2.3580130e-002 +v -5.0076720e-002 1.4997652e-001 -3.6419700e-003 +v -3.3048420e-002 9.5958590e-002 -2.3426460e-002 +v 1.9520390e-002 6.2064770e-002 -2.7292470e-002 +v -3.8864710e-002 1.0333987e-001 -2.0641400e-002 +v -4.8952940e-002 5.6281090e-002 -1.0220880e-002 +v -5.3993040e-002 1.4498656e-001 -1.1093400e-003 +v -4.5530560e-002 9.8510850e-002 -2.1729510e-002 +v -5.0910960e-002 1.0074570e-001 -2.1619430e-002 +v 2.3245830e-002 6.2792530e-002 -2.5047990e-002 +v 9.7412800e-003 6.3181400e-002 -3.1141370e-002 +v -8.6614000e-004 6.4559630e-002 -3.4490930e-002 +v -8.5264000e-003 6.4001730e-002 -3.5850480e-002 +v -4.8451500e-002 6.4794120e-002 -1.3029910e-002 +v -5.2325160e-002 1.0614813e-001 -1.9271240e-002 +v -5.5265350e-002 1.0216682e-001 -1.9897100e-002 +v -5.9042010e-002 9.9032210e-002 -1.9222950e-002 +v -5.7846760e-002 1.0433496e-001 -1.8525740e-002 +v -2.7113460e-002 1.7332156e-001 -1.8538890e-002 +v 2.2832000e-002 6.7082570e-002 -2.6297510e-002 +v 1.4519060e-002 6.4595540e-002 -2.9855690e-002 +v 1.1471330e-002 6.7581440e-002 -3.0901170e-002 +v -1.7739360e-002 6.6260830e-002 -3.7657310e-002 +v -6.5059750e-002 1.3452104e-001 -8.0899900e-003 +v -7.5829320e-002 1.4244605e-001 -5.8090000e-003 +v -4.1362350e-002 6.1637330e-002 -1.2813770e-002 +v -5.6147890e-002 6.1921550e-002 -5.7541100e-003 +v -6.2126110e-002 6.2845360e-002 -4.5202600e-003 +v -3.7292480e-002 1.6449057e-001 -1.3627050e-002 +v -1.9818920e-002 1.6509494e-001 -1.7608980e-002 +v 6.2881100e-003 6.5416350e-002 -3.2563040e-002 +v -5.9250500e-003 6.9515630e-002 -3.5933480e-002 +v -1.0538630e-002 6.7999180e-002 -3.6517060e-002 +v -3.5385700e-002 6.6817430e-002 -1.5434860e-002 +v -5.3994500e-002 6.4638700e-002 -9.3254900e-003 +v -6.3852310e-002 6.5572310e-002 -6.9393300e-003 +v -6.3920880e-002 1.2774242e-001 -8.5494600e-003 +v -2.6940700e-002 3.6184050e-002 5.3351850e-002 +v 1.9618650e-002 6.7007390e-002 -2.8356120e-002 +v 1.2275180e-002 6.9933940e-002 -3.1553160e-002 +v 5.4265100e-003 6.8247960e-002 -3.2730520e-002 +v -4.4084200e-003 6.6619200e-002 -3.4870250e-002 +v -2.1911350e-002 6.7144790e-002 -3.6535750e-002 +v -4.5643150e-002 1.5466949e-001 -7.2969400e-003 +v -5.1673460e-002 6.6850660e-002 -1.2120350e-002 +v -5.8105180e-002 6.6465950e-002 -1.0044340e-002 +v -5.6992260e-002 1.4311862e-001 -2.2403000e-003 +v -8.0651110e-002 1.3119854e-001 -4.4397800e-003 +v -5.6544310e-002 1.2850938e-001 -6.2014700e-003 +v 1.7758080e-002 7.0138540e-002 -2.9404680e-002 +v 6.4980500e-003 7.0791870e-002 -3.3525310e-002 +v 7.5831000e-004 7.0434460e-002 -3.4462560e-002 +v -1.3235950e-002 6.9292820e-002 -3.7917490e-002 +v -6.7390780e-002 1.1889688e-001 -8.7301400e-003 +v -3.8119520e-002 6.4162310e-002 -1.3829140e-002 +v 1.8527400e-003 1.1303356e-001 -1.9794270e-002 +v -7.5950810e-002 6.8170610e-002 1.8117970e-002 +v -1.0001990e-002 7.2671480e-002 -3.7661370e-002 +v -1.7976070e-002 7.0613770e-002 -3.8443880e-002 +v -2.3035990e-002 7.2778460e-002 -3.8072640e-002 +v -2.6120100e-002 7.1177480e-002 -3.5451530e-002 +v -6.8535420e-002 1.3929375e-001 -7.8046600e-003 +v -3.5263040e-002 7.1067650e-002 -1.8011860e-002 +v -4.1558180e-002 6.9774010e-002 -1.6774100e-002 +v -5.2831730e-002 7.0298920e-002 -1.4864960e-002 +v -6.6978850e-002 6.7638980e-002 -6.8094400e-003 +v -1.0244470e-002 1.7895826e-001 -2.9538870e-002 +v -7.5272650e-002 1.2680098e-001 -8.0241700e-003 +v -8.7359900e-002 1.1248315e-001 4.2049490e-002 +v 8.7503000e-003 7.4301560e-002 -3.3398210e-002 +v -6.4249520e-002 1.6045024e-001 -5.7041470e-002 +v -4.4354010e-002 7.3372220e-002 -1.7874430e-002 +v -4.5762580e-002 6.9445320e-002 -1.5928780e-002 +v -4.7957440e-002 7.2542990e-002 -1.6106990e-002 +v -5.7822630e-002 6.9538010e-002 -1.4416470e-002 +v -7.2071600e-002 7.1538150e-002 -7.4714400e-003 +v 2.5472930e-002 7.4094500e-002 -2.4938540e-002 +v 1.5719730e-002 7.3756350e-002 -2.9747770e-002 +v 4.8214000e-003 7.3763980e-002 -3.4552450e-002 +v -2.2528600e-003 7.3921320e-002 -3.5887190e-002 +v -7.3834900e-003 7.4799620e-002 -3.7223830e-002 +v -2.0225340e-002 7.7095190e-002 -3.9044290e-002 +v -3.4016180e-002 7.2101270e-002 -2.0823150e-002 +v -3.8493370e-002 7.2839870e-002 -1.7502230e-002 +v -6.4392550e-002 7.3116330e-002 -1.5335340e-002 +v -6.4480660e-002 7.0187350e-002 -1.2261750e-002 +v -2.3854330e-002 1.6164528e-001 -1.4504190e-002 +v 2.2104450e-002 7.2692600e-002 -2.6900140e-002 +v 1.5532370e-002 7.6586960e-002 -2.9606940e-002 +v 1.1574050e-002 7.4860570e-002 -3.1383860e-002 +v -1.4731560e-002 7.7640750e-002 -3.8490670e-002 +v -1.6018820e-002 7.4288800e-002 -3.8864420e-002 +v -5.1103620e-002 7.3071950e-002 -1.6243060e-002 +v -5.7989540e-002 7.4017880e-002 -1.7522320e-002 +v -6.9608380e-002 7.2322890e-002 -1.0934430e-002 +v -7.5996110e-002 1.1714132e-001 -6.5577200e-003 +v -3.7987660e-002 1.0751453e-001 -1.9975760e-002 +v 1.0696210e-002 7.9889200e-002 -3.2009580e-002 +v -5.3433400e-003 7.8264580e-002 -3.7476940e-002 +v -2.6081990e-002 7.6191290e-002 -3.6780200e-002 +v -3.9161040e-002 1.5718885e-001 -1.0580510e-002 +v -6.5609880e-002 7.5860010e-002 -1.6750060e-002 +v -7.0177600e-002 7.5663330e-002 -1.3839210e-002 +v -7.4291360e-002 7.4808360e-002 -9.3537900e-003 +v -6.3428890e-002 1.7185387e-001 -6.1412170e-002 +v 3.0684890e-002 7.5726870e-002 -2.0778090e-002 +v 1.9305010e-002 7.9017870e-002 -2.7743990e-002 +v -8.5992100e-003 7.9338730e-002 -3.7905180e-002 +v -2.3200110e-002 7.6568500e-002 -3.8386500e-002 +v -3.8117820e-002 7.6390120e-002 -1.8644360e-002 +v -4.4231130e-002 7.7664130e-002 -1.9026580e-002 +v -5.1025500e-002 7.5705070e-002 -1.8186900e-002 +v -7.0595130e-002 1.2994832e-001 -8.7629200e-003 +v 2.8147660e-002 7.8785370e-002 -2.2432450e-002 +v 7.6016000e-003 7.9435920e-002 -3.3714560e-002 +v 4.9502400e-003 7.8027250e-002 -3.4409750e-002 +v -1.5858350e-002 8.1165550e-002 -3.9185590e-002 +v -1.8502080e-002 8.3343870e-002 -3.9010720e-002 +v -7.9739350e-002 1.3606854e-001 -4.1482100e-003 +v -3.0980180e-002 1.6634656e-001 -1.6241160e-002 +v -3.5749800e-002 7.7248350e-002 -1.9374020e-002 +v -4.8944740e-002 7.9086360e-002 -1.9575700e-002 +v -5.5065860e-002 7.8089190e-002 -1.9755480e-002 +v 2.3706000e-002 8.0240410e-002 -2.5450120e-002 +v 1.2254110e-002 8.3456700e-002 -3.0771580e-002 +v 1.8549900e-003 8.4692790e-002 -3.4838500e-002 +v -2.0857000e-004 7.8941410e-002 -3.5782080e-002 +v -4.2710000e-004 8.2947370e-002 -3.6380660e-002 +v -4.4101600e-003 8.2794510e-002 -3.7467250e-002 +v -3.3202320e-002 1.0578320e-001 -2.0647590e-002 +v -3.9206970e-002 8.1536380e-002 -2.0571000e-002 +v -6.0355410e-002 7.9766610e-002 -1.9375540e-002 +v -4.1771830e-002 1.0396706e-001 -2.0832940e-002 +v -1.1204010e-002 8.2713320e-002 -3.8489610e-002 +v -2.3181500e-002 8.1686990e-002 -3.8329160e-002 +v -2.7233190e-002 8.0570950e-002 -3.6620670e-002 +v -3.5470180e-002 8.0196070e-002 -2.2325910e-002 +v -4.4864210e-002 8.1997900e-002 -2.0473520e-002 +v -5.0647890e-002 8.2309430e-002 -2.1365890e-002 +v -5.5522610e-002 8.1927600e-002 -2.1353790e-002 +v -8.8089610e-002 1.1135484e-001 1.8516150e-002 +v -7.2036080e-002 1.1107918e-001 4.5361400e-002 +v -3.3359780e-002 1.6986395e-001 -1.5448990e-002 +v -6.6839030e-002 6.2170510e-002 2.1576840e-002 +v 3.0730560e-002 8.1968990e-002 -2.0040460e-002 +v 1.6224320e-002 8.6480380e-002 -2.8952010e-002 +v -6.9855630e-002 1.0027892e-001 -1.4847830e-002 +v -6.3836170e-002 8.1704600e-002 -1.8908860e-002 +v -6.7914820e-002 8.0136290e-002 -1.7128200e-002 +v -4.5752080e-002 1.6340754e-001 -8.1780500e-003 +v 1.1727540e-002 8.8010780e-002 -3.0860110e-002 +v 7.3334800e-003 8.5270000e-002 -3.2829380e-002 +v -3.4356500e-003 8.7017890e-002 -3.6461000e-002 +v -2.6964110e-002 8.4512810e-002 -3.6361740e-002 +v -3.6553370e-002 8.5316190e-002 -2.2576200e-002 +v -3.8791090e-002 8.5232710e-002 -2.1917600e-002 +v -5.7676940e-002 8.6258340e-002 -2.1098320e-002 +v -6.2581810e-002 8.6394530e-002 -1.9169290e-002 +v -7.1395340e-002 1.2468846e-001 -8.5944200e-003 +v 1.4801570e-002 9.9040900e-002 -2.2842920e-002 +v -2.1162860e-002 1.7491852e-001 -2.1977110e-002 +v -1.4824250e-002 8.7288840e-002 -3.8317070e-002 +v -2.3285750e-002 8.9468030e-002 -3.6027250e-002 +v -5.1595650e-002 8.4422070e-002 -2.1600960e-002 +v -6.9481040e-002 8.5656460e-002 -1.7198420e-002 +v -7.0917210e-002 1.0754846e-001 -1.1496630e-002 +v 3.0145320e-002 8.6284000e-002 -2.0408140e-002 +v -5.5578110e-002 1.1567692e-001 -1.4645990e-002 +v -8.0981100e-003 8.9070080e-002 -3.6552200e-002 +v -8.1206310e-002 1.1205088e-001 -8.8299000e-004 +v -1.8772170e-002 8.9838040e-002 -3.6991710e-002 +v -2.1100420e-002 8.6587670e-002 -3.7849050e-002 +v -2.5809910e-002 8.8889590e-002 -3.5082250e-002 +v -4.8984800e-002 9.0731760e-002 -2.1817170e-002 +v -3.5874870e-002 3.4776000e-002 -3.0845200e-002 +v -3.3164390e-002 3.3606540e-002 -2.9721880e-002 +v -2.5964020e-002 3.3487000e-002 -2.6321120e-002 +v -1.6717530e-002 3.3611640e-002 -2.4625420e-002 +v -5.3486300e-003 3.3829010e-002 -2.2600430e-002 +v 6.4843500e-003 3.4293000e-002 -2.0854930e-002 +v 1.3950350e-002 3.4880000e-002 -1.8612870e-002 +v -4.2465980e-002 3.4189100e-002 -2.7260650e-002 +v -3.3241100e-002 3.3578760e-002 -2.6719450e-002 +v 6.2813500e-003 3.4165800e-002 -1.8764230e-002 +v -4.4265790e-002 3.3663660e-002 -2.1914420e-002 +v -2.3671460e-002 3.3630970e-002 -2.3217760e-002 +v -1.1558580e-002 3.3895430e-002 -2.1054260e-002 +v -2.0406400e-003 3.4053940e-002 -1.9331070e-002 +v 1.7323900e-003 3.4459660e-002 -1.6607870e-002 +v -2.7316070e-002 3.3910070e-002 -2.1353750e-002 +v -1.3371080e-002 3.4361580e-002 -1.9023720e-002 +v 9.5887300e-003 3.4207220e-002 -1.5424050e-002 +v -1.4981540e-002 3.5878180e-002 -1.7992380e-002 +v -2.3474300e-003 3.5903130e-002 -1.5929740e-002 +v 2.2544300e-003 3.6411540e-002 -1.4783970e-002 +v -3.5199130e-002 3.3835210e-002 -2.0508290e-002 +v -2.6075450e-002 3.5918600e-002 -1.9405170e-002 +v 8.2740600e-003 3.5645200e-002 -1.2648700e-002 +v 1.0473640e-002 3.4742600e-002 -1.1262870e-002 +v 1.4055380e-002 3.4483430e-002 -1.4495730e-002 +v -3.6970520e-002 3.5680360e-002 -1.5007790e-002 +v -2.4719500e-003 3.8408770e-002 -1.4159030e-002 +v -3.9481890e-002 3.3618220e-002 -2.3612470e-002 +v -4.1091510e-002 3.4006000e-002 -1.1997540e-002 +v -3.1589810e-002 3.5592330e-002 -1.9204150e-002 +v -2.0086310e-002 3.8064450e-002 -1.7220790e-002 +v -1.1113250e-002 3.8290290e-002 -1.5646360e-002 +v 4.4522600e-003 3.7705190e-002 -1.2957650e-002 +v 1.5870480e-002 3.4416230e-002 -2.9666500e-003 +v -4.7872000e-002 3.4136300e-002 -1.5418250e-002 +v -4.7521640e-002 3.3622720e-002 -1.2804590e-002 +v -3.3407340e-002 3.7577040e-002 -1.6158190e-002 +v -2.7851470e-002 3.8404330e-002 -1.7210420e-002 +v -8.5065300e-003 3.9028950e-002 -1.3000800e-002 +v 6.4552500e-003 3.8165190e-002 -1.0164860e-002 +v 7.4147100e-003 3.4659190e-002 -3.0116800e-003 +v 1.1966200e-002 3.4335400e-002 -5.9571300e-003 +v 2.0414820e-002 3.5567580e-002 -3.7806900e-003 +v -1.9288780e-002 3.8762570e-002 -1.4202620e-002 +v -1.1390100e-003 3.9176760e-002 -1.0381370e-002 +v 3.8149200e-003 3.9024470e-002 -8.0827300e-003 +v 7.5208200e-003 3.6733400e-002 -6.7614300e-003 +v 1.9968120e-002 3.4843990e-002 -1.8984900e-003 +v -4.5058400e-002 3.3600490e-002 -1.2527510e-002 +v -3.0754850e-002 3.8639810e-002 -1.4050770e-002 +v -5.1499810e-002 3.3729110e-002 -1.2082510e-002 +v -2.3756860e-002 3.8585750e-002 -1.1093270e-002 +v 3.9734700e-003 3.8208550e-002 -3.7963500e-003 +v 9.5485400e-003 3.4232620e-002 1.7162000e-003 +v 2.9086550e-002 3.5799990e-002 3.5630900e-003 +v -5.5965200e-002 3.3529910e-002 -9.1246200e-003 +v -1.9523510e-002 3.8505210e-002 -4.5434500e-003 +v 1.6363470e-002 3.4394790e-002 2.2948600e-003 +v 2.1324740e-002 3.4624040e-002 5.6444000e-003 +v -3.9670300e-002 3.6174000e-002 -7.3397700e-003 +v -1.4251730e-002 3.8648030e-002 -4.3030400e-003 +v 2.3262300e-003 3.5348200e-002 2.3246000e-003 +v 1.4014300e-002 3.5703800e-002 3.8878900e-003 +v 1.5322800e-002 3.6239700e-002 3.6628500e-003 +v 2.3753130e-002 3.4670710e-002 3.9885300e-003 +v 3.2369180e-002 3.5816010e-002 7.0246300e-003 +v -6.3715900e-002 3.3776930e-002 -8.0065600e-003 +v -6.4266880e-002 3.3562500e-002 -5.1253200e-003 +v -3.8066600e-002 3.8518600e-002 -7.3079600e-003 +v -9.4308800e-003 3.8887690e-002 -7.4848700e-003 +v 3.9677800e-003 3.4200210e-002 4.9754500e-003 +v 9.4292600e-003 3.6030400e-002 4.5275100e-003 +v 2.9859020e-002 3.4980130e-002 9.8349300e-003 +v -5.2730060e-002 3.3497900e-002 -1.8117500e-003 +v -4.1271000e-002 3.3855400e-002 -1.8800800e-003 +v -3.1105000e-003 3.8946190e-002 -2.7793900e-003 +v 6.2194100e-003 3.5134100e-002 6.5492800e-003 +v 2.0897900e-002 3.5937100e-002 8.7849000e-003 +v 3.5606010e-002 3.6526640e-002 9.8155300e-003 +v -6.7078340e-002 3.3840100e-002 -6.1688300e-003 +v -8.1140000e-004 3.7424170e-002 4.7721500e-003 +v 3.1492300e-003 3.4125310e-002 1.1762220e-002 +v 4.9172000e-003 3.3997100e-002 9.1666100e-003 +v 2.5130800e-002 3.4546910e-002 1.1012580e-002 +v 2.8248620e-002 3.5046370e-002 1.6016700e-002 +v -6.7032970e-002 6.5145960e-002 2.7292860e-002 +v -4.6380170e-002 3.3605230e-002 -8.9435000e-004 +v -3.3163400e-002 3.8195400e-002 -5.2520000e-004 +v -3.2074200e-002 3.8323400e-002 -4.2109000e-004 +v -2.1692690e-002 3.8266010e-002 4.5100800e-003 +v 2.3930750e-002 3.4816710e-002 1.7739160e-002 +v 4.2719120e-002 3.9977070e-002 8.9321600e-003 +v -5.8604080e-002 3.3462230e-002 -2.1667000e-004 +v -3.7314400e-002 3.3633000e-002 4.5724700e-003 +v -1.0423990e-002 3.8488570e-002 6.2292700e-003 +v -1.3896900e-003 3.8651360e-002 2.3966500e-003 +v -3.0845000e-004 3.5462480e-002 8.2607200e-003 +v -1.4089000e-003 3.6193080e-002 1.2944550e-002 +v 2.2252900e-002 3.6583300e-002 1.3979700e-002 +v -7.0961830e-002 3.4345730e-002 -7.8374000e-004 +v -6.9066180e-002 3.3717630e-002 -1.9761000e-004 +v -6.4825640e-002 3.3505860e-002 2.8222500e-003 +v -4.7059660e-002 3.3501860e-002 3.5646400e-003 +v -3.6953800e-003 3.8172780e-002 1.3046800e-002 +v 3.3475850e-002 3.6447340e-002 1.6266960e-002 +v 3.7249610e-002 3.7509920e-002 1.4815820e-002 +v -4.5675940e-002 3.3703640e-002 6.4300300e-003 +v -3.8639270e-002 3.3937310e-002 8.5506500e-003 +v -9.5064100e-003 3.8352640e-002 1.5570660e-002 +v 2.1499800e-002 3.5807100e-002 1.8169400e-002 +v 4.4876460e-002 4.1230990e-002 1.6008250e-002 +v -7.2474010e-002 3.6255930e-002 1.5532600e-003 +v -7.1498130e-002 3.4452970e-002 4.2026500e-003 +v -2.7790900e-002 3.8062900e-002 7.9376100e-003 +v -1.6556410e-002 3.8286470e-002 1.0215790e-002 +v 8.1043500e-003 3.4842900e-002 1.8134600e-002 +v 2.3589460e-002 3.5890600e-002 2.5337690e-002 +v 4.1261350e-002 4.0585070e-002 2.0751930e-002 +v -5.1350870e-002 3.3645700e-002 8.0329400e-003 +v -4.7104300e-002 3.5549500e-002 8.0803900e-003 +v -1.4103500e-003 3.6999940e-002 1.6982030e-002 +v 9.1714000e-004 3.4803380e-002 1.5634690e-002 +v 2.8887900e-003 3.4636250e-002 1.8849770e-002 +v 1.3279200e-002 3.4379500e-002 2.1423700e-002 +v 1.4322700e-002 3.4425500e-002 2.1593200e-002 +v 1.7490100e-002 3.4646300e-002 2.2040900e-002 +v 2.9868460e-002 3.6248820e-002 1.9872200e-002 +v -3.9222000e-002 3.6326200e-002 1.0789900e-002 +v -3.0307100e-002 3.3995400e-002 1.4706400e-002 +v 2.0081230e-002 3.5172700e-002 2.8018770e-002 +v 2.4989010e-002 3.8104580e-002 2.9429570e-002 +v 3.3584130e-002 3.8303930e-002 2.2928670e-002 +v 4.9015720e-002 4.4573630e-002 2.0659450e-002 +v -5.8225970e-002 6.6607310e-002 3.5050280e-002 +v -6.7330830e-002 3.3846440e-002 8.7266300e-003 +v -3.4692330e-002 3.3828710e-002 1.2438580e-002 +v -2.9803200e-002 3.4287000e-002 1.6353100e-002 +v 1.7023800e-003 3.6310890e-002 2.1179600e-002 +v 4.5137020e-002 4.4625440e-002 2.5516510e-002 +v -6.8876490e-002 1.1022176e-001 3.9004630e-002 +v -5.7680560e-002 3.3622690e-002 1.4040310e-002 +v -5.3210500e-002 3.3585300e-002 1.3987000e-002 +v -3.5711600e-002 3.5891600e-002 1.5502900e-002 +v -2.8861500e-002 3.5396700e-002 1.7350000e-002 +v -2.6580500e-002 3.7742600e-002 1.5705300e-002 +v -1.0974400e-003 3.8147840e-002 2.0427010e-002 +v 3.5047710e-002 4.0973940e-002 2.6970390e-002 +v -6.9685460e-002 3.4478780e-002 9.7984300e-003 +v -5.4019000e-002 3.3309900e-002 1.5848000e-002 +v 4.4816800e-003 3.7117830e-002 2.4755300e-002 +v 6.6605500e-003 3.5204730e-002 2.4315930e-002 +v 8.3833000e-003 3.4748700e-002 2.4057310e-002 +v 3.8883100e-002 4.1032980e-002 2.4976570e-002 +v -2.6441900e-003 3.8727070e-002 2.5131260e-002 +v 3.2222300e-003 3.8708440e-002 2.5898750e-002 +v 9.0016500e-003 3.6890930e-002 2.8482190e-002 +v 1.3196980e-002 3.4835790e-002 3.1630980e-002 +v 2.2291600e-002 3.7053310e-002 3.3101020e-002 +v 2.8948390e-002 3.9160020e-002 2.7234810e-002 +v -8.7773470e-002 1.1181412e-001 3.7144310e-002 +v -1.7870490e-002 3.8203890e-002 2.0243220e-002 +v 1.0087420e-002 3.7047690e-002 3.0822500e-002 +v 4.2296550e-002 4.5435770e-002 2.9040920e-002 +v -8.4341340e-002 1.1388013e-001 4.6513480e-002 +v -7.3795710e-002 1.0895629e-001 3.9217250e-002 +v -5.1243340e-002 6.4239200e-002 3.4258040e-002 +v -6.1777390e-002 3.4017860e-002 1.6900580e-002 +v -3.6665100e-002 3.5304200e-002 2.3032000e-002 +v -1.4930180e-002 3.8643510e-002 2.9378330e-002 +v -8.0894520e-002 1.0967225e-001 3.7910230e-002 +v -8.9822620e-002 1.1387199e-001 3.2845310e-002 +v -6.9655510e-002 6.8728370e-002 3.1127880e-002 +v -7.8449800e-002 1.0988832e-001 4.2517920e-002 +v -7.5824140e-002 1.0794900e-001 3.7128750e-002 +v -5.5740630e-002 3.4128050e-002 2.6674360e-002 +v -3.8279600e-002 3.5429000e-002 2.4380600e-002 +v -3.5283340e-002 3.4179780e-002 2.2744860e-002 +v -2.5798070e-002 3.7865000e-002 1.9981460e-002 +v 6.9064300e-003 3.9004270e-002 2.9548510e-002 +v 1.5448990e-002 3.4852440e-002 3.6984890e-002 +v 1.9128230e-002 3.5640640e-002 3.6642280e-002 +v -6.3664970e-002 6.6047840e-002 3.1828080e-002 +v 3.9604800e-002 4.4939530e-002 2.9992360e-002 +v -8.0294310e-002 7.1702430e-002 1.5995300e-002 +v -5.4185430e-002 6.7322700e-002 3.6935610e-002 +v -7.3110210e-002 1.4847168e-001 -2.8748470e-002 +v -5.8999980e-002 7.3751550e-002 4.1197080e-002 +v -5.9520730e-002 6.1040260e-002 -2.3753800e-003 +v -6.2791800e-002 3.4596760e-002 2.3505640e-002 +v -4.1895500e-002 3.3668300e-002 2.6940000e-002 +v 8.9808200e-003 3.7639400e-002 3.3900800e-002 +v 8.5287800e-003 3.4888000e-002 3.6265100e-002 +v -8.9803890e-002 1.1498106e-001 4.2771650e-002 +v -6.5545420e-002 7.4430370e-002 3.9168070e-002 +v -6.4644190e-002 6.1723230e-002 2.2552000e-004 +v 5.2496900e-003 3.9507100e-002 3.3271200e-002 +v 2.0250320e-002 3.7033170e-002 3.9327190e-002 +v -6.7006400e-002 6.3292870e-002 -1.7493900e-003 +v -6.4479770e-002 6.0651470e-002 4.2343200e-003 +v -5.7219630e-002 5.7000470e-002 4.9175800e-003 +v -7.4362810e-002 7.2437050e-002 3.1430040e-002 +v -6.2019000e-002 3.4343180e-002 3.1883280e-002 +v -4.6870820e-002 3.4444130e-002 3.0513130e-002 +v -2.0814280e-002 3.8400960e-002 2.7868430e-002 +v 1.6439350e-002 3.5635110e-002 4.1281040e-002 +v -6.9087160e-002 1.1205014e-001 4.5320060e-002 +v -7.1811570e-002 1.4861318e-001 -3.4639490e-002 +v -6.9538770e-002 6.3074750e-002 3.5758200e-003 +v -8.4863890e-002 7.8392100e-002 1.6462010e-002 +v -9.1188780e-002 1.1588893e-001 2.4705540e-002 +v -8.8827760e-002 1.1359169e-001 2.3873640e-002 +v -7.1302830e-002 1.1325363e-001 4.9444530e-002 +v -5.4876950e-002 7.0282330e-002 3.8828200e-002 +v -7.7208880e-002 1.0715887e-001 3.4738290e-002 +v -6.1241780e-002 5.9007440e-002 8.0916600e-003 +v -6.5885650e-002 3.5025080e-002 2.9416520e-002 +v -5.7889430e-002 3.4419570e-002 3.6265760e-002 +v -5.1847710e-002 3.4470270e-002 3.4635180e-002 +v -3.4834600e-002 3.4721400e-002 3.4578200e-002 +v -3.0984700e-002 3.8191900e-002 3.2390100e-002 +v -4.9613100e-003 3.9364900e-002 3.6702200e-002 +v 1.2224170e-002 3.5177480e-002 4.2620580e-002 +v -7.4898220e-002 1.1458863e-001 5.0776480e-002 +v -8.0469100e-002 1.1357963e-001 4.6643440e-002 +v -7.4107560e-002 6.9586030e-002 2.7264400e-002 +v -7.9002620e-002 7.6339320e-002 2.9248090e-002 +v -6.5297080e-002 3.4778970e-002 3.3744340e-002 +v -3.3656400e-002 3.4344100e-002 3.6914100e-002 +v 4.9318500e-003 3.4814800e-002 4.3462110e-002 +v 1.1347440e-002 3.6213020e-002 4.4652280e-002 +v -6.0569260e-002 7.1154540e-002 3.8653760e-002 +v -8.8979470e-002 1.1450869e-001 2.8446030e-002 +v -6.8543520e-002 6.1090480e-002 1.0557760e-002 +v -8.2710960e-002 1.1648975e-001 4.8518530e-002 +v -4.1913210e-002 3.4467720e-002 3.3200040e-002 +v -1.1289800e-002 3.9529200e-002 3.8844100e-002 +v -2.8261900e-003 3.4885340e-002 4.5611410e-002 +v -6.4561210e-002 5.9484140e-002 1.3061680e-002 +v -5.8581440e-002 5.7801460e-002 1.3429540e-002 +v -2.3320000e-002 3.9169500e-002 3.8473300e-002 +v -1.8159900e-002 3.9322300e-002 3.9402900e-002 +v -1.6471400e-002 3.4812800e-002 4.3684700e-002 +v 3.2906600e-003 3.5833470e-002 4.6024610e-002 +v -8.5229630e-002 1.1200712e-001 3.0416940e-002 +v -8.5644730e-002 1.1131719e-001 3.4234780e-002 +v -7.4530360e-002 6.6680690e-002 4.6953300e-003 +v -7.1112970e-002 6.2751470e-002 8.7995500e-003 +v -6.1149380e-002 5.8834410e-002 1.6539440e-002 +v -4.6912270e-002 3.4627180e-002 3.9739710e-002 +v -4.0760350e-002 3.4668230e-002 4.0492530e-002 +v -2.6323100e-002 3.4658000e-002 4.3473500e-002 +v -3.1836600e-003 3.6229910e-002 4.7873100e-002 +v -7.9940490e-002 1.0916678e-001 3.4119800e-002 +v -5.9712170e-002 6.3165280e-002 2.8789180e-002 +v -5.1176600e-002 6.8061880e-002 3.7398330e-002 +v -5.0126580e-002 7.0933150e-002 3.9481010e-002 +v -7.2790130e-002 6.4399880e-002 1.5205950e-002 +v -6.8511230e-002 6.1214650e-002 1.5354080e-002 +v -3.9343210e-002 3.5440180e-002 4.2492560e-002 +v -8.1305900e-003 3.5008350e-002 4.7502400e-002 +v -6.6080670e-002 7.0202740e-002 3.5552860e-002 +v -6.8602600e-002 1.4992277e-001 -4.0051350e-002 +v -7.1722100e-002 6.7023040e-002 2.4959750e-002 +v -7.5115010e-002 6.6557040e-002 1.0244090e-002 +v -6.5146650e-002 3.5945650e-002 3.9775080e-002 +v -3.6898600e-002 3.5924640e-002 4.4794170e-002 +v -9.4780400e-003 3.5977600e-002 4.9434210e-002 +v -8.5175960e-002 1.1706809e-001 4.8139420e-002 +v -6.3366400e-002 6.2790260e-002 2.5647610e-002 +v -6.6633330e-002 6.1001700e-002 1.8101240e-002 +v -5.8167590e-002 5.9985190e-002 2.2606060e-002 +v -6.4212210e-002 3.4992560e-002 3.9401920e-002 +v -5.3425790e-002 3.4560020e-002 4.2782420e-002 +v -1.8031490e-002 3.4859970e-002 4.9264760e-002 +v -1.1440410e-002 3.7640770e-002 5.0275730e-002 +v -7.5165320e-002 1.1154286e-001 4.6707180e-002 +v -7.7168390e-002 6.9826450e-002 5.0605600e-003 +v -7.2801360e-002 6.4382590e-002 1.2089080e-002 +v -7.8022000e-002 7.0995160e-002 2.1322150e-002 +v -6.1263370e-002 3.4690410e-002 4.1994900e-002 +v -5.4403750e-002 3.5007310e-002 4.4874590e-002 +v -4.5754280e-002 3.5206980e-002 4.3518120e-002 +v -3.3832440e-002 3.5168820e-002 4.6957890e-002 +v -2.8657630e-002 3.5083380e-002 5.0549440e-002 +v -1.5306440e-002 3.5246410e-002 5.0133810e-002 +v -6.5283650e-002 1.5592447e-001 -4.9865930e-002 +v -6.6467860e-002 1.4871539e-001 -3.1579300e-002 +v -6.2095980e-002 1.6388324e-001 -5.8385930e-002 +v -6.3274890e-002 1.5245731e-001 -3.2221730e-002 +v -4.3755720e-002 1.4773408e-001 -2.1433200e-003 +v -6.5696940e-002 1.4561631e-001 -1.8974710e-002 +v -6.6713650e-002 1.5358824e-001 -4.9097100e-002 +v -1.0482810e-002 1.6668287e-001 -2.1746090e-002 +v -6.2744510e-002 1.6397531e-001 -5.9398280e-002 +v -7.0413230e-002 1.4129200e-001 -8.4590800e-003 +v -6.1530380e-002 1.4037628e-001 -6.2734700e-003 +v -1.1452460e-002 1.7220633e-001 -2.6844980e-002 +v -6.3731140e-002 1.6577037e-001 -6.0103610e-002 +v -2.8218820e-002 1.5758144e-001 -1.0999490e-002 +v -1.8471270e-002 1.5967716e-001 -1.1169510e-002 +v -6.6700710e-002 1.5236775e-001 -4.5266390e-002 +v -4.9896410e-002 1.4670859e-001 -1.8614200e-003 +v -3.1449640e-002 1.5460463e-001 -7.6802300e-003 +v -6.7447660e-002 1.5507675e-001 -5.1594250e-002 +v -1.0906650e-002 1.7649301e-001 -2.9246300e-002 +v -7.2083600e-002 1.4965550e-001 -3.9265860e-002 +v -6.4230830e-002 1.4877806e-001 -2.5899710e-002 +v -6.3056640e-002 1.4341650e-001 -7.4907700e-003 +v -5.3043350e-002 1.4092550e-001 -4.7408000e-004 +v -3.9269410e-002 1.5205232e-001 -6.6203800e-003 +v -6.4796930e-002 1.5210615e-001 -3.6185520e-002 +v -6.4400320e-002 1.5834400e-001 -5.4256370e-002 +v -6.6178120e-002 1.4218350e-001 -9.3766300e-003 +v -6.7751430e-002 1.4605207e-001 -2.3333300e-002 +v -6.4731580e-002 1.5410067e-001 -4.0464820e-002 +v -2.4265590e-002 1.5687690e-001 -7.8509300e-003 +v -1.5723180e-002 1.6312344e-001 -1.6396570e-002 +v -7.0887660e-002 1.4404618e-001 -1.4908480e-002 +v -4.4341830e-002 1.5113809e-001 -5.6859800e-003 +v -6.2896810e-002 1.4694778e-001 -1.3098620e-002 +v -6.3755400e-002 1.4428875e-001 -1.1395730e-002 +v -6.8214560e-002 1.4390932e-001 -1.4984170e-002 +v -5.0271440e-002 1.4336563e-001 1.5153000e-003 +v -2.8535590e-002 1.6208479e-001 -1.4786030e-002 +v -6.5810700e-002 1.4359119e-001 -1.2585380e-002 +v -5.6179200e-002 1.3774406e-001 -4.0674300e-003 +v -6.8866880e-002 1.4723338e-001 -2.8739870e-002 +v -6.0965420e-002 1.7002113e-001 -6.0839390e-002 +v -1.3895490e-002 1.6787168e-001 -2.1897230e-002 +v -6.9413000e-002 1.5121847e-001 -4.4538540e-002 +v -5.5039800e-002 5.7309700e-002 1.6990900e-002 +f 1069 1647 1578 +f 1058 909 939 +f 421 1176 238 +f 1055 1101 1042 +f 238 1059 1126 +f 1254 30 1261 +f 1065 1071 1 +f 1037 1130 1120 +f 1570 2381 1585 +f 2434 2502 2473 +f 1632 1654 1646 +f 1144 1166 669 +f 1202 1440 305 +f 1071 1090 1 +f 1555 1570 1584 +f 1184 1174 404 +f 65 432 12 +f 1032 1085 574 +f 1789 2207 2223 +f 1154 1118 1184 +f 1141 1086 1154 +f 99 1117 342 +f 404 1174 419 +f 489 2000 1998 +f 1118 1174 1184 +f 1196 403 136 +f 1495 717 1490 +f 1804 402 1207 +f 2272 1398 891 +f 1100 1002 804 +f 1596 1595 2381 +f 208 420 1207 +f 402 208 1207 +f 1455 1935 1925 +f 1176 1059 238 +f 1150 1040 348 +f 1957 1537 2051 +f 1124 1189 939 +f 1804 1207 1823 +f 1381 1300 1109 +f 383 384 1182 +f 1085 1086 1141 +f 1040 1046 132 +f 220 1495 1188 +f 420 261 1207 +f 261 420 1065 +f 1055 1133 1101 +f 1054 421 403 +f 182 1109 2 +f 1181 1207 320 +f 545 1570 1561 +f 35 342 432 +f 1024 574 1141 +f 432 342 12 +f 1489 1081 1547 +f 1181 320 1805 +f 1516 1683 1507 +f 357 1117 1047 +f 1561 1570 1555 +f 1090 1196 1206 +f 1047 1203 1051 +f 1165 202 1121 +f 1099 341 301 +f 1174 240 419 +f 922 921 833 +f 1121 1080 385 +f 815 21 1183 +f 35 99 342 +f 1083 398 262 +f 106 94 1317 +f 94 292 1317 +f 292 95 1317 +f 940 1039 1033 +f 1300 1306 433 +f 21 212 471 +f 1120 1131 1037 +f 833 921 688 +f 1117 357 342 +f 106 271 94 +f 386 227 1375 +f 1130 1044 1053 +f 419 240 219 +f 1255 1244 32 +f 1557 1081 1489 +f 2062 2120 2109 +f 2034 2110 430 +f 23 315 1111 +f 291 94 271 +f 291 292 94 +f 50 386 95 +f 964 734 665 +f 1616 1585 1611 +f 445 1084 402 +f 574 1085 1141 +f 1654 341 1653 +f 220 1188 1640 +f 342 69 12 +f 417 261 328 +f 292 50 95 +f 204 227 386 +f 50 204 386 +f 1276 1471 1311 +f 1206 1196 136 +f 1033 1055 1042 +f 1037 1044 1130 +f 1180 320 417 +f 1121 202 1080 +f 325 203 271 +f 291 76 292 +f 292 237 50 +f 2159 1696 1767 +f 583 929 850 +f 1584 1585 1616 +f 1495 1490 1188 +f 1557 1489 1660 +f 1078 1069 1494 +f 1972 1992 1971 +f 183 1226 2000 +f 325 429 203 +f 292 76 237 +f 1152 227 1143 +f 1488 1412 1489 +f 1638 1646 1653 +f 1947 1869 2468 +f 203 306 291 +f 306 76 291 +f 237 248 50 +f 204 1143 227 +f 2395 14 429 +f 1502 881 2500 +f 1 1090 202 +f 1652 1653 1099 +f 2117 1863 2496 +f 50 248 204 +f 160 792 994 +f 884 888 857 +f 544 2117 2496 +f 1090 1206 202 +f 2463 879 2492 +f 429 306 203 +f 498 188 418 +f 865 884 857 +f 994 998 1014 +f 884 897 888 +f 1795 948 1802 +f 208 1035 1071 +f 1065 1 1066 +f 377 435 1377 +f 304 429 14 +f 304 306 429 +f 73 60 74 +f 248 592 204 +f 846 2264 829 +f 897 912 906 +f 1004 991 992 +f 1422 1421 1233 +f 980 10 303 +f 1058 922 909 +f 2436 2449 2418 +f 394 435 377 +f 435 475 446 +f 475 474 446 +f 336 337 361 +f 338 235 372 +f 624 148 129 +f 812 306 596 +f 1726 992 1019 +f 945 1514 1511 +f 1069 1627 1628 +f 1812 1823 1181 +f 1165 1121 169 +f 447 475 435 +f 2487 2458 901 +f 42 59 46 +f 401 7 187 +f 1010 970 797 +f 1513 220 1640 +f 2474 2491 2462 +f 594 307 1014 +f 398 1513 1640 +f 307 594 1026 +f 545 2381 1570 +f 403 421 238 +f 445 402 127 +f 1611 1631 1616 +f 1805 1180 1148 +f 394 447 435 +f 2341 2413 2376 +f 75 74 60 +f 541 47 42 +f 47 59 42 +f 541 42 28 +f 917 931 1103 +f 897 906 883 +f 2484 2068 779 +f 888 883 857 +f 261 1065 328 +f 363 1307 349 +f 377 363 394 +f 444 747 464 +f 323 338 362 +f 92 116 74 +f 592 634 97 +f 982 1027 1004 +f 1020 982 1004 +f 1084 1054 1035 +f 208 402 1084 +f 421 1119 1176 +f 1207 1181 1823 +f 1179 1187 1160 +f 263 296 1343 +f 1298 296 1307 +f 1307 296 349 +f 405 363 349 +f 405 394 363 +f 405 447 394 +f 362 372 384 +f 338 372 362 +f 983 1004 987 +f 122 134 139 +f 415 440 414 +f 75 92 74 +f 226 186 246 +f 796 787 700 +f 1119 1059 1176 +f 122 114 91 +f 624 129 116 +f 641 558 631 +f 1311 1318 1487 +f 100 1162 1170 +f 1653 341 1099 +f 1316 1983 273 +f 263 277 296 +f 296 358 349 +f 436 447 405 +f 109 554 570 +f 504 1385 2501 +f 115 122 91 +f 2068 2460 779 +f 43 777 163 +f 378 405 349 +f 358 378 349 +f 448 447 436 +f 448 476 447 +f 78 77 108 +f 75 60 47 +f 1764 2481 1795 +f 717 714 1512 +f 1490 717 1501 +f 238 1126 168 +f 1878 1866 826 +f 2025 2360 2367 +f 251 278 263 +f 278 277 263 +f 277 318 296 +f 296 318 358 +f 318 350 358 +f 378 436 405 +f 384 372 1182 +f 454 440 415 +f 987 1004 992 +f 493 476 448 +f 323 788 338 +f 403 238 136 +f 1565 1503 1474 +f 297 277 278 +f 297 318 277 +f 358 350 378 +f 378 388 436 +f 476 493 500 +f 73 105 60 +f 323 337 312 +f 953 1573 2358 +f 142 161 119 +f 454 443 440 +f 1862 1871 1405 +f 297 319 318 +f 560 47 541 +f 170 1323 111 +f 357 1047 1050 +f 1119 98 1059 +f 1838 1877 1900 +f 2359 230 251 +f 350 364 378 +f 449 448 436 +f 449 493 448 +f 185 186 226 +f 443 469 479 +f 874 165 2480 +f 463 444 464 +f 64 105 91 +f 1182 440 1129 +f 1958 1651 2502 +f 1238 2034 191 +f 251 279 278 +f 278 279 297 +f 364 388 378 +f 483 493 449 +f 134 148 139 +f 244 268 259 +f 910 942 930 +f 105 115 91 +f 24 30 18 +f 1132 487 1059 +f 1869 1947 2021 +f 2497 2494 2463 +f 2359 2385 230 +f 230 280 251 +f 251 280 279 +f 279 308 297 +f 297 308 319 +f 319 364 318 +f 364 350 318 +f 388 395 436 +f 436 395 449 +f 493 472 500 +f 122 129 134 +f 125 142 124 +f 373 400 393 +f 24 557 30 +f 2264 2278 2251 +f 1261 30 1269 +f 1730 1862 1877 +f 252 280 230 +f 343 364 319 +f 364 343 388 +f 63 64 91 +f 399 393 416 +f 416 444 463 +f 162 189 142 +f 768 373 326 +f 189 661 177 +f 189 199 661 +f 847 887 864 +f 533 747 444 +f 1744 1022 1418 +f 1170 524 729 +f 121 1342 128 +f 1236 1244 26 +f 280 281 279 +f 281 308 279 +f 343 319 308 +f 343 365 388 +f 388 365 395 +f 365 406 395 +f 406 449 395 +f 483 477 493 +f 477 491 472 +f 493 477 472 +f 78 109 77 +f 166 174 196 +f 481 150 814 +f 63 59 64 +f 326 373 393 +f 643 260 43 +f 230 253 252 +f 449 441 483 +f 441 477 483 +f 415 416 463 +f 226 246 245 +f 464 470 454 +f 323 362 337 +f 52 37 1283 +f 253 281 252 +f 281 280 252 +f 309 308 281 +f 330 343 308 +f 366 365 343 +f 441 449 406 +f 464 814 15 +f 883 906 887 +f 337 362 371 +f 479 498 290 +f 247 746 1003 +f 25 37 557 +f 640 930 669 +f 2486 2499 2459 +f 309 330 308 +f 343 330 366 +f 441 437 477 +f 290 498 418 +f 124 119 108 +f 77 124 108 +f 589 125 109 +f 570 589 109 +f 125 162 142 +f 1045 433 1034 +f 1207 261 320 +f 2004 2474 2495 +f 1215 1228 2285 +f 365 396 406 +f 396 422 406 +f 422 437 441 +f 406 422 441 +f 59 47 60 +f 51 78 66 +f 361 371 383 +f 196 215 214 +f 463 454 415 +f 27 41 535 +f 53 1283 37 +f 84 1299 1283 +f 1805 320 1180 +f 254 253 222 +f 254 281 253 +f 309 366 330 +f 396 365 366 +f 456 477 437 +f 484 491 477 +f 2480 2485 2493 +f 418 188 187 +f 53 85 1283 +f 85 84 1283 +f 420 1071 1065 +f 264 281 254 +f 298 309 281 +f 368 366 367 +f 368 396 366 +f 1639 1564 1139 +f 560 48 47 +f 82 471 212 +f 25 38 37 +f 202 1206 1080 +f 264 298 281 +f 298 331 309 +f 309 331 366 +f 331 367 366 +f 396 368 422 +f 422 456 437 +f 491 1192 313 +f 1699 2064 1710 +f 462 443 479 +f 371 362 384 +f 2502 2476 2464 +f 371 384 383 +f 21 732 212 +f 1571 1629 1627 +f 38 39 53 +f 37 38 53 +f 39 85 53 +f 1173 1184 404 +f 1006 2142 1674 +f 201 255 254 +f 255 264 254 +f 368 407 422 +f 450 456 422 +f 450 484 456 +f 456 484 477 +f 314 1192 491 +f 2027 2501 2489 +f 2475 2471 2488 +f 551 492 732 +f 464 481 814 +f 1081 1494 1547 +f 201 231 255 +f 407 450 422 +f 484 494 491 +f 494 327 491 +f 327 314 491 +f 876 797 995 +f 847 856 829 +f 125 143 162 +f 134 129 148 +f 1564 1571 1627 +f 417 320 261 +f 328 1065 1066 +f 170 156 201 +f 156 231 201 +f 231 282 255 +f 282 264 255 +f 450 485 484 +f 484 485 494 +f 2463 2486 2479 +f 159 185 167 +f 492 68 212 +f 732 492 212 +f 68 82 212 +f 1311 1471 1296 +f 101 156 111 +f 332 264 282 +f 332 298 264 +f 332 331 298 +f 331 332 367 +f 407 423 450 +f 450 423 485 +f 804 1002 1443 +f 2484 779 946 +f 689 443 462 +f 440 689 1129 +f 166 167 174 +f 38 31 39 +f 112 145 101 +f 101 145 156 +f 156 256 231 +f 332 423 368 +f 367 332 368 +f 368 423 407 +f 946 779 920 +f 1432 1261 1449 +f 461 478 453 +f 464 15 470 +f 31 54 39 +f 39 54 85 +f 86 101 85 +f 145 210 156 +f 282 283 332 +f 283 369 332 +f 369 423 332 +f 423 408 485 +f 854 876 965 +f 78 108 66 +f 440 443 689 +f 374 2465 961 +f 929 519 979 +f 54 86 85 +f 156 241 256 +f 256 282 231 +f 256 283 282 +f 389 423 369 +f 389 408 423 +f 408 457 485 +f 457 49 485 +f 485 49 494 +f 494 135 327 +f 175 83 314 +f 1167 1140 1483 +f 196 174 215 +f 697 16 68 +f 1038 82 16 +f 140 117 141 +f 1654 1653 1646 +f 1234 54 31 +f 86 112 101 +f 210 241 156 +f 923 917 911 +f 697 34 16 +f 145 193 210 +f 256 265 283 +f 265 310 283 +f 283 310 369 +f 310 344 369 +f 344 370 369 +f 370 389 369 +f 409 408 389 +f 409 466 408 +f 466 457 408 +f 466 49 457 +f 49 135 494 +f 174 225 215 +f 1014 766 602 +f 826 2220 2215 +f 1078 1494 1081 +f 1273 70 86 +f 120 112 86 +f 146 145 112 +f 146 193 145 +f 265 256 241 +f 223 265 241 +f 486 49 466 +f 175 327 135 +f 105 122 115 +f 480 15 681 +f 225 234 215 +f 731 34 697 +f 86 54 1273 +f 70 120 86 +f 193 241 210 +f 299 310 265 +f 310 333 344 +f 344 351 370 +f 424 466 409 +f 135 49 175 +f 214 215 234 +f 48 75 47 +f 34 9 1038 +f 16 34 1038 +f 203 291 271 +f 9 558 754 +f 1195 397 1120 +f 120 146 112 +f 146 194 193 +f 266 265 223 +f 266 299 265 +f 299 333 310 +f 333 351 344 +f 382 383 392 +f 399 416 415 +f 266 333 299 +f 351 352 370 +f 424 486 466 +f 487 175 49 +f 7 117 187 +f 1182 414 440 +f 41 42 46 +f 290 289 497 +f 2502 2464 2473 +f 372 399 414 +f 1570 1585 1584 +f 1066 1 1165 +f 1 202 1165 +f 120 70 102 +f 157 146 120 +f 194 223 193 +f 223 241 193 +f 352 379 370 +f 370 379 389 +f 410 409 389 +f 2478 1409 1958 +f 806 945 1002 +f 157 194 146 +f 267 266 223 +f 267 333 266 +f 379 410 389 +f 410 438 409 +f 438 424 409 +f 190 205 143 +f 337 371 361 +f 2215 830 826 +f 1631 1646 1638 +f 102 157 120 +f 157 195 194 +f 195 223 194 +f 195 211 223 +f 223 211 267 +f 267 300 333 +f 300 334 351 +f 333 300 351 +f 351 334 352 +f 410 411 438 +f 438 486 424 +f 487 49 486 +f 875 594 989 +f 108 581 66 +f 225 245 244 +f 312 336 335 +f 151 754 107 +f 274 1386 300 +f 352 334 379 +f 923 1729 1096 +f 244 245 268 +f 463 464 454 +f 414 399 415 +f 15 480 470 +f 1647 1069 1078 +f 909 922 833 +f 387 417 328 +f 133 157 102 +f 1314 133 102 +f 133 195 157 +f 1148 1179 1160 +f 1046 1167 182 +f 379 411 410 +f 792 339 229 +f 391 7 668 +f 185 226 174 +f 461 290 497 +f 2027 504 2501 +f 1196 1054 403 +f 728 1019 752 +f 2459 2483 2461 +f 1291 1264 55 +f 133 1356 195 +f 195 1356 211 +f 412 438 411 +f 4 486 438 +f 458 4 438 +f 4 487 486 +f 1720 1572 1771 +f 245 275 268 +f 1869 2021 2059 +f 235 399 372 +f 64 60 105 +f 836 2492 879 +f 1315 133 1314 +f 1331 1382 1356 +f 1310 926 1128 +f 7 1121 117 +f 119 161 611 +f 380 379 334 +f 379 380 411 +f 467 4 458 +f 495 487 4 +f 495 1126 487 +f 416 400 533 +f 479 469 498 +f 74 116 73 +f 478 461 497 +f 393 400 416 +f 61 1291 55 +f 505 1999 2474 +f 1999 2491 2474 +f 199 189 36 +f 1164 1165 169 +f 1179 387 249 +f 390 411 380 +f 411 390 412 +f 458 438 412 +f 495 168 1126 +f 480 469 470 +f 116 122 105 +f 418 187 140 +f 185 174 167 +f 166 148 167 +f 470 469 443 +f 40 55 32 +f 61 71 1291 +f 71 103 1291 +f 1184 1173 1154 +f 634 514 97 +f 425 458 412 +f 917 923 931 +f 2472 2489 853 +f 754 641 567 +f 44 567 1163 +f 454 470 443 +f 40 32 1249 +f 33 40 1249 +f 56 55 40 +f 56 61 55 +f 451 1265 439 +f 1180 417 1179 +f 1099 301 1077 +f 1189 1058 939 +f 1059 221 1132 +f 598 1074 1075 +f 412 426 425 +f 650 186 185 +f 234 244 259 +f 226 245 225 +f 1033 1042 1030 +f 2492 836 247 +f 7 169 1121 +f 1462 1322 1482 +f 425 467 458 +f 496 4 467 +f 1751 2468 2480 +f 290 418 140 +f 326 789 762 +f 142 177 161 +f 165 1751 2480 +f 87 103 71 +f 103 87 104 +f 1180 1179 1148 +f 417 387 1179 +f 2081 2060 2031 +f 1154 1173 1141 +f 181 131 197 +f 442 425 426 +f 614 144 143 +f 876 1010 797 +f 40 45 56 +f 56 45 61 +f 87 71 61 +f 1563 1437 1590 +f 1121 385 117 +f 1148 1160 1137 +f 1449 1459 1439 +f 1028 2462 929 +f 442 459 425 +f 459 467 425 +f 168 495 4 +f 496 168 4 +f 1763 1403 1444 +f 140 187 117 +f 244 234 225 +f 246 740 269 +f 372 414 1182 +f 40 547 45 +f 45 62 61 +f 62 87 61 +f 87 88 104 +f 1084 517 1054 +f 387 328 1064 +f 2467 2497 2485 +f 286 1363 302 +f 205 189 162 +f 290 140 289 +f 214 234 224 +f 393 399 809 +f 315 1131 397 +f 302 321 353 +f 1164 169 391 +f 427 459 442 +f 217 496 467 +f 217 168 496 +f 978 969 2074 +f 361 383 382 +f 269 276 245 +f 1440 11 305 +f 62 88 87 +f 328 1066 1064 +f 1066 1165 1164 +f 242 287 302 +f 1363 242 302 +f 287 321 302 +f 1179 249 1187 +f 983 1020 1004 +f 464 747 481 +f 788 323 276 +f 269 245 246 +f 88 89 1325 +f 171 172 242 +f 360 353 321 +f 360 1354 353 +f 1057 1064 1164 +f 2184 2188 2183 +f 460 459 451 +f 460 467 459 +f 149 168 217 +f 149 136 168 +f 116 129 122 +f 109 124 77 +f 159 167 148 +f 28 42 41 +f 57 88 62 +f 45 57 62 +f 1336 1325 89 +f 89 72 1336 +f 147 172 171 +f 172 258 242 +f 258 257 242 +f 257 287 242 +f 257 321 287 +f 345 360 321 +f 360 381 1354 +f 1069 938 1655 +f 387 473 249 +f 270 217 467 +f 130 136 149 +f 851 847 829 +f 983 987 975 +f 189 177 142 +f 88 72 89 +f 184 258 172 +f 257 288 321 +f 1265 451 459 +f 270 149 217 +f 226 225 174 +f 27 28 41 +f 109 125 124 +f 547 57 45 +f 57 58 88 +f 88 58 72 +f 2476 2484 2458 +f 147 184 172 +f 184 213 258 +f 258 243 257 +f 243 288 257 +f 345 321 288 +f 391 169 7 +f 468 460 451 +f 468 488 460 +f 270 467 460 +f 488 270 460 +f 1206 136 130 +f 481 793 150 +f 143 205 162 +f 142 119 124 +f 58 90 72 +f 90 128 72 +f 147 173 184 +f 173 213 184 +f 213 233 258 +f 258 233 243 +f 354 360 345 +f 354 381 360 +f 1026 991 307 +f 268 312 259 +f 1206 130 1080 +f 116 105 73 +f 139 148 166 +f 275 312 268 +f 188 401 187 +f 2479 2459 2461 +f 58 63 90 +f 1064 1066 1164 +f 1064 473 387 +f 288 311 345 +f 311 354 345 +f 996 994 307 +f 452 468 439 +f 452 478 468 +f 478 488 468 +f 141 130 149 +f 1564 1639 1563 +f 547 41 57 +f 2081 2107 2060 +f 382 381 354 +f 497 270 488 +f 289 149 270 +f 289 141 149 +f 114 122 139 +f 59 60 64 +f 275 323 312 +f 401 668 7 +f 41 46 57 +f 57 46 58 +f 1459 1345 1269 +f 1342 121 158 +f 166 173 158 +f 213 224 233 +f 233 259 243 +f 243 322 288 +f 322 311 288 +f 453 478 452 +f 497 289 270 +f 912 911 906 +f 276 323 275 +f 276 275 245 +f 46 63 58 +f 90 121 128 +f 173 214 213 +f 213 214 224 +f 259 322 243 +f 336 311 322 +f 336 354 311 +f 361 382 354 +f 1043 439 1290 +f 497 488 478 +f 385 130 141 +f 385 1080 130 +f 144 190 143 +f 535 41 547 +f 121 166 158 +f 335 336 322 +f 354 336 361 +f 2004 2481 1764 +f 698 439 1043 +f 289 140 141 +f 923 1096 931 +f 650 185 159 +f 46 59 63 +f 63 91 90 +f 90 114 121 +f 121 139 166 +f 173 196 214 +f 259 335 322 +f 2478 2502 2434 +f 312 337 336 +f 90 91 114 +f 114 139 121 +f 166 196 173 +f 224 234 233 +f 234 259 233 +f 259 312 335 +f 1124 916 1189 +f 542 541 530 +f 462 479 290 +f 269 783 276 +f 813 567 641 +f 276 783 788 +f 82 1038 1333 +f 816 701 703 +f 672 137 603 +f 625 635 624 +f 2457 2439 1973 +f 767 533 529 +f 2468 1869 2480 +f 662 190 639 +f 711 720 719 +f 630 639 614 +f 161 654 638 +f 781 991 982 +f 1227 31 516 +f 648 639 630 +f 630 614 590 +f 2098 544 1899 +f 578 579 586 +f 697 492 551 +f 529 533 400 +f 869 859 870 +f 1732 924 914 +f 1004 1027 991 +f 801 591 603 +f 636 676 651 +f 876 949 965 +f 2207 1789 1859 +f 76 739 237 +f 188 681 15 +f 578 604 599 +f 797 616 995 +f 510 2035 1365 +f 76 812 617 +f 617 739 76 +f 1468 93 1765 +f 596 546 812 +f 1457 1305 1477 +f 760 197 150 +f 671 773 765 +f 586 609 604 +f 591 700 632 +f 476 2312 474 +f 2084 2027 2489 +f 582 590 571 +f 1555 2449 1996 +f 674 546 596 +f 812 655 617 +f 161 177 661 +f 599 604 636 +f 700 787 576 +f 776 675 572 +f 776 674 675 +f 617 634 739 +f 591 632 649 +f 612 546 674 +f 617 655 634 +f 728 752 706 +f 571 2311 2305 +f 775 674 776 +f 775 612 674 +f 612 628 546 +f 546 628 812 +f 812 628 655 +f 620 630 615 +f 620 648 630 +f 667 653 646 +f 810 782 785 +f 150 197 814 +f 534 1517 2000 +f 702 572 2378 +f 748 776 572 +f 655 613 634 +f 911 917 905 +f 648 679 662 +f 727 771 713 +f 750 807 799 +f 639 190 144 +f 662 679 200 +f 702 748 572 +f 775 776 748 +f 628 718 655 +f 626 658 645 +f 791 778 790 +f 612 811 628 +f 613 514 634 +f 1380 1756 1673 +f 570 590 614 +f 720 741 719 +f 1074 795 835 +f 614 639 144 +f 612 775 811 +f 718 735 655 +f 655 735 613 +f 798 338 788 +f 636 652 676 +f 571 590 555 +f 528 730 687 +f 690 702 2312 +f 476 690 2312 +f 811 718 628 +f 721 778 727 +f 748 702 690 +f 735 686 613 +f 1517 2002 2127 +f 654 685 667 +f 569 588 606 +f 513 531 538 +f 538 549 548 +f 549 553 548 +f 550 588 549 +f 1903 869 870 +f 691 775 748 +f 691 600 775 +f 600 811 775 +f 811 563 718 +f 563 736 718 +f 718 736 735 +f 736 647 735 +f 735 647 686 +f 686 745 613 +f 745 514 613 +f 569 606 605 +f 654 667 638 +f 851 857 847 +f 588 569 549 +f 690 691 748 +f 680 514 745 +f 2127 2002 2094 +f 747 701 481 +f 400 373 529 +f 600 536 811 +f 536 563 811 +f 1306 227 1152 +f 522 24 18 +f 523 24 522 +f 865 857 851 +f 2031 2060 1540 +f 767 701 747 +f 618 652 609 +f 652 636 609 +f 573 22 710 +f 642 699 730 +f 1522 1518 2476 +f 500 629 691 +f 690 500 691 +f 691 629 600 +f 780 644 641 +f 579 578 561 +f 131 668 197 +f 197 668 814 +f 789 809 798 +f 622 760 150 +f 621 563 536 +f 673 745 686 +f 673 818 745 +f 818 680 745 +f 680 96 514 +f 2495 2462 1028 +f 1028 583 575 +f 663 794 664 +f 629 761 600 +f 761 757 600 +f 600 757 536 +f 621 696 563 +f 755 736 563 +f 696 755 563 +f 633 736 755 +f 633 647 736 +f 623 686 647 +f 633 623 647 +f 686 623 673 +f 819 680 818 +f 680 819 96 +f 1729 1677 1096 +f 2482 1899 2471 +f 537 536 757 +f 536 537 621 +f 673 819 818 +f 2428 222 230 +f 25 24 523 +f 25 557 24 +f 38 25 19 +f 710 22 272 +f 663 759 794 +f 1120 878 1195 +f 537 696 621 +f 696 633 755 +f 822 2215 2220 +f 97 96 1053 +f 750 784 743 +f 887 905 864 +f 768 784 373 +f 512 513 548 +f 573 664 22 +f 696 715 633 +f 673 521 819 +f 2454 2453 2445 +f 883 887 847 +f 306 812 76 +f 642 528 759 +f 798 809 235 +f 994 792 998 +f 587 626 586 +f 1900 1918 1937 +f 645 652 618 +f 537 786 696 +f 521 593 819 +f 515 19 523 +f 741 749 719 +f 789 326 809 +f 539 581 550 +f 657 777 723 +f 684 713 660 +f 692 712 720 +f 652 666 692 +f 507 761 629 +f 472 507 629 +f 507 757 761 +f 623 633 673 +f 724 521 673 +f 515 516 19 +f 304 675 674 +f 178 778 721 +f 947 1447 2358 +f 626 645 618 +f 586 626 618 +f 784 768 742 +f 753 537 757 +f 537 753 786 +f 724 981 521 +f 521 981 593 +f 979 559 850 +f 637 660 677 +f 787 631 576 +f 141 117 385 +f 809 399 235 +f 641 754 558 +f 542 553 561 +f 742 768 762 +f 444 416 533 +f 528 687 796 +f 813 598 566 +f 1490 1501 1557 +f 753 757 507 +f 786 715 696 +f 633 724 673 +f 2090 2062 2109 +f 646 653 660 +f 660 694 683 +f 677 660 683 +f 1872 839 838 +f 1224 18 30 +f 326 393 809 +f 799 529 373 +f 313 507 472 +f 715 774 633 +f 974 699 841 +f 703 820 816 +f 692 711 676 +f 1014 355 766 +f 875 752 1019 +f 627 646 660 +f 711 692 720 +f 652 692 676 +f 799 373 784 +f 813 566 567 +f 2462 2482 2475 +f 764 644 780 +f 1479 1924 1916 +f 753 738 786 +f 738 607 786 +f 786 607 715 +f 715 524 774 +f 633 774 724 +f 559 979 672 +f 758 798 783 +f 683 694 705 +f 820 703 562 +f 764 687 644 +f 744 743 725 +f 313 753 507 +f 607 524 715 +f 664 801 22 +f 646 627 610 +f 800 820 562 +f 750 769 807 +f 767 747 533 +f 578 586 604 +f 862 593 981 +f 688 2382 1083 +f 306 304 674 +f 738 584 607 +f 168 136 238 +f 773 552 765 +f 2473 2464 2458 +f 773 793 552 +f 626 619 658 +f 1007 1139 1013 +f 562 529 799 +f 744 750 743 +f 659 683 693 +f 677 683 659 +f 313 737 753 +f 753 737 738 +f 607 729 524 +f 27 518 28 +f 553 569 580 +f 657 163 777 +f 580 569 605 +f 789 798 758 +f 769 562 807 +f 820 671 816 +f 638 646 611 +f 1074 598 644 +f 750 799 784 +f 1931 907 898 +f 2483 2487 2461 +f 737 584 738 +f 1439 1438 1431 +f 2098 1213 544 +f 48 578 75 +f 796 631 787 +f 815 732 21 +f 581 588 550 +f 625 636 651 +f 778 1011 810 +f 693 705 725 +f 693 683 705 +f 236 1921 1966 +f 584 729 607 +f 2237 1866 2227 +f 530 541 28 +f 237 739 248 +f 512 530 28 +f 727 778 771 +f 684 727 713 +f 2237 2220 826 +f 542 561 560 +f 528 796 700 +f 808 785 671 +f 739 592 248 +f 895 905 896 +f 740 246 186 +f 272 137 979 +f 770 769 744 +f 712 742 720 +f 1213 2026 544 +f 1888 1235 2438 +f 555 554 2311 +f 737 313 1192 +f 1585 1612 1611 +f 695 721 685 +f 518 17 28 +f 769 770 562 +f 719 749 740 +f 648 669 679 +f 773 657 723 +f 606 637 619 +f 2072 2062 2042 +f 606 619 626 +f 549 569 553 +f 161 638 611 +f 910 917 942 +f 917 1103 942 +f 991 1026 992 +f 979 137 672 +f 785 163 657 +f 710 2488 2472 +f 611 581 119 +f 808 671 820 +f 1820 1900 1870 +f 759 700 591 +f 637 677 619 +f 2494 2490 2463 +f 671 765 816 +f 687 764 780 +f 1019 992 1026 +f 1726 1719 987 +f 713 771 694 +f 51 2355 78 +f 510 526 525 +f 525 526 1249 +f 526 33 1249 +f 2311 554 2335 +f 827 848 840 +f 603 591 649 +f 758 269 740 +f 1595 1612 1586 +f 1694 1048 1699 +f 682 740 186 +f 22 801 603 +f 555 570 554 +f 1053 110 97 +f 615 582 601 +f 814 668 188 +f 725 705 744 +f 528 700 759 +f 640 648 620 +f 703 701 562 +f 886 892 582 +f 631 731 576 +f 1087 1835 1747 +f 882 864 895 +f 956 950 1103 +f 1502 2500 2470 +f 205 190 200 +f 815 878 616 +f 616 878 995 +f 1183 878 815 +f 1601 1827 881 +f 527 535 526 +f 2184 2183 2175 +f 1142 1125 1133 +f 235 338 798 +f 160 339 792 +f 599 92 75 +f 598 1116 566 +f 631 558 731 +f 771 770 744 +f 730 528 642 +f 841 699 642 +f 668 401 188 +f 510 527 526 +f 749 758 740 +f 706 721 695 +f 694 726 705 +f 694 744 726 +f 906 911 905 +f 661 695 161 +f 708 815 616 +f 535 547 33 +f 794 759 591 +f 778 808 790 +f 269 758 783 +f 771 744 694 +f 800 808 820 +f 571 886 582 +f 854 948 1010 +f 906 905 887 +f 625 651 635 +f 2000 1226 534 +f 2140 1504 2016 +f 601 620 615 +f 620 601 640 +f 648 640 669 +f 698 452 439 +f 671 785 657 +f 1561 2356 545 +f 685 653 667 +f 685 727 684 +f 568 616 797 +f 708 732 815 +f 93 229 339 +f 865 851 839 +f 942 1103 950 +f 589 614 125 +f 606 610 627 +f 951 834 873 +f 92 599 625 +f 1878 830 1902 +f 2482 2098 1899 +f 568 708 616 +f 708 551 732 +f 2434 2487 2483 +f 160 964 665 +f 2316 2391 2309 +f 762 758 749 +f 570 614 589 +f 888 897 883 +f 2000 1517 1388 +f 685 721 727 +f 588 610 606 +f 653 685 684 +f 651 650 635 +f 760 1151 6 +f 793 622 150 +f 651 676 650 +f 744 769 750 +f 541 542 560 +f 476 500 690 +f 473 1064 1057 +f 561 578 560 +f 636 625 599 +f 876 995 949 +f 829 856 846 +f 682 704 740 +f 791 790 770 +f 2466 2500 2460 +f 579 587 586 +f 1352 1208 1095 +f 1684 1479 1916 +f 604 609 636 +f 751 721 706 +f 810 608 782 +f 672 603 649 +f 475 447 476 +f 794 591 801 +f 682 186 650 +f 808 800 790 +f 644 598 813 +f 704 719 740 +f 1011 608 810 +f 1192 584 737 +f 687 780 796 +f 2337 474 2312 +f 638 667 646 +f 706 1186 728 +f 733 575 568 +f 595 551 708 +f 595 540 551 +f 1308 501 1852 +f 665 339 160 +f 527 2447 535 +f 558 9 731 +f 723 793 773 +f 660 713 694 +f 693 725 666 +f 562 767 529 +f 550 538 531 +f 2267 2287 2233 +f 996 964 160 +f 2068 2470 2466 +f 704 711 719 +f 741 762 749 +f 605 606 626 +f 548 542 530 +f 995 878 709 +f 1898 1684 1916 +f 778 791 771 +f 782 163 785 +f 789 758 762 +f 857 883 847 +f 733 970 1028 +f 838 829 825 +f 2447 511 535 +f 22 603 137 +f 705 726 744 +f 605 587 580 +f 512 548 530 +f 743 784 742 +f 790 800 770 +f 778 810 808 +f 1014 998 355 +f 708 568 595 +f 656 697 551 +f 540 656 551 +f 143 125 614 +f 1000 1020 983 +f 778 178 1011 +f 676 704 682 +f 637 627 660 +f 606 627 637 +f 701 552 481 +f 808 810 785 +f 590 570 555 +f 716 595 568 +f 2355 2335 554 +f 912 1729 911 +f 1076 1456 1546 +f 697 68 492 +f 676 711 704 +f 839 851 838 +f 1028 575 733 +f 1020 844 982 +f 716 568 575 +f 844 781 982 +f 1238 2156 2034 +f 553 580 561 +f 580 579 561 +f 452 461 453 +f 560 578 48 +f 564 540 595 +f 632 656 540 +f 564 632 540 +f 75 578 599 +f 518 27 535 +f 511 518 535 +f 783 798 788 +f 642 759 663 +f 720 742 741 +f 605 626 587 +f 580 587 579 +f 725 712 666 +f 562 701 767 +f 1729 923 911 +f 712 743 742 +f 619 677 658 +f 161 695 654 +f 770 800 562 +f 2084 2489 2472 +f 575 559 716 +f 716 564 595 +f 654 695 685 +f 843 855 2064 +f 34 731 9 +f 527 510 1973 +f 723 622 793 +f 992 1726 987 +f 693 666 652 +f 2472 853 573 +f 624 159 148 +f 671 657 773 +f 681 188 498 +f 797 970 733 +f 565 656 632 +f 565 697 656 +f 565 731 697 +f 1949 951 920 +f 85 111 84 +f 662 200 190 +f 44 324 754 +f 33 547 40 +f 658 693 652 +f 658 652 645 +f 664 794 801 +f 666 712 692 +f 639 648 662 +f 611 646 610 +f 850 559 575 +f 1447 2490 1106 +f 1972 1955 1935 +f 582 615 590 +f 66 581 539 +f 780 641 631 +f 796 780 631 +f 1049 1192 83 +f 1348 13 1519 +f 799 807 562 +f 581 611 588 +f 687 795 644 +f 663 8 642 +f 1936 1972 1935 +f 650 676 682 +f 615 630 590 +f 730 795 687 +f 742 762 741 +f 548 553 542 +f 1048 1692 1074 +f 658 659 693 +f 37 52 30 +f 611 610 588 +f 649 632 564 +f 565 576 731 +f 2138 922 1058 +f 1204 854 965 +f 725 743 712 +f 644 813 641 +f 660 653 684 +f 771 791 770 +f 644 795 1074 +f 469 480 681 +f 559 672 564 +f 716 559 564 +f 672 649 564 +f 2161 1378 2171 +f 474 475 476 +f 816 765 701 +f 765 552 701 +f 513 538 548 +f 754 324 107 +f 609 586 618 +f 25 523 19 +f 677 659 658 +f 689 452 698 +f 1334 1115 1353 +f 700 565 632 +f 700 576 565 +f 481 552 793 +f 763 901 2458 +f 550 549 538 +f 781 964 996 +f 1596 1634 1595 +f 198 916 1124 +f 198 1124 341 +f 842 973 1025 +f 842 1025 836 +f 1009 1024 934 +f 573 710 2472 +f 1100 971 1002 +f 1501 1081 1557 +f 1225 1219 955 +f 413 2138 284 +f 955 1630 522 +f 341 1124 301 +f 2333 2376 2350 +f 1107 218 284 +f 398 925 1513 +f 1513 1442 1495 +f 1935 1455 1744 +f 1723 1935 1744 +f 825 1872 838 +f 1495 1442 1496 +f 963 1024 1009 +f 1511 1514 966 +f 1775 1729 912 +f 688 262 1067 +f 714 1007 1512 +f 919 1732 914 +f 2319 2331 2304 +f 2400 2407 2391 +f 1674 2164 1780 +f 843 927 899 +f 1660 988 1188 +f 1067 262 1640 +f 1381 1109 1483 +f 1437 1381 1483 +f 2495 1010 948 +f 1514 1289 1313 +f 899 374 961 +f 1438 1430 1422 +f 1634 1095 1632 +f 2487 973 2461 +f 1003 499 874 +f 849 848 827 +f 1430 1462 1453 +f 2496 2084 2471 +f 909 10 980 +f 730 927 835 +f 2031 1540 1536 +f 831 849 2178 +f 881 834 951 +f 1841 1722 1803 +f 1005 670 1020 +f 1021 670 1005 +f 1869 2059 2467 +f 903 902 1939 +f 2476 2502 1651 +f 853 8 573 +f 1850 831 2178 +f 934 746 247 +f 934 65 746 +f 301 285 1077 +f 968 944 977 +f 970 2495 1028 +f 974 2465 374 +f 899 927 374 +f 1882 1898 1916 +f 1613 1634 1596 +f 909 833 1396 +f 2492 247 1003 +f 919 914 1931 +f 1459 1299 1458 +f 1634 1632 1633 +f 844 670 228 +f 2494 2497 2467 +f 901 973 2487 +f 228 1772 734 +f 1701 1709 1666 +f 963 574 1024 +f 847 864 856 +f 1730 1736 2239 +f 870 859 848 +f 2074 2111 2103 +f 1140 1590 1483 +f 927 730 974 +f 2103 978 2074 +f 756 1745 1718 +f 848 859 840 +f 1296 1482 1320 +f 2331 51 66 +f 1067 988 962 +f 1396 833 1445 +f 1001 1005 1000 +f 901 1009 973 +f 1099 1077 817 +f 933 944 936 +f 952 958 1828 +f 988 1660 986 +f 833 1067 1445 +f 1067 1640 988 +f 218 413 284 +f 1843 180 347 +f 1846 1708 1798 +f 2469 2477 855 +f 1006 1021 1005 +f 381 382 250 +f 2369 828 531 +f 968 977 1001 +f 2460 1949 779 +f 1194 1441 1115 +f 1001 1000 968 +f 756 678 1745 +f 963 1009 901 +f 2471 2084 2472 +f 841 642 8 +f 982 991 1027 +f 670 844 1020 +f 1289 1514 945 +f 869 904 890 +f 1161 1115 1639 +f 823 2178 849 +f 746 12 499 +f 263 428 2366 +f 1685 1075 1692 +f 1002 926 806 +f 1799 1755 216 +f 944 968 993 +f 943 944 993 +f 31 38 19 +f 531 828 550 +f 1501 1078 1081 +f 1921 1149 431 +f 936 943 932 +f 1660 1489 1412 +f 301 980 285 +f 903 918 902 +f 869 890 868 +f 890 903 867 +f 1003 746 499 +f 951 1949 2500 +f 990 841 853 +f 1595 1634 1611 +f 374 927 974 +f 836 1025 247 +f 1653 1652 1638 +f 1303 1545 1142 +f 1616 1631 1638 +f 1629 1546 1628 +f 936 932 913 +f 513 506 531 +f 868 890 867 +f 2330 2369 2353 +f 924 918 914 +f 907 914 904 +f 1258 1421 1267 +f 301 939 980 +f 1472 1482 1296 +f 868 867 859 +f 472 491 313 +f 272 519 2488 +f 1471 1472 1296 +f 1025 934 247 +f 1634 1633 1611 +f 2176 1847 2177 +f 1310 1289 806 +f 924 933 918 +f 1969 1968 902 +f 2107 2128 2118 +f 1428 1436 1287 +f 1139 1564 1617 +f 2378 572 2384 +f 853 841 8 +f 2501 961 2465 +f 1221 1240 1408 +f 1069 1578 1627 +f 1006 1005 1001 +f 1617 1564 1578 +f 828 539 550 +f 1791 2168 2160 +f 1829 1718 1739 +f 1968 1939 902 +f 756 1718 665 +f 1998 2000 1388 +f 2451 545 2356 +f 178 997 1011 +f 1275 325 1270 +f 1709 872 1666 +f 2176 1959 1847 +f 944 943 936 +f 2424 518 511 +f 1445 1067 962 +f 2007 952 1828 +f 2052 2061 2081 +f 828 2303 539 +f 835 1699 1048 +f 1709 1706 872 +f 885 574 963 +f 1318 1296 1320 +f 859 867 1902 +f 1452 1448 1421 +f 943 993 976 +f 993 1000 983 +f 854 1010 876 +f 988 986 962 +f 2031 2052 2081 +f 924 1732 1828 +f 965 949 1060 +f 781 228 734 +f 1718 1765 665 +f 943 976 932 +f 1680 1794 1783 +f 1448 1471 1276 +f 1276 1267 1421 +f 1931 914 907 +f 991 781 996 +f 1276 1421 1448 +f 10 909 1396 +f 831 860 849 +f 1523 1762 1774 +f 924 1828 937 +f 307 994 1014 +f 946 963 901 +f 978 2103 977 +f 977 1006 1001 +f 1007 1161 1639 +f 1639 1294 1437 +f 885 1032 574 +f 1294 1381 1437 +f 733 568 797 +f 792 229 1112 +f 119 581 108 +f 843 835 927 +f 1889 860 831 +f 2211 2216 2204 +f 2400 2431 2422 +f 2103 1006 977 +f 840 1902 830 +f 827 840 830 +f 827 830 822 +f 1003 874 2492 +f 1432 1439 1431 +f 781 734 964 +f 1937 1936 1723 +f 918 913 902 +f 958 977 944 +f 1850 2178 2177 +f 1005 1020 1000 +f 991 996 307 +f 1396 1445 340 +f 2179 1763 889 +f 939 909 980 +f 1828 958 937 +f 978 977 958 +f 1590 1571 1563 +f 779 1949 920 +f 1551 1362 1573 +f 2103 2142 1006 +f 920 885 963 +f 946 920 963 +f 1584 1616 1583 +f 1453 1472 1452 +f 1647 1617 1578 +f 1578 1564 1627 +f 1628 938 1069 +f 869 868 859 +f 993 983 976 +f 912 1762 1775 +f 752 751 706 +f 1628 1546 938 +f 844 228 781 +f 840 859 1902 +f 898 907 904 +f 1025 973 1009 +f 663 664 573 +f 763 946 901 +f 898 904 869 +f 2172 889 1763 +f 1128 926 971 +f 860 848 849 +f 904 903 890 +f 2486 2459 2479 +f 577 782 608 +f 933 936 918 +f 2177 1847 1851 +f 665 1765 339 +f 937 958 944 +f 894 981 724 +f 968 1000 993 +f 2192 2195 2205 +f 1652 1099 817 +f 997 608 1011 +f 997 577 608 +f 577 163 782 +f 1112 998 792 +f 2177 1851 1850 +f 1257 1421 1258 +f 951 873 920 +f 822 830 2215 +f 1899 2496 2471 +f 1773 1668 1558 +f 904 914 903 +f 932 1671 913 +f 873 885 920 +f 1013 1617 1647 +f 873 1032 885 +f 894 862 981 +f 2469 855 961 +f 913 1671 1969 +f 2477 2064 855 +f 918 936 913 +f 860 870 848 +f 937 944 933 +f 1501 1013 1647 +f 824 178 751 +f 824 997 178 +f 824 577 997 +f 643 163 577 +f 863 856 882 +f 2128 2153 2134 +f 722 774 880 +f 722 894 774 +f 864 905 895 +f 850 575 583 +f 914 918 903 +f 924 937 933 +f 1501 717 1013 +f 1587 1324 928 +f 717 1512 1013 +f 602 577 824 +f 766 643 577 +f 894 709 862 +f 709 878 862 +f 976 975 932 +f 1324 1596 928 +f 880 524 1060 +f 2434 2459 2499 +f 1324 1613 1596 +f 752 824 751 +f 602 766 577 +f 1014 602 594 +f 1387 1226 2152 +f 2153 1387 2152 +f 669 930 950 +f 1710 1694 1699 +f 768 326 762 +f 582 892 601 +f 974 990 2465 +f 624 116 625 +f 835 795 730 +f 2458 2484 763 +f 989 602 824 +f 2064 2477 1710 +f 976 983 975 +f 949 722 880 +f 996 160 994 +f 2305 863 556 +f 556 863 886 +f 601 910 640 +f 2264 825 829 +f 989 824 752 +f 856 864 882 +f 1595 1586 2381 +f 1627 1629 1628 +f 2174 2180 2173 +f 2128 2134 2118 +f 137 272 22 +f 949 880 1060 +f 995 894 722 +f 894 995 709 +f 894 724 774 +f 886 895 892 +f 640 910 930 +f 871 870 860 +f 846 856 863 +f 1026 875 1019 +f 838 851 829 +f 1024 1171 934 +f 36 189 205 +f 863 882 886 +f 886 882 895 +f 875 1026 594 +f 52 1459 1269 +f 896 917 910 +f 1025 1009 934 +f 949 995 722 +f 2152 1226 1636 +f 895 896 892 +f 892 910 601 +f 942 950 930 +f 875 989 752 +f 594 602 989 +f 766 355 643 +f 355 260 643 +f 905 917 896 +f 965 1060 1162 +f 892 896 910 +f 1101 1052 1042 +f 1029 1031 834 +f 1101 1133 1118 +f 342 357 376 +f 516 515 2454 +f 1656 2494 2467 +f 1056 1303 1133 +f 1120 1130 862 +f 69 342 376 +f 1055 1056 1133 +f 499 69 165 +f 85 101 111 +f 1031 1032 834 +f 200 679 1166 +f 1031 1042 1032 +f 1171 65 934 +f 1822 1204 1177 +f 1096 956 1103 +f 514 96 97 +f 956 1145 1144 +f 1185 1166 1144 +f 1145 1185 1144 +f 1185 200 1166 +f 375 132 1041 +f 1153 1202 305 +f 32 1244 1249 +f 1096 1087 956 +f 554 78 2355 +f 1191 138 110 +f 65 35 432 +f 1087 1110 956 +f 1110 1146 956 +f 956 1146 1145 +f 1146 1156 1145 +f 1145 1156 1185 +f 950 956 1144 +f 2481 2495 948 +f 1156 1193 1185 +f 1050 1047 1051 +f 239 151 107 +f 1185 1193 36 +f 1747 1110 1087 +f 1134 1146 1110 +f 1146 1157 1156 +f 1156 1157 1193 +f 1041 1045 1034 +f 1397 1134 1110 +f 1157 1146 1134 +f 1157 1175 1193 +f 1193 199 36 +f 1090 1035 1196 +f 1456 1150 1051 +f 1175 199 1193 +f 1186 695 199 +f 1186 199 1175 +f 1175 1157 1134 +f 728 1186 1175 +f 197 760 6 +f 1130 593 862 +f 1167 1109 182 +f 1194 1115 1161 +f 2140 1928 1504 +f 921 922 2138 +f 1147 1134 1397 +f 1719 1147 1397 +f 1147 1175 1134 +f 1175 1147 728 +f 341 1654 1208 +f 754 151 9 +f 284 2138 1058 +f 1188 1557 1660 +f 1191 110 1053 +f 916 284 1189 +f 284 1058 1189 +f 2094 1465 2127 +f 1726 1019 1147 +f 1147 1019 728 +f 593 1130 96 +f 239 305 1038 +f 1036 1131 315 +f 397 1131 1120 +f 1053 96 1130 +f 2467 2485 1869 +f 517 1089 421 +f 834 1827 1029 +f 419 1047 1117 +f 1034 433 1306 +f 2239 1862 1730 +f 1453 1462 1472 +f 1408 1422 1399 +f 471 23 1111 +f 1205 1150 1456 +f 1205 1040 1150 +f 1131 1036 293 +f 293 1068 1044 +f 375 1041 138 +f 1205 1140 1046 +f 1040 1205 1046 +f 1140 1167 1046 +f 1104 1049 83 +f 1052 1085 1032 +f 1044 1068 1191 +f 1167 1483 1109 +f 208 1084 1035 +f 1040 132 375 +f 1834 20 3 +f 1050 1051 1070 +f 1133 1125 1174 +f 11 1440 1401 +f 420 208 1071 +f 1135 1079 1094 +f 1086 1101 1118 +f 1029 1030 1031 +f 1200 1061 294 +f 1191 1068 138 +f 1171 1141 65 +f 1141 1172 65 +f 1172 35 65 +f 1172 404 35 +f 404 99 35 +f 221 1104 1063 +f 802 398 1083 +f 20 1089 3 +f 2064 1699 835 +f 1042 1052 1032 +f 1433 1261 1432 +f 1323 2338 155 +f 1076 1205 1456 +f 1088 1402 1056 +f 1150 348 1070 +f 1200 1089 20 +f 1097 1162 100 +f 1032 873 834 +f 21 471 1111 +f 294 1097 1104 +f 1072 100 584 +f 1151 760 622 +f 132 1045 1041 +f 1050 1070 1135 +f 1088 1039 940 +f 650 159 635 +f 100 1170 729 +f 729 584 100 +f 1103 931 1096 +f 925 1443 1513 +f 138 1102 110 +f 1034 1306 1152 +f 1071 1035 1090 +f 100 1072 1097 +f 23 1158 315 +f 1068 375 138 +f 1586 1612 1585 +f 1819 1030 1029 +f 1041 1034 1102 +f 232 375 1068 +f 348 1079 1070 +f 1061 1097 294 +f 1513 1443 1442 +f 1200 294 1119 +f 376 1050 1062 +f 1094 1036 315 +f 1200 1119 1089 +f 1111 1183 21 +f 1044 1191 1053 +f 698 295 689 +f 1079 232 1036 +f 404 1117 99 +f 1495 1496 717 +f 1119 294 98 +f 3 1089 517 +f 1132 1063 83 +f 1132 83 175 +f 132 1046 182 +f 1111 1195 1183 +f 1131 1044 1037 +f 127 402 1804 +f 219 1272 1047 +f 1697 1135 1094 +f 2140 1854 2117 +f 1111 397 1195 +f 1177 1162 1097 +f 1061 1177 1097 +f 717 1509 714 +f 2 1300 433 +f 462 290 461 +f 98 294 221 +f 294 1104 221 +f 714 1161 1007 +f 1073 1152 1143 +f 1697 1094 1360 +f 1223 1423 1218 +f 836 2479 842 +f 1097 1072 1049 +f 348 1040 375 +f 3 517 316 +f 180 1061 1201 +f 348 375 232 +f 1432 1431 1415 +f 220 1513 1495 +f 1104 1097 1049 +f 306 674 596 +f 777 455 723 +f 2170 2151 1641 +f 1047 419 219 +f 1102 1034 1073 +f 1073 1034 1152 +f 1035 1054 1196 +f 1177 1204 1162 +f 746 65 12 +f 751 178 721 +f 1054 517 421 +f 1051 1150 1070 +f 1102 1073 110 +f 998 1136 355 +f 567 566 1163 +f 1111 315 397 +f 1048 1074 835 +f 1158 1094 315 +f 1374 1107 1252 +f 1112 1136 998 +f 472 629 500 +f 355 1136 260 +f 260 118 43 +f 1104 83 1063 +f 376 357 1050 +f 1463 1142 1545 +f 1036 232 293 +f 1030 1042 1031 +f 1079 348 232 +f 221 1063 1132 +f 1094 1079 1036 +f 1076 1629 1205 +f 1136 1197 260 +f 260 1197 118 +f 1204 965 1162 +f 293 232 1068 +f 1590 1205 1629 +f 1205 1590 1140 +f 250 382 392 +f 1296 1318 1311 +f 347 1201 20 +f 1201 1200 20 +f 132 182 1045 +f 1101 1086 1052 +f 1033 1039 1055 +f 138 1041 1102 +f 970 1010 2495 +f 455 777 43 +f 1992 1948 2023 +f 20 1834 347 +f 1072 584 1049 +f 584 1192 1049 +f 182 2 1045 +f 1163 324 44 +f 1360 1094 1158 +f 1450 1360 1158 +f 1091 1112 229 +f 509 723 455 +f 207 509 455 +f 1251 1257 1266 +f 1488 1489 1547 +f 2157 1541 1875 +f 305 107 324 +f 1045 2 433 +f 1070 1079 1135 +f 1136 1168 1197 +f 1197 359 118 +f 118 359 43 +f 359 356 43 +f 356 455 43 +f 356 207 455 +f 1240 1422 1408 +f 1163 1153 324 +f 1201 1061 1200 +f 1052 1086 1085 +f 1024 1141 1171 +f 1112 1105 1136 +f 1050 1135 1062 +f 1105 1168 1136 +f 1168 1178 1197 +f 1197 1178 359 +f 1173 404 1172 +f 465 356 359 +f 1174 1125 240 +f 1240 1431 1422 +f 1098 1113 1105 +f 1112 1098 1105 +f 1105 1178 1168 +f 1178 465 359 +f 1091 1098 1112 +f 1133 1174 1118 +f 98 221 1059 +f 487 1132 175 +f 980 1017 285 +f 465 207 356 +f 180 1201 347 +f 1060 524 1170 +f 445 127 316 +f 1431 1438 1422 +f 498 469 681 +f 940 1807 1759 +f 381 250 1290 +f 1113 1122 1105 +f 1105 1122 1178 +f 1151 509 207 +f 1236 2035 525 +f 1131 293 1044 +f 346 207 465 +f 346 1151 207 +f 1822 1796 1204 +f 1143 204 97 +f 123 1128 971 +f 2153 2152 2134 +f 126 1151 346 +f 517 445 316 +f 1450 1158 23 +f 1458 1462 1430 +f 1129 152 1182 +f 1122 1159 1178 +f 1178 1198 465 +f 79 346 465 +f 126 1155 1151 +f 1151 1155 6 +f 295 1129 689 +f 1073 1143 97 +f 1098 1123 1113 +f 1113 1123 1122 +f 1123 1169 1122 +f 1178 1159 1198 +f 1198 79 465 +f 392 383 152 +f 1822 1061 180 +f 116 92 625 +f 421 1089 1119 +f 1129 295 152 +f 110 1073 97 +f 1173 1172 1141 +f 1122 1169 1159 +f 79 126 346 +f 1155 181 6 +f 971 926 1002 +f 295 1043 152 +f 1039 1088 1056 +f 1428 1266 1436 +f 404 419 1117 +f 836 879 2479 +f 2464 2476 2458 +f 1198 317 79 +f 1124 939 301 +f 44 754 567 +f 1039 1056 1055 +f 1439 1459 1458 +f 1660 1412 986 +f 1169 1160 1159 +f 179 1155 126 +f 1155 131 181 +f 1061 1822 1177 +f 1153 305 324 +f 175 314 327 +f 1160 1187 1159 +f 1159 1187 1198 +f 1198 1187 317 +f 79 179 126 +f 1043 250 392 +f 152 1043 392 +f 96 819 593 +f 1123 1127 1169 +f 317 179 79 +f 1057 1155 179 +f 1155 391 131 +f 131 391 668 +f 2381 1586 1585 +f 12 69 499 +f 262 398 1640 +f 2107 2118 2060 +f 2130 2094 2002 +f 1187 249 317 +f 1155 1057 391 +f 1290 439 1265 +f 305 239 107 +f 1127 1160 1169 +f 317 473 179 +f 473 1057 179 +f 83 1192 314 +f 1043 1290 250 +f 1807 940 1030 +f 517 1084 445 +f 1057 1164 391 +f 2492 2480 2493 +f 163 643 43 +f 1056 1545 1303 +f 1069 1655 1023 +f 249 473 317 +f 1162 1060 1170 +f 1086 1118 1154 +f 82 68 16 +f 1989 1990 1536 +f 1633 1632 1611 +f 1487 2372 1305 +f 1494 1069 1023 +f 1137 1160 1127 +f 669 1166 679 +f 390 1285 426 +f 1955 1972 1971 +f 1219 1223 2437 +f 1254 1261 1223 +f 1319 1545 1056 +f 1320 1328 2443 +f 1261 1433 1223 +f 1219 1254 1223 +f 254 222 2428 +f 1237 1290 1265 +f 1284 1273 1263 +f 1277 1291 1301 +f 1314 102 1301 +f 1280 363 377 +f 1313 1353 1514 +f 468 451 439 +f 1918 1964 1956 +f 2026 29 2140 +f 1354 381 1279 +f 1224 30 1254 +f 147 158 173 +f 1247 1253 274 +f 1271 380 334 +f 2043 2072 2042 +f 274 300 267 +f 1356 1392 211 +f 13 240 1142 +f 1382 1330 1392 +f 1312 1323 155 +f 240 1125 1142 +f 2358 1573 1362 +f 1236 1249 1244 +f 1272 219 1348 +f 1271 1274 380 +f 191 2034 1982 +f 1992 2052 1990 +f 462 452 689 +f 2262 2286 2261 +f 183 489 1642 +f 2485 2480 1869 +f 84 111 1323 +f 1190 353 1354 +f 446 434 435 +f 1336 171 1341 +f 2021 430 2059 +f 862 878 1120 +f 1263 1273 1248 +f 1966 1921 2144 +f 1312 84 1323 +f 240 13 1348 +f 1359 1274 1271 +f 1392 1330 1247 +f 1520 1333 11 +f 1368 1253 1247 +f 1279 1285 1190 +f 2465 990 2489 +f 1272 1519 805 +f 1369 1272 805 +f 1317 95 1344 +f 1242 1248 1234 +f 1368 242 1363 +f 274 1262 1386 +f 532 597 1886 +f 2117 2026 2140 +f 1392 1247 274 +f 2162 508 985 +f 1964 1469 1965 +f 1315 104 1331 +f 1392 1356 1382 +f 128 1342 1336 +f 1285 427 426 +f 1219 1224 1254 +f 1320 1322 1321 +f 1320 1321 1328 +f 153 2443 1328 +f 1321 153 1328 +f 1235 1244 1243 +f 1225 1224 1219 +f 1359 353 1190 +f 1312 1473 1458 +f 1336 1342 147 +f 305 1333 1038 +f 1336 147 171 +f 516 31 19 +f 2479 2461 842 +f 1237 1265 427 +f 1263 1278 1284 +f 881 1827 834 +f 1237 427 1285 +f 1299 1312 1458 +f 1190 1285 1274 +f 1363 286 1253 +f 2330 2303 828 +f 427 442 426 +f 2493 2463 2492 +f 1285 380 1274 +f 522 18 1225 +f 2471 2472 2488 +f 2338 154 1321 +f 1423 1415 1218 +f 1225 18 1224 +f 1253 286 1262 +f 286 353 1359 +f 171 1368 1383 +f 1273 54 1234 +f 1973 2447 527 +f 1322 155 1321 +f 1203 1369 1413 +f 1307 363 1298 +f 1364 1375 1329 +f 1329 227 1306 +f 296 1298 1343 +f 947 2499 1447 +f 1203 1047 1272 +f 1098 1748 1123 +f 1519 1272 1348 +f 1277 70 1273 +f 1282 1337 1361 +f 286 302 353 +f 103 104 1315 +f 1377 435 434 +f 1449 1261 1345 +f 926 1310 806 +f 1263 1248 1242 +f 985 508 597 +f 1415 1222 1218 +f 88 1325 104 +f 170 111 156 +f 1384 1282 1361 +f 274 1253 1262 +f 1371 1317 1344 +f 1371 1366 1337 +f 1345 1459 1449 +f 171 1383 1341 +f 2438 1235 1227 +f 2134 1582 2118 +f 428 1260 1379 +f 1336 1341 1325 +f 1235 1242 1227 +f 1228 1687 2284 +f 1854 2140 2016 +f 1866 1887 1873 +f 1343 1298 1370 +f 1384 1361 2440 +f 171 242 1368 +f 1344 1309 1366 +f 1371 1344 1366 +f 1280 1377 1293 +f 200 1185 205 +f 1330 1383 1368 +f 1255 1264 1263 +f 543 1367 1876 +f 1343 1370 1260 +f 1293 1326 1370 +f 2440 1361 1302 +f 1282 1384 2406 +f 271 1337 1282 +f 170 2338 1323 +f 1528 1503 2470 +f 515 1347 2453 +f 1997 1705 1998 +f 2285 1228 2284 +f 1229 1250 1228 +f 1330 1368 1247 +f 1919 1619 2045 +f 1344 1364 1335 +f 1222 1240 1221 +f 1212 858 1741 +f 2388 1222 1221 +f 1528 2470 2068 +f 501 1308 2171 +f 1295 1311 1487 +f 2116 1619 1655 +f 1220 1229 1228 +f 8 663 573 +f 1343 1260 428 +f 1337 1366 1361 +f 1298 1280 1293 +f 1269 1345 1261 +f 1279 381 1290 +f 1230 1229 1220 +f 1230 1245 1229 +f 1245 1250 1229 +f 1227 1234 31 +f 1302 1361 1350 +f 1245 1266 1428 +f 1992 2023 2052 +f 2482 2471 2475 +f 452 462 461 +f 271 1282 1275 +f 1991 1989 1934 +f 1366 1309 1350 +f 1344 1335 1309 +f 730 699 974 +f 1374 1252 1208 +f 597 508 1912 +f 1363 1253 1368 +f 1386 1271 300 +f 1211 1218 1222 +f 1376 1377 434 +f 2399 2437 1211 +f 1284 1291 1277 +f 1230 1251 1245 +f 1251 1266 1245 +f 1317 1371 1337 +f 1288 1286 1095 +f 1095 1286 1352 +f 1241 1208 1352 +f 1241 1374 1208 +f 1284 1278 1291 +f 211 1392 267 +f 1344 1375 1364 +f 929 583 1028 +f 1361 1366 1350 +f 1115 1294 1639 +f 1291 103 1301 +f 1220 1231 1230 +f 1231 1251 1230 +f 1234 1248 1273 +f 1255 55 1264 +f 1360 1450 1702 +f 363 1280 1298 +f 1369 1203 1272 +f 1415 1240 1222 +f 1216 1231 1220 +f 1243 1263 1235 +f 1375 227 1329 +f 1264 1278 1263 +f 855 899 961 +f 1286 1241 1352 +f 2081 2128 2107 +f 1223 1433 1423 +f 1473 1312 155 +f 154 153 1321 +f 1377 1376 1293 +f 1392 274 267 +f 334 300 1271 +f 1955 1991 1934 +f 1613 1327 1288 +f 1327 1286 1288 +f 1349 1374 1241 +f 2370 2025 2367 +f 1315 1331 133 +f 434 446 1256 +f 1232 1251 1231 +f 1243 1244 1255 +f 1286 1304 1241 +f 1349 1107 1374 +f 1359 1271 1386 +f 1227 516 2431 +f 219 240 1348 +f 1270 271 1275 +f 1255 1263 1243 +f 2026 1926 29 +f 1683 2157 1212 +f 1326 1293 1376 +f 1255 32 55 +f 104 1325 1341 +f 519 2462 2475 +f 2154 2161 2137 +f 1376 434 1246 +f 1246 434 1256 +f 1257 1251 1232 +f 1262 1359 1386 +f 2195 2192 2186 +f 1308 534 1226 +f 2026 2117 544 +f 1327 1613 1324 +f 1327 1326 1286 +f 1286 1326 1304 +f 104 1341 1331 +f 774 524 880 +f 837 1517 534 +f 1127 1123 1567 +f 1279 1237 1285 +f 1297 1381 1294 +f 1217 1232 1216 +f 1142 1519 13 +f 1436 1267 1287 +f 1324 1372 1327 +f 1304 1246 1241 +f 1246 1349 1241 +f 1246 1373 1349 +f 286 1359 1262 +f 1382 1383 1330 +f 1284 1277 1273 +f 489 1998 1799 +f 1675 1116 1075 +f 106 1317 1337 +f 1311 1295 1281 +f 1292 1364 1329 +f 1335 1364 1292 +f 1334 1294 1115 +f 1334 1297 1294 +f 1300 1381 1297 +f 973 842 2461 +f 1217 1239 1232 +f 1232 1239 1257 +f 1258 1267 1436 +f 1359 1190 1274 +f 1862 1405 1877 +f 1372 1339 1327 +f 1339 1326 1327 +f 1373 1351 1349 +f 1276 1311 1281 +f 1256 2386 1351 +f 2 1109 1300 +f 482 1731 520 +f 803 1604 2022 +f 1223 1218 1211 +f 1341 1383 1382 +f 1298 1293 1370 +f 1190 1354 1279 +f 1324 2398 1372 +f 1714 1700 2173 +f 183 2000 489 +f 1701 1666 192 +f 1227 1242 1234 +f 1332 1289 1310 +f 1517 2005 2130 +f 1331 1341 1382 +f 525 1249 1236 +f 23 1268 1450 +f 1264 1291 1278 +f 1281 1287 1267 +f 1295 1305 1287 +f 1281 1295 1287 +f 1487 1305 1295 +f 1605 2097 2058 +f 1326 1376 1304 +f 1304 1376 1246 +f 1316 1919 1984 +f 2500 1949 2460 +f 1332 1313 1289 +f 2189 2181 2177 +f 1335 1334 1353 +f 1292 1297 1334 +f 1428 1250 1245 +f 969 958 952 +f 1217 1233 1239 +f 1233 1257 1239 +f 1876 1367 1338 +f 1379 1260 1372 +f 1372 1260 1339 +f 1128 1302 1310 +f 1310 1302 1332 +f 1335 1353 1313 +f 1292 1334 1335 +f 1297 1329 1300 +f 1279 1290 1237 +f 1301 103 1314 +f 70 1301 102 +f 23 1333 1268 +f 380 1285 390 +f 772 325 1275 +f 1314 103 1315 +f 2473 2458 2487 +f 1276 1281 1267 +f 1344 95 1375 +f 2053 1771 1572 +f 1246 1256 1373 +f 1373 1256 1351 +f 1340 1302 1128 +f 1350 1313 1332 +f 1329 1297 1292 +f 2434 2473 2487 +f 106 1337 271 +f 23 471 1333 +f 622 723 509 +f 1388 1517 2127 +f 1991 1990 1989 +f 183 1636 1226 +f 2133 1605 2151 +f 1260 1370 1339 +f 1339 1370 1326 +f 867 1894 1902 +f 390 426 412 +f 1235 1263 1242 +f 1399 1422 1233 +f 305 11 1333 +f 1300 1329 1306 +f 1302 1350 1332 +f 1350 1309 1313 +f 1309 1335 1313 +f 2470 2102 1502 +f 1787 1531 1599 +f 1724 1725 1691 +f 1827 1601 1927 +f 1678 1358 1476 +f 1823 1812 1846 +f 1805 1824 1708 +f 1746 1676 1797 +f 325 2395 429 +f 1835 1677 1826 +f 1507 1790 1722 +f 1526 1672 858 +f 158 147 1342 +f 1462 1473 1322 +f 1474 1414 1565 +f 1761 1900 1877 +f 940 1759 1008 +f 1565 1015 1008 +f 1924 1533 1933 +f 1878 826 830 +f 1565 1414 1015 +f 1402 1088 1008 +f 1538 1532 1651 +f 1015 1552 1008 +f 1538 1591 1474 +f 1532 1538 1474 +f 1474 1591 1414 +f 1484 1402 1008 +f 1552 1484 1008 +f 1414 1460 1015 +f 1015 1460 1552 +f 806 1289 945 +f 1597 1538 1659 +f 1484 1319 1402 +f 1056 1402 1319 +f 1538 1597 1591 +f 1591 960 1414 +f 1414 960 1460 +f 1925 1466 1455 +f 1552 1400 1484 +f 1484 1400 1319 +f 1400 113 1319 +f 1597 1580 1591 +f 1460 1400 1552 +f 1514 1441 966 +f 1597 1659 1409 +f 1657 113 1400 +f 1460 1657 1400 +f 1288 1095 1634 +f 1551 1597 1409 +f 1580 1598 1591 +f 1591 1598 960 +f 1536 1990 2031 +f 960 1657 1460 +f 1809 1746 1797 +f 1423 1433 1432 +f 2478 1362 1409 +f 1463 1545 113 +f 1657 1463 113 +f 1457 1287 1305 +f 1682 1716 1746 +f 1434 1761 1885 +f 1013 1139 1617 +f 2379 1362 2478 +f 1420 1597 1551 +f 1420 1580 1597 +f 1664 1808 1712 +f 2256 2250 2231 +f 1362 1551 1409 +f 2196 2214 2213 +f 1691 1725 1777 +f 1626 192 1666 +f 1534 1574 2058 +f 1574 1600 1605 +f 1600 1606 1605 +f 1606 1641 1605 +f 1573 1420 1551 +f 1657 1485 1463 +f 678 1806 1742 +f 1534 1553 1574 +f 1574 1575 1600 +f 1810 2170 585 +f 1623 1641 1606 +f 1407 1657 960 +f 1598 1407 960 +f 1485 1142 1463 +f 1716 1581 1676 +f 1738 1743 1733 +f 843 2064 835 +f 1539 1575 1574 +f 1553 1539 1574 +f 1575 1592 1600 +f 1592 1624 1606 +f 1600 1592 1606 +f 1642 585 1641 +f 1623 1642 1641 +f 1485 164 1142 +f 1738 1516 1743 +f 1809 1720 1798 +f 1533 1535 1534 +f 1592 1607 1624 +f 1624 1623 1606 +f 1163 566 1116 +f 1407 1485 1657 +f 1432 1449 1439 +f 1100 802 2382 +f 1743 1516 1722 +f 1746 1716 1676 +f 1535 1539 1534 +f 1534 1539 1553 +f 1642 1623 1624 +f 1095 1208 1654 +f 967 1407 1598 +f 1580 967 1598 +f 1809 1797 1720 +f 1924 1524 1535 +f 1533 1924 1535 +f 1539 1576 1575 +f 1642 216 585 +f 1407 1529 1485 +f 1485 1529 164 +f 1472 1462 1482 +f 1415 1431 1240 +f 966 1194 714 +f 383 1182 152 +f 474 2337 446 +f 1743 1841 1757 +f 1486 1524 1924 +f 1535 1525 1539 +f 1575 1576 1592 +f 1420 967 1580 +f 1288 1634 1613 +f 459 427 1265 +f 1404 2179 1393 +f 1404 1403 1800 +f 1404 1410 1403 +f 1410 1749 1403 +f 1349 1351 218 +f 1486 1498 1524 +f 1535 1524 1525 +f 1607 1636 1624 +f 183 1642 1624 +f 1636 183 1624 +f 1107 1349 218 +f 1351 845 218 +f 164 1519 1142 +f 845 413 218 +f 1525 1576 1539 +f 1576 1582 1592 +f 1592 2134 1607 +f 2134 1636 1607 +f 2147 1491 1401 +f 1407 1589 1529 +f 1529 1519 164 +f 1693 1763 1444 +f 1924 1479 1486 +f 1592 1582 2134 +f 499 165 874 +f 2176 1857 1959 +f 2327 2368 2326 +f 2358 821 953 +f 953 821 1573 +f 1824 1704 1464 +f 1731 1358 1678 +f 1394 1410 1404 +f 1394 1418 1410 +f 1466 1479 1839 +f 1486 1479 1498 +f 1498 1525 1524 +f 1576 2080 1582 +f 1785 1684 1898 +f 804 398 802 +f 804 925 398 +f 1447 1562 2358 +f 2358 1562 821 +f 821 1620 1573 +f 1620 1420 1573 +f 1420 1556 967 +f 1393 1394 1404 +f 1525 2080 1576 +f 1621 1420 1620 +f 1621 1556 1420 +f 967 1589 1407 +f 1505 5 1357 +f 1266 1258 1436 +f 1393 1395 1394 +f 2176 2175 1848 +f 1455 1466 1839 +f 1525 1540 2080 +f 1582 2080 2118 +f 1100 804 802 +f 1556 1589 967 +f 1589 1082 1529 +f 1093 1685 1357 +f 1504 1093 1357 +f 1425 1418 1394 +f 1475 1479 1466 +f 1479 1506 1498 +f 1789 1784 1730 +f 2501 2465 2489 +f 1438 1458 1430 +f 1462 1458 1473 +f 1454 805 1529 +f 1082 1454 1529 +f 1529 805 1519 +f 1425 1394 1395 +f 1425 1744 1418 +f 1479 1475 1506 +f 1540 2060 2080 +f 1556 1082 1589 +f 1443 945 1511 +f 1506 1536 1498 +f 1498 1536 1525 +f 1525 1536 1540 +f 1670 852 1672 +f 1998 1388 1389 +f 1511 966 1509 +f 1509 966 714 +f 1442 1443 1496 +f 1562 1635 821 +f 155 1322 1473 +f 1439 1458 1438 +f 1426 1425 1395 +f 1475 1499 1506 +f 1735 1588 1776 +f 2422 2454 2421 +f 1423 1432 1415 +f 1559 2101 2073 +f 845 866 413 +f 1429 1620 821 +f 1620 1429 1621 +f 1228 1250 1687 +f 1002 945 1443 +f 2382 802 1083 +f 1859 1411 1395 +f 1411 1426 1395 +f 1426 1744 1425 +f 1590 1437 1483 +f 1480 1475 1466 +f 1480 1499 1475 +f 1510 1733 1743 +f 1663 1696 1658 +f 1430 1453 1452 +f 1452 1472 1471 +f 1452 1471 1448 +f 1430 1452 1421 +f 1430 1421 1422 +f 1429 1082 1556 +f 1621 1429 1556 +f 1351 2386 845 +f 1126 1059 487 +f 1639 1437 1563 +f 1504 1928 1093 +f 1499 1536 1506 +f 1588 1770 1727 +f 1110 1747 1397 +f 1776 1588 1531 +f 1322 1320 1482 +f 1590 1629 1571 +f 1730 1877 1838 +f 1429 935 1082 +f 1082 935 1454 +f 804 1443 925 +f 1139 1007 1639 +f 1925 1480 1466 +f 1934 1989 1480 +f 1499 1989 1536 +f 1727 1526 1531 +f 1593 1614 502 +f 2455 2431 2400 +f 1755 1680 908 +f 1563 1571 1564 +f 1647 1078 1501 +f 2490 1635 1106 +f 1496 1511 717 +f 2454 2431 516 +f 1478 1153 1093 +f 1870 1426 1411 +f 1426 1723 1744 +f 962 986 1412 +f 717 1511 1509 +f 1825 1704 1824 +f 2225 2234 2253 +f 1490 1557 1188 +f 1635 80 821 +f 805 1454 935 +f 1186 706 695 +f 1194 1161 714 +f 1512 1007 1013 +f 592 97 204 +f 1258 1266 1257 +f 82 1333 471 +f 1694 1710 1505 +f 1643 490 1661 +f 1661 490 1114 +f 1518 2068 2484 +f 1750 1808 1664 +f 1656 1635 2490 +f 935 1521 805 +f 1546 1629 1076 +f 1301 70 1277 +f 966 1441 1194 +f 1148 1825 1824 +f 1614 1609 1643 +f 1114 1092 1921 +f 1770 1739 1670 +f 1631 1632 1646 +f 821 1016 1429 +f 1429 1016 935 +f 1632 1095 1654 +f 1083 262 688 +f 1724 1686 1725 +f 1644 490 1643 +f 1092 1149 1921 +f 3 893 1832 +f 988 1640 1188 +f 916 1107 284 +f 1656 80 1635 +f 1016 821 80 +f 1016 1521 935 +f 1478 1202 1153 +f 1401 1928 29 +f 1440 1478 1928 +f 1849 1700 1865 +f 1595 1611 1612 +f 1208 198 341 +f 1464 1704 1746 +f 2143 984 1721 +f 1848 1849 1868 +f 1662 1114 490 +f 1669 1787 1682 +f 1656 1618 80 +f 198 1208 916 +f 1440 1928 1401 +f 1521 1369 805 +f 1252 1107 916 +f 1745 678 1672 +f 1703 1779 1721 +f 1750 1465 1808 +f 1609 1644 1643 +f 1092 1114 1662 +f 1826 1523 1793 +f 2262 2261 2224 +f 1696 2166 1767 +f 1016 1648 1521 +f 1208 1252 916 +f 833 688 1067 +f 1794 1803 1558 +f 28 17 512 +f 1750 861 1566 +f 1594 1644 1609 +f 1644 1645 490 +f 490 1645 1662 +f 2229 2262 2224 +f 1602 861 1760 +f 1530 1777 1760 +f 872 1706 1673 +f 1696 1668 2166 +f 1708 1809 1798 +f 1581 1716 1814 +f 1709 1794 1680 +f 1233 1421 1257 +f 1724 1476 1686 +f 1469 1481 1965 +f 1965 1481 1492 +f 2073 1549 1559 +f 1594 1615 1644 +f 1799 1706 1755 +f 1725 1686 1837 +f 1720 1797 1572 +f 1618 2467 2022 +f 1618 1579 80 +f 1648 1016 80 +f 2134 2152 1636 +f 1611 1632 1631 +f 1761 1434 1470 +f 1559 1577 1594 +f 1603 1615 1594 +f 1615 1645 1644 +f 1637 1662 1645 +f 1662 1199 1092 +f 1199 1149 1092 +f 1451 1108 1149 +f 665 734 756 +f 1865 1700 1714 +f 1709 1841 1794 +f 1618 2022 1579 +f 1648 1413 1369 +f 1521 1648 1369 +f 1520 11 1401 +f 1446 1470 1434 +f 1798 1691 1754 +f 2063 1544 2073 +f 2073 1544 1549 +f 1594 1577 1603 +f 1615 1637 1645 +f 1637 1199 1662 +f 1427 1149 1199 +f 2167 1108 1451 +f 1997 1673 1705 +f 1706 1799 1705 +f 1841 1709 1757 +f 1604 1579 2022 +f 1579 707 80 +f 80 707 1648 +f 1520 1401 1491 +f 1649 1520 1491 +f 1435 1434 1885 +f 1470 1469 1461 +f 1481 1508 2024 +f 2370 1544 2063 +f 1549 1568 1559 +f 1559 1568 1577 +f 1603 1610 1615 +f 1615 1610 1637 +f 999 1199 1637 +f 1451 1149 1427 +f 1137 1825 1148 +f 1706 1705 1673 +f 1138 1604 2116 +f 1138 1579 1604 +f 1413 1648 707 +f 2360 2024 1508 +f 598 1075 1116 +f 229 93 1468 +f 1839 1479 1684 +f 2216 2229 2224 +f 1610 1625 1637 +f 329 999 1637 +f 1199 1017 1427 +f 1017 303 1427 +f 303 1451 1427 +f 1792 1754 1777 +f 2309 2391 2301 +f 1655 1138 2116 +f 1138 707 1579 +f 1649 1491 206 +f 1406 1885 1398 +f 1406 1419 1885 +f 1419 1435 1885 +f 1434 1435 1446 +f 1470 1481 1469 +f 1577 1583 1603 +f 999 1017 1199 +f 81 67 941 +f 67 1650 941 +f 1259 1815 2164 +f 1619 2116 2045 +f 1424 707 1138 +f 1702 1649 206 +f 1687 1406 1398 +f 1477 1481 1470 +f 1568 1569 1577 +f 1577 1569 1583 +f 1603 1583 1610 +f 1625 329 1637 +f 2167 340 273 +f 81 273 340 +f 81 962 67 +f 1547 1619 1488 +f 1830 1739 1770 +f 938 1424 1138 +f 1424 1413 707 +f 1527 1649 1702 +f 1527 1520 1649 +f 1527 1268 1520 +f 1250 1406 1687 +f 1441 1353 1115 +f 1203 1413 1051 +f 1250 1419 1406 +f 1477 2372 1481 +f 1481 2372 1508 +f 2449 1560 1568 +f 1549 2449 1568 +f 1568 1560 1569 +f 1569 1584 1583 +f 1652 329 1625 +f 329 817 999 +f 285 1017 999 +f 303 10 1451 +f 10 2167 1451 +f 1412 1650 67 +f 1412 1488 1650 +f 1547 1023 1619 +f 1023 1655 1619 +f 1655 938 1138 +f 1456 1413 1424 +f 1457 1470 1446 +f 1457 1477 1470 +f 329 1652 817 +f 10 340 2167 +f 938 1546 1424 +f 1546 1456 1424 +f 1259 1548 1779 +f 2052 2031 1990 +f 1440 1202 1478 +f 1428 1419 1250 +f 1428 1435 1419 +f 1428 1446 1435 +f 1934 1935 1955 +f 1560 1584 1569 +f 1610 1638 1625 +f 1638 1652 1625 +f 817 1077 999 +f 1077 285 999 +f 980 303 1017 +f 962 1412 67 +f 1494 1023 1547 +f 325 271 1270 +f 1443 1511 1496 +f 1450 1268 1527 +f 1514 1353 1441 +f 1287 1446 1428 +f 1446 1287 1457 +f 1305 2372 1477 +f 1992 1990 1991 +f 1992 1991 1971 +f 1971 1991 1955 +f 2449 1549 2418 +f 1583 1616 1610 +f 1610 1616 1638 +f 10 1396 340 +f 340 1445 81 +f 1445 962 81 +f 1790 984 1753 +f 984 2148 1753 +f 1588 1713 1770 +f 969 978 958 +f 1741 1779 1703 +f 1758 1846 1754 +f 1827 1819 1029 +f 1818 1530 1712 +f 1750 1566 2127 +f 2459 2434 2483 +f 1798 1720 1771 +f 1794 1841 1803 +f 216 1755 1810 +f 1098 1735 1748 +f 1735 1497 1748 +f 1502 2102 1601 +f 881 1502 1601 +f 1455 1839 1744 +f 1706 1709 1680 +f 1212 1741 1703 +f 1788 1969 1671 +f 1075 1074 1692 +f 951 2500 881 +f 2490 2486 2463 +f 1748 1497 1781 +f 1721 984 1840 +f 1815 1259 1741 +f 1626 1756 1837 +f 975 987 1542 +f 2230 2236 2235 +f 1772 678 734 +f 1542 1671 975 +f 1806 1772 1780 +f 678 1772 1806 +f 2218 2225 2268 +f 1828 1732 2007 +f 1526 1688 1531 +f 1752 1526 1554 +f 1844 1818 1712 +f 1823 1846 1804 +f 1781 1669 1704 +f 1721 1779 2143 +f 1770 1670 1526 +f 1497 1669 1781 +f 1098 1713 1735 +f 1742 1815 1741 +f 1526 858 1875 +f 1599 1531 1688 +f 1803 1790 1558 +f 1703 1721 1683 +f 1832 1766 957 +f 1542 1679 1671 +f 1679 1788 1671 +f 1927 1819 1827 +f 1718 1745 1739 +f 1684 1022 1839 +f 1459 1283 1299 +f 1022 1410 1418 +f 2368 2393 2326 +f 1669 1497 1776 +f 1875 858 1212 +f 1739 1745 852 +f 1964 1918 1461 +f 1356 133 1331 +f 1765 1829 1468 +f 858 1742 1741 +f 1006 1674 1021 +f 1723 1936 1935 +f 1468 1713 1098 +f 1724 1678 1476 +f 1680 1783 908 +f 1731 1543 520 +f 1683 1721 1840 +f 1467 1679 1542 +f 1812 1708 1846 +f 1679 1975 1788 +f 1713 1830 1770 +f 1803 1722 1790 +f 2301 2391 2349 +f 1713 1588 1735 +f 1836 1530 1818 +f 1837 1756 861 +f 886 571 556 +f 1181 1805 1812 +f 1706 1680 1755 +f 1677 1729 1775 +f 1776 1787 1669 +f 1526 1670 1672 +f 1727 1770 1526 +f 987 1467 1542 +f 1567 1704 1137 +f 1693 1865 1714 +f 897 1762 912 +f 1135 1697 1062 +f 1697 376 1062 +f 1543 1731 1678 +f 1793 1679 1467 +f 1777 1602 1760 +f 1846 1798 1754 +f 1835 1096 1677 +f 1033 1030 940 +f 1450 1527 1702 +f 1717 376 1697 +f 1711 1717 1697 +f 1717 165 376 +f 1840 984 1790 +f 1669 1746 1704 +f 1669 1682 1746 +f 2301 2349 2308 +f 1882 1444 1898 +f 1820 1789 1730 +f 861 1380 1566 +f 2301 2308 2266 +f 1771 1543 1691 +f 1958 1659 1651 +f 1697 1360 1711 +f 1711 1737 1717 +f 1717 1737 165 +f 1790 1753 1558 +f 1668 1696 1663 +f 1360 1702 1711 +f 1702 1707 1711 +f 1707 1737 1711 +f 1737 1751 165 +f 1444 1782 1693 +f 1716 1787 1599 +f 1744 1839 1022 +f 1898 1444 1785 +f 206 1707 1702 +f 1764 2468 1751 +f 316 1844 893 +f 893 1844 915 +f 1845 1804 1758 +f 1380 861 1756 +f 1780 670 1021 +f 1714 2172 1763 +f 1783 1558 1663 +f 1750 2127 1465 +f 1798 1771 1691 +f 1691 1543 1724 +f 1872 1910 839 +f 1737 2044 1751 +f 1751 2044 1764 +f 1757 1701 482 +f 1725 1602 1777 +f 1836 1845 1530 +f 2102 2470 1503 +f 2496 1899 544 +f 763 2484 946 +f 987 1719 1467 +f 1845 1758 1792 +f 1725 1837 1602 +f 1872 1866 1873 +f 1712 1530 1760 +f 489 1799 216 +f 1760 861 1750 +f 2068 2466 2460 +f 1696 2159 2168 +f 377 1377 1280 +f 1797 1676 1572 +f 1581 2053 1572 +f 1676 1581 1572 +f 1764 2498 2468 +f 2468 2498 1994 +f 1861 1695 1860 +f 2481 2004 2495 +f 1826 1677 1523 +f 1670 1739 852 +f 2234 2269 2253 +f 1724 1543 1678 +f 1658 2168 1791 +f 1397 1747 1719 +f 1696 2168 1658 +f 979 519 272 +f 1774 1975 1679 +f 975 1671 932 +f 1787 1716 1682 +f 1835 1826 1747 +f 2501 2469 961 +f 1810 908 1791 +f 1982 1768 191 +f 1137 1704 1825 +f 1804 1846 1758 +f 2004 2044 1737 +f 913 1969 902 +f 2498 1795 1801 +f 915 1844 1712 +f 1689 915 1712 +f 1740 1752 1541 +f 695 661 199 +f 1865 1693 1782 +f 1824 1464 1809 +f 1829 1765 1718 +f 1816 1768 1982 +f 1816 1622 1768 +f 1622 2165 1681 +f 1768 1622 1681 +f 670 1772 228 +f 1283 1459 52 +f 1785 1444 1749 +f 1675 1075 1685 +f 1567 1781 1704 +f 1858 1857 1848 +f 1526 1752 1688 +f 1791 2160 1810 +f 908 1658 1791 +f 1813 1773 1558 +f 1845 1792 1530 +f 69 376 165 +f 3 1832 1834 +f 1722 1516 1507 +f 1801 1821 1994 +f 1833 1982 2046 +f 1821 1833 2046 +f 1833 1816 1982 +f 1022 1785 1749 +f 2160 2170 1810 +f 1147 1719 1726 +f 1683 1840 1507 +f 1467 1719 1793 +f 1795 1802 1801 +f 1802 1811 1801 +f 1801 1811 1821 +f 1690 2165 1622 +f 1934 1480 1925 +f 229 1468 1091 +f 1780 2164 1742 +f 1672 1742 858 +f 1833 1417 1816 +f 1417 1622 1816 +f 1831 2165 1690 +f 1668 1663 1558 +f 1719 1747 1826 +f 1760 1750 1664 +f 1817 1690 1622 +f 1530 1792 1777 +f 948 1796 1802 +f 1796 1811 1802 +f 1515 1817 1622 +f 1695 1861 1831 +f 1783 1663 1658 +f 1749 1410 1022 +f 854 1796 948 +f 1811 1842 1833 +f 1821 1811 1833 +f 1833 1842 1417 +f 1622 1417 1515 +f 127 1804 1845 +f 1686 1626 1837 +f 1608 1690 1817 +f 1523 1775 1762 +f 127 1845 1836 +f 1812 1805 1708 +f 1523 1677 1775 +f 1780 1772 670 +f 1758 1754 1792 +f 1204 1796 854 +f 1822 1842 1811 +f 1608 1831 1690 +f 1822 1811 1796 +f 1842 1416 1417 +f 1417 1416 1515 +f 1515 1608 1817 +f 1728 1831 1608 +f 908 1783 1658 +f 127 1836 316 +f 1805 1148 1824 +f 852 1745 1672 +f 1478 1093 1928 +f 1822 1843 1842 +f 1843 959 1842 +f 1842 959 1416 +f 1728 1695 1831 +f 1728 1860 1695 +f 2346 446 2337 +f 1602 1837 861 +f 1087 1096 1835 +f 1708 1824 1809 +f 2004 1737 505 +f 1567 1748 1781 +f 520 1543 1883 +f 1760 1664 1712 +f 128 1336 72 +f 2053 1883 1543 +f 1822 180 1843 +f 1786 1608 1515 +f 929 2462 519 +f 512 2402 506 +f 1212 1703 1683 +f 1830 1829 1739 +f 2053 1543 1771 +f 1416 1769 1515 +f 1769 1786 1515 +f 1786 1728 1608 +f 1712 1808 1689 +f 1794 1558 1783 +f 1497 1735 1776 +f 1127 1567 1137 +f 1123 1748 1567 +f 36 205 1185 +f 959 1734 1416 +f 1738 1733 1541 +f 1774 1762 1974 +f 1752 1554 1541 +f 1752 1740 1688 +f 1526 1875 1554 +f 1468 1829 1830 +f 1755 908 1810 +f 1716 1599 1814 +f 1806 1780 1742 +f 2308 2349 2340 +f 1832 915 1689 +f 1713 1468 1830 +f 1814 1599 1346 +f 1832 1689 1766 +f 1022 1684 1785 +f 1093 1153 1116 +f 1672 678 1742 +f 1675 1685 1093 +f 1841 1743 1722 +f 1814 2053 1581 +f 1464 1746 1809 +f 2485 2497 2493 +f 1416 1734 1769 +f 1665 1728 1786 +f 1665 1951 1728 +f 1951 1860 1728 +f 1951 2094 1860 +f 1844 1836 1818 +f 316 1836 1844 +f 1776 1531 1787 +f 1719 1826 1793 +f 2147 1401 29 +f 2111 2121 1548 +f 1741 1259 1779 +f 1843 347 1834 +f 1843 1734 959 +f 1766 1769 1734 +f 957 1766 1734 +f 1766 1786 1769 +f 1766 1689 1786 +f 1689 1665 1786 +f 1754 1691 1777 +f 1507 1840 1790 +f 1761 1470 1461 +f 1523 1679 1793 +f 1091 1468 1098 +f 1820 1730 1838 +f 1843 1834 1734 +f 1808 1951 1665 +f 1588 1727 1531 +f 893 915 1832 +f 1523 1774 1679 +f 272 2488 710 +f 1093 1116 1675 +f 2340 2349 2348 +f 1832 1734 1834 +f 1832 957 1734 +f 1951 1808 2094 +f 1685 1692 1505 +f 1043 295 698 +f 2143 1779 2121 +f 1689 1808 1665 +f 1693 1714 1763 +f 1738 2157 1516 +f 1114 1921 236 +f 1268 1333 1520 +f 1149 1108 431 +f 508 2144 1912 +f 1957 1108 1537 +f 431 1108 1957 +f 1018 1108 2167 +f 1338 1957 1681 +f 2163 1957 1338 +f 1983 1390 2093 +f 30 557 37 +f 1714 2173 2172 +f 1983 1984 1390 +f 1984 2065 1390 +f 884 1762 897 +f 2065 1984 1214 +f 1950 1974 1762 +f 884 1950 1762 +f 2012 1698 1861 +f 1214 2116 803 +f 1950 1938 1974 +f 1938 1967 1974 +f 1900 1761 1461 +f 865 1929 884 +f 884 1929 1950 +f 2062 2071 2042 +f 919 1985 1732 +f 1593 502 2146 +f 1995 1213 2098 +f 1522 2476 1651 +f 2174 1849 2175 +f 1480 1989 1499 +f 1929 1938 1950 +f 1605 2058 1574 +f 2097 1605 2133 +f 1912 2014 1886 +f 2092 2082 2083 +f 206 1930 505 +f 2101 2100 2092 +f 2073 2101 2092 +f 839 1910 865 +f 1910 1901 1929 +f 865 1910 1929 +f 1967 1788 1975 +f 2073 2092 2063 +f 2101 1593 2100 +f 2015 1876 1698 +f 1853 1884 2014 +f 1831 1698 2165 +f 1316 273 81 +f 1901 1920 1929 +f 1929 1920 1938 +f 1920 1968 1967 +f 1938 1920 1967 +f 1849 2174 1700 +f 2173 1700 2174 +f 2062 2072 2091 +f 803 2467 2059 +f 2239 1736 2240 +f 1505 1357 1685 +f 1358 1686 1476 +f 1967 1968 1788 +f 1968 1969 1788 +f 2065 2110 2156 +f 2065 1214 2110 +f 2110 1214 503 +f 273 2093 1018 +f 273 1983 2093 +f 532 1886 2155 +f 2034 2021 1947 +f 216 1810 585 +f 1912 543 2014 +f 1390 2051 1537 +f 1872 1873 1910 +f 1984 2045 1214 +f 597 1912 1886 +f 1593 2146 2100 +f 2071 2062 2090 +f 2034 2046 1982 +f 2034 1947 2046 +f 1214 2045 2116 +f 1873 1887 1910 +f 1887 1901 1910 +f 1562 1447 1106 +f 2163 431 1957 +f 1948 1972 1936 +f 1972 1948 1992 +f 2014 2015 2013 +f 1853 2014 2013 +f 1550 1884 1853 +f 1947 2468 1994 +f 1355 1550 2154 +f 1355 1884 1550 +f 2081 2108 2128 +f 2024 1965 1492 +f 2024 2032 1965 +f 2116 1604 803 +f 1901 1911 1920 +f 1939 1968 1920 +f 1911 1939 1920 +f 872 1626 1666 +f 2062 2091 2120 +f 1819 1927 1759 +f 1021 1674 1780 +f 872 1673 1756 +f 1550 501 2171 +f 1378 1550 2171 +f 2146 2162 2145 +f 1358 482 192 +f 2109 2120 2119 +f 1866 1872 2227 +f 1391 2012 1860 +f 2136 2137 2161 +f 2162 1661 236 +f 1887 1894 1901 +f 1901 1894 1911 +f 505 1707 206 +f 2120 2137 2136 +f 2142 2164 1674 +f 1860 2012 1861 +f 1894 1939 1911 +f 2080 2060 2118 +f 2162 236 508 +f 2164 1815 1742 +f 1018 2093 1537 +f 2154 1378 2161 +f 2041 2098 2491 +f 2043 2042 2032 +f 1108 1018 1537 +f 1465 2094 1808 +f 502 1643 1661 +f 2467 1618 1656 +f 2119 2136 2135 +f 2119 2108 2071 +f 878 1183 1195 +f 2101 1594 1593 +f 2033 2370 2063 +f 2482 2491 2098 +f 1282 2406 1275 +f 2003 1948 1956 +f 2043 2032 2024 +f 2025 2043 2024 +f 2154 1550 1378 +f 1795 2498 1764 +f 2142 1548 2164 +f 2431 2454 2422 +f 1981 2011 1993 +f 2349 2391 2362 +f 502 2162 2146 +f 2025 2024 2360 +f 2129 2120 2091 +f 1732 1985 2007 +f 2171 1308 209 +f 1930 1995 2041 +f 1390 1238 2051 +f 1866 1878 1887 +f 1878 1894 1887 +f 1965 2032 2011 +f 874 2480 2492 +f 2071 2108 2069 +f 1358 1731 482 +f 430 2021 2034 +f 1965 2003 1964 +f 1855 1889 831 +f 1668 1773 2150 +f 1390 2156 1238 +f 898 869 1903 +f 2391 2407 2362 +f 2121 2111 2074 +f 1548 1259 2164 +f 2099 2129 2091 +f 1550 1853 501 +f 1853 1852 501 +f 952 2017 969 +f 2085 2121 2074 +f 2130 2006 1391 +f 2144 1367 543 +f 2100 2146 2099 +f 1545 1319 113 +f 1903 1922 898 +f 1922 1931 898 +f 585 2170 1641 +f 2007 2017 952 +f 2017 2074 969 +f 1558 1753 1813 +f 837 2005 1517 +f 2005 2006 2130 +f 1532 1474 1528 +f 2003 1981 1948 +f 2070 2071 2069 +f 1922 919 1931 +f 2017 2085 2074 +f 2085 2104 2121 +f 2100 2099 2082 +f 2156 2110 2034 +f 505 2474 2004 +f 1903 871 1922 +f 1922 1952 919 +f 919 1952 1985 +f 1985 2001 2007 +f 2001 2036 2017 +f 2007 2001 2017 +f 2017 2036 2085 +f 2036 2047 2085 +f 2047 2075 2085 +f 2075 2104 2085 +f 1948 1993 2023 +f 2400 2422 2407 +f 2011 2070 1993 +f 2033 2043 2025 +f 2012 2015 1698 +f 1876 1338 2165 +f 871 1940 1922 +f 1985 1976 2001 +f 2121 2104 2143 +f 1051 1413 1456 +f 2358 1362 2379 +f 1859 1789 1870 +f 2090 2109 2071 +f 1405 1398 1885 +f 1886 1884 1355 +f 1922 1960 1952 +f 1952 1960 1985 +f 1960 1976 1985 +f 1956 1948 1936 +f 2135 209 2128 +f 2157 1875 1212 +f 2160 2168 2169 +f 1900 1461 1918 +f 2001 2018 2036 +f 2075 2086 2104 +f 2111 2142 2103 +f 1937 1956 1936 +f 2023 2070 2061 +f 2135 2128 2108 +f 2042 2071 2011 +f 2138 413 2383 +f 2033 2072 2043 +f 1922 1940 1960 +f 2070 2069 2061 +f 2069 2108 2061 +f 2108 2119 2135 +f 1855 1904 1889 +f 1889 1904 871 +f 871 1904 1940 +f 1976 2018 2001 +f 2036 2018 2047 +f 2122 2143 2104 +f 216 1642 489 +f 2148 984 2143 +f 1975 1974 1967 +f 2157 1683 1516 +f 1614 1593 1594 +f 2269 2270 2276 +f 1926 2147 29 +f 2082 2091 2072 +f 430 503 2059 +f 1904 1905 1940 +f 1940 1961 1960 +f 1961 1976 1960 +f 2087 2086 2075 +f 2065 2156 1390 +f 1820 1838 1900 +f 534 1308 837 +f 2167 273 1018 +f 831 1850 1855 +f 2019 2037 2018 +f 2018 2037 2047 +f 2037 2075 2047 +f 2086 2095 2104 +f 2095 2122 2104 +f 2122 2148 2143 +f 1926 1213 1995 +f 1405 1885 1761 +f 2006 2013 2012 +f 2211 2233 2216 +f 1855 1890 1904 +f 1904 1895 1905 +f 1905 1932 1940 +f 1961 1977 1976 +f 1976 1986 2018 +f 2484 2476 1518 +f 1870 1411 1859 +f 1548 2142 2111 +f 1904 1890 1895 +f 1895 1932 1905 +f 1940 1932 1961 +f 1976 1977 1986 +f 1986 2008 2018 +f 2018 2008 2019 +f 2087 2075 2037 +f 2087 2095 2086 +f 2094 1391 1860 +f 1852 1853 2006 +f 1853 2013 2006 +f 929 979 850 +f 1855 1874 1890 +f 2008 2028 2019 +f 1993 2070 2023 +f 1705 1799 1998 +f 1491 2147 206 +f 1851 1856 1855 +f 1895 1890 1874 +f 2038 2019 2028 +f 2038 2048 2037 +f 2019 2038 2037 +f 2048 2067 2087 +f 2037 2048 2087 +f 2087 2067 2095 +f 2095 2149 2122 +f 2149 2148 2122 +f 1308 2005 837 +f 209 1308 1387 +f 1601 2102 1927 +f 254 170 201 +f 1800 1403 1763 +f 1510 1346 1740 +f 870 871 1903 +f 1919 1650 1619 +f 2148 1667 1753 +f 1932 1923 1961 +f 1977 1953 1986 +f 2067 2112 2095 +f 2112 2149 2095 +f 2148 2149 1667 +f 2422 2421 2407 +f 1926 2026 1213 +f 1912 2144 543 +f 2128 1387 2153 +f 1733 1510 1740 +f 990 853 2489 +f 503 1214 803 +f 1921 431 2163 +f 2146 2145 2129 +f 2144 1921 2163 +f 1855 1856 1874 +f 1895 1923 1932 +f 1923 1941 1961 +f 1961 1941 1977 +f 2048 2076 2067 +f 2076 2113 2067 +f 2067 2113 2112 +f 1723 1900 1937 +f 1870 1900 1723 +f 1367 2163 1338 +f 520 1346 1510 +f 1698 1831 1861 +f 1984 1919 2045 +f 1895 1891 1923 +f 2008 1986 2028 +f 1948 1981 1993 +f 1883 1346 520 +f 1883 1814 1346 +f 1930 206 2147 +f 2499 2486 1447 +f 1891 1906 1923 +f 1923 1953 1941 +f 1953 1977 1941 +f 1953 1987 1986 +f 2113 2123 2112 +f 2123 2149 2112 +f 1387 1308 1226 +f 1599 1688 1346 +f 2093 1390 1537 +f 2003 2011 1981 +f 1987 2028 1986 +f 2038 2049 2048 +f 2048 2049 2076 +f 1813 1667 2149 +f 2123 1813 2149 +f 1461 1469 1964 +f 1757 1510 1743 +f 505 1930 1999 +f 2223 1784 1789 +f 1532 1522 1651 +f 1906 1913 1923 +f 1913 1943 1923 +f 1943 1942 1923 +f 1923 1942 1953 +f 1942 1987 1953 +f 1308 1852 2005 +f 2053 1814 1883 +f 1733 1740 1541 +f 2154 1886 1355 +f 1503 1528 1474 +f 1874 1879 1895 +f 1895 1879 1891 +f 2076 2124 2113 +f 2113 2124 2123 +f 1896 1891 1879 +f 1891 1896 1906 +f 1942 1962 1987 +f 1962 2009 2028 +f 1987 1962 2028 +f 2009 2038 2028 +f 2109 2119 2071 +f 1918 1956 1937 +f 1851 1864 1856 +f 1896 1897 1906 +f 1906 1897 1913 +f 1943 1962 1942 +f 2049 2077 2076 +f 2124 2125 2123 +f 1930 2147 1926 +f 1902 1894 1878 +f 482 1510 1757 +f 2129 2137 2120 +f 503 803 2059 +f 1847 1857 1851 +f 1851 1857 1864 +f 2039 2038 2009 +f 2038 2039 2049 +f 2076 2077 2124 +f 2150 1813 2123 +f 482 520 1510 +f 1994 1821 2046 +f 2044 2004 1764 +f 1864 1867 1856 +f 1867 1874 1856 +f 1897 1944 1913 +f 1943 1944 1962 +f 2124 2126 2125 +f 2150 2123 2125 +f 2099 2146 2129 +f 2041 1995 2098 +f 1605 1641 2151 +f 1847 1959 1857 +f 1874 1867 1879 +f 1913 1944 1943 +f 1944 1963 1962 +f 2077 2096 2124 +f 2096 2126 2124 +f 2126 2150 2125 +f 941 1650 1919 +f 2135 2136 209 +f 1884 1886 2014 +f 2049 2029 2077 +f 1388 2127 1389 +f 1389 2127 1566 +f 1930 1926 1995 +f 941 1919 1316 +f 2110 503 430 +f 1867 1880 1879 +f 1879 1880 1896 +f 1897 1907 1944 +f 1963 1978 1962 +f 1962 1978 2009 +f 2039 2029 2049 +f 2077 2078 2096 +f 822 823 827 +f 2166 1668 2150 +f 81 941 1316 +f 2204 2216 2203 +f 2011 2071 2070 +f 1880 1892 1896 +f 1892 1907 1897 +f 1896 1892 1897 +f 1907 1914 1944 +f 1978 2010 2009 +f 2010 2039 2009 +f 1688 1740 1346 +f 1789 1820 1870 +f 2130 1391 2094 +f 1944 1945 1963 +f 2029 2078 2077 +f 1767 2150 2126 +f 1767 2166 2150 +f 803 2022 2467 +f 1503 1927 2102 +f 1914 1954 1944 +f 1944 1954 1945 +f 1963 1970 1978 +f 2078 2105 2096 +f 2105 2126 2096 +f 1965 2011 2003 +f 192 1626 1358 +f 2101 1559 1594 +f 1930 2041 1999 +f 1698 1876 2165 +f 1398 1871 891 +f 2165 1338 1681 +f 1970 2010 1978 +f 2010 2030 2029 +f 2039 2010 2029 +f 2030 2055 2078 +f 2029 2030 2078 +f 1849 1848 2175 +f 1871 1862 891 +f 543 2015 2014 +f 1857 1858 1864 +f 1864 1858 1867 +f 1963 1945 1970 +f 2055 2088 2078 +f 2078 2088 2105 +f 2105 2131 2126 +f 2126 2131 1767 +f 2063 2083 2033 +f 2161 2171 209 +f 2032 2042 2011 +f 1813 2150 1773 +f 1914 1908 1954 +f 1970 1979 2010 +f 2088 2131 2105 +f 2015 543 1876 +f 1694 1692 1048 +f 1395 2207 1859 +f 1395 1393 2207 +f 1730 1784 1736 +f 2500 2466 2470 +f 1709 1701 1757 +f 1945 1979 1970 +f 2030 2050 2055 +f 2350 2317 2286 +f 2154 2155 1886 +f 871 860 1889 +f 2161 209 2136 +f 2497 2463 2493 +f 2190 2204 2203 +f 1800 2179 1404 +f 2477 2469 1385 +f 1385 1715 2477 +f 2128 209 1387 +f 1858 1868 1867 +f 1867 1881 1880 +f 1893 1892 1880 +f 1881 1893 1880 +f 1893 1907 1892 +f 1907 1908 1914 +f 1954 1979 1945 +f 1979 1980 2010 +f 2131 2159 1767 +f 1765 93 339 +f 1761 1877 1405 +f 523 1347 515 +f 1541 2157 1738 +f 2144 2163 1367 +f 1380 1389 1566 +f 2317 2392 2316 +f 1994 2498 1801 +f 1867 1868 1881 +f 1980 2050 2030 +f 2010 1980 2030 +f 2050 2089 2055 +f 2055 2089 2088 +f 2088 2114 2131 +f 1538 1651 1659 +f 2145 2155 2129 +f 2140 29 1928 +f 2370 2033 2025 +f 2252 2239 2240 +f 2239 2252 1862 +f 2392 2391 2316 +f 2469 2501 1385 +f 2477 1715 1710 +f 502 1614 1643 +f 2438 1227 2431 +f 1915 1907 1893 +f 1915 1908 1907 +f 1954 1908 1979 +f 1908 1988 1979 +f 1979 1988 1980 +f 2114 2159 2131 +f 2155 2154 2129 +f 508 1966 2144 +f 872 1756 1626 +f 1710 1715 1505 +f 236 1966 508 +f 2272 2284 1398 +f 2325 2355 2319 +f 1548 2121 1779 +f 1532 1528 1522 +f 1980 2056 2050 +f 2050 2056 2089 +f 2013 2015 2012 +f 1964 2003 1956 +f 2006 2012 1391 +f 1565 1927 1503 +f 2244 2243 2226 +f 5 1715 1385 +f 1858 1848 1868 +f 1915 1946 1908 +f 1946 1988 1908 +f 1980 2020 2056 +f 2115 2159 2114 +f 2092 2083 2063 +f 1398 2284 1687 +f 2162 2155 2145 +f 519 2475 2488 +f 2158 5 1385 +f 5 1505 1715 +f 1692 1694 1505 +f 1988 2020 1980 +f 2115 2169 2159 +f 2169 2168 2159 +f 2083 2082 2072 +f 1316 1984 1983 +f 1488 1619 1650 +f 2083 2072 2033 +f 2361 1210 1233 +f 1933 1946 1915 +f 2056 2079 2089 +f 2088 2115 2114 +f 2099 2091 2082 +f 2162 532 2155 +f 1852 2006 2005 +f 2023 2061 2052 +f 2176 2184 2175 +f 2162 985 532 +f 1909 1893 1881 +f 1909 1915 1893 +f 1988 2040 2020 +f 2040 2056 2020 +f 2089 2079 2088 +f 2088 2079 2115 +f 1782 1444 1882 +f 1216 1215 2320 +f 867 1939 1894 +f 867 903 1939 +f 1372 2398 1379 +f 1863 504 2027 +f 2158 1385 504 +f 1868 1782 1881 +f 1909 1933 1915 +f 2040 1988 1946 +f 1481 2024 1492 +f 2120 2136 2119 +f 1522 1528 1518 +f 1871 1398 1405 +f 1221 1408 1399 +f 1357 5 2158 +f 2179 1800 1763 +f 1868 1865 1782 +f 1882 1881 1782 +f 1882 1909 1881 +f 2040 2057 2056 +f 2106 2079 2056 +f 2057 2106 2056 +f 2106 2132 2079 +f 2132 2115 2079 +f 2115 2132 2169 +f 532 985 597 +f 2092 2100 2082 +f 1210 1221 1399 +f 1399 1233 1210 +f 2130 2002 1517 +f 1849 1865 1868 +f 1933 2040 1946 +f 52 1269 30 +f 1667 1813 1753 +f 1997 1380 1673 +f 940 1008 1088 +f 1947 1994 2046 +f 1882 1916 1909 +f 1924 1933 1909 +f 1533 2040 1933 +f 1533 1534 2040 +f 2058 2040 1534 +f 2058 2057 2040 +f 1238 191 1768 +f 1997 1389 1380 +f 1875 1541 1554 +f 1854 504 1863 +f 1854 2158 504 +f 2396 1275 2406 +f 2426 2443 153 +f 1916 1924 1909 +f 1925 1935 1934 +f 1870 1723 1426 +f 2058 2097 2057 +f 2097 2106 2057 +f 2132 2151 2169 +f 2151 2160 2169 +f 1106 1635 1562 +f 1957 1768 1681 +f 1957 2051 1768 +f 526 535 33 +f 1614 1594 1609 +f 2233 2229 2216 +f 2496 2027 2084 +f 2496 1863 2027 +f 2117 1854 1863 +f 2016 2158 1854 +f 2016 1504 1357 +f 2158 2016 1357 +f 1114 236 1661 +f 2129 2154 2137 +f 2133 2106 2097 +f 2491 1999 2041 +f 2051 1238 1768 +f 2061 2108 2081 +f 2189 2195 2186 +f 2348 2349 2362 +f 1701 192 482 +f 505 1737 1707 +f 2133 2132 2106 +f 2132 2133 2151 +f 2151 2170 2160 +f 502 1661 2162 +f 1998 1389 1997 +f 2297 2352 2329 +f 2352 2364 2329 +f 2394 2414 2364 +f 2352 2394 2364 +f 2402 512 2415 +f 2255 2254 2243 +f 2446 1365 2456 +f 2271 2282 2298 +f 846 2283 2264 +f 2293 2310 2318 +f 2254 2295 2294 +f 2283 2290 2278 +f 2270 2294 2293 +f 2423 2455 2400 +f 2281 2287 2267 +f 2190 2191 2204 +f 2271 2263 2282 +f 2334 2329 2364 +f 2424 2432 2409 +f 2282 2263 2298 +f 1409 1659 1958 +f 2263 2302 2298 +f 2297 2329 2296 +f 1256 446 2346 +f 1958 2502 2478 +f 2437 2399 2444 +f 263 2366 2359 +f 849 827 823 +f 2311 2325 2290 +f 2499 2379 2434 +f 2446 2456 2423 +f 947 2358 2379 +f 2499 947 2379 +f 2205 2195 2212 +f 2245 2237 2227 +f 2245 2256 2237 +f 2256 2263 2271 +f 556 571 2305 +f 1528 2068 1518 +f 2424 2439 2432 +f 2302 2352 2297 +f 1866 2237 826 +f 2248 2242 2211 +f 2334 2364 2363 +f 2235 2244 2226 +f 2255 2295 2254 +f 2329 2324 2296 +f 2439 2447 1973 +f 2329 2334 2324 +f 2409 2432 2414 +f 2293 2318 2276 +f 866 2425 2416 +f 1487 1493 2372 +f 2237 2231 2230 +f 2415 512 17 +f 2035 1236 26 +f 921 2138 688 +f 2491 2482 2462 +f 6 181 197 +f 2481 948 1795 +f 2138 2383 2382 +f 2377 2394 2352 +f 2377 506 2394 +f 2394 506 2402 +f 2401 2402 2415 +f 2394 2402 2401 +f 2318 2326 2276 +f 2439 2457 2432 +f 2298 2302 2297 +f 2244 2249 2243 +f 2404 1100 2382 +f 2238 2245 2227 +f 2245 2257 2256 +f 2257 2263 2256 +f 2324 2334 2328 +f 2257 2289 2263 +f 2289 2302 2263 +f 2236 2231 2250 +f 2138 2382 688 +f 2383 2404 2382 +f 1100 2404 2343 +f 2353 2352 2302 +f 2353 2377 2352 +f 2237 2230 2220 +f 2335 2355 2325 +f 2308 2340 2315 +f 2253 2269 2276 +f 2311 2335 2325 +f 2439 2424 511 +f 2268 2267 2248 +f 2383 413 2404 +f 123 971 832 +f 2234 2243 2269 +f 2225 2213 2234 +f 2219 2213 2225 +f 2195 2196 2212 +f 1544 2418 1549 +f 413 866 2404 +f 2404 866 2416 +f 2416 2417 2404 +f 2404 2417 2343 +f 2415 2409 2401 +f 2196 2219 2212 +f 2268 2248 2218 +f 2206 2214 2197 +f 2417 2332 2343 +f 2343 2332 832 +f 2330 2302 2289 +f 2330 2353 2302 +f 2453 2454 515 +f 2218 2248 2217 +f 2218 2217 2205 +f 2276 2281 2268 +f 2178 2197 2177 +f 2197 2189 2177 +f 2332 2066 832 +f 832 2066 123 +f 2231 2236 2230 +f 669 950 1144 +f 2217 2211 2199 +f 1216 1209 1217 +f 2066 2365 123 +f 2230 2226 2214 +f 2290 2325 2304 +f 2325 2319 2304 +f 2217 2248 2211 +f 2191 2192 2199 +f 510 525 2035 +f 2417 1917 2332 +f 2332 1917 2066 +f 2408 2413 2341 +f 2248 2267 2242 +f 2326 2333 2281 +f 1340 2365 2066 +f 2440 1302 1340 +f 2226 2230 2235 +f 1153 1163 1116 +f 2431 2455 2438 +f 2416 2425 2417 +f 2495 2474 2462 +f 2290 2304 2277 +f 825 2227 1872 +f 151 239 1038 +f 9 151 1038 +f 545 928 2381 +f 2440 2406 1384 +f 928 1596 2381 +f 2186 2188 2185 +f 2456 26 1888 +f 2287 2333 2262 +f 2425 2342 2417 +f 2342 1917 2417 +f 1917 877 2066 +f 2336 1340 2066 +f 2336 2440 1340 +f 2328 2351 2327 +f 825 2238 2227 +f 2351 2368 2327 +f 1222 2388 1211 +f 678 756 734 +f 428 263 1343 +f 2188 2191 2190 +f 2341 2376 2333 +f 2066 877 2336 +f 2290 2277 2278 +f 739 634 592 +f 675 304 14 +f 2384 675 14 +f 2199 2211 2204 +f 2191 2199 2204 +f 2322 2318 2310 +f 2287 2262 2233 +f 2185 2188 2184 +f 2386 2425 845 +f 2384 572 675 +f 1128 123 2365 +f 832 971 2343 +f 2188 2186 2191 +f 2185 2184 2176 +f 2345 1917 2342 +f 2345 877 1917 +f 2336 2406 2440 +f 971 1100 2343 +f 2299 2289 2257 +f 2299 2303 2289 +f 2249 2255 2243 +f 506 513 512 +f 2437 955 1219 +f 1587 2398 1324 +f 877 2396 2336 +f 2336 2396 2406 +f 2463 2479 879 +f 2376 2412 2350 +f 2281 2267 2268 +f 2303 2330 2289 +f 624 635 159 +f 1996 2356 1561 +f 2449 2436 1996 +f 2356 2054 2451 +f 928 2398 1587 +f 2333 2350 2262 +f 2035 26 2456 +f 2346 2342 2425 +f 2346 2345 2342 +f 1544 2380 2418 +f 2412 2392 2350 +f 622 509 1151 +f 2436 2054 1996 +f 545 2451 928 +f 2326 2341 2333 +f 2346 2425 2386 +f 1365 2035 2456 +f 2369 2377 2353 +f 2369 506 2377 +f 2451 900 928 +f 900 2398 928 +f 1235 1888 1244 +f 2337 2345 2346 +f 877 772 2396 +f 772 1275 2396 +f 2432 2446 2414 +f 2294 2295 2310 +f 2369 2330 828 +f 2418 2419 2436 +f 2450 2429 2436 +f 2436 2429 2054 +f 2490 2494 1656 +f 1321 155 2338 +f 1256 2346 2386 +f 2448 877 2345 +f 877 2448 772 +f 2446 2423 2414 +f 2351 2334 2363 +f 2243 2254 2269 +f 2380 2419 2418 +f 2419 2450 2436 +f 2283 2278 2264 +f 822 2197 823 +f 1008 1759 1565 +f 2448 2345 2337 +f 2270 2293 2276 +f 2323 2324 2328 +f 2429 1012 2054 +f 2226 2243 2213 +f 2395 325 772 +f 2370 2367 2380 +f 2054 2435 2451 +f 2435 2397 2451 +f 2451 2397 900 +f 1774 1974 1975 +f 2305 2290 2283 +f 846 2305 2283 +f 2320 1215 2285 +f 2139 2448 2337 +f 2448 2395 772 +f 1232 1231 1216 +f 2272 2285 2284 +f 2367 2371 2380 +f 2371 2405 2380 +f 2380 2405 2419 +f 2419 2429 2450 +f 2429 176 1012 +f 2397 2373 900 +f 2373 2398 900 +f 2373 1379 2398 +f 2372 1500 1508 +f 1133 1303 1142 +f 2252 2273 2272 +f 891 2252 2272 +f 2419 2405 2429 +f 2405 2430 2429 +f 2429 2430 176 +f 2189 2186 2181 +f 2212 2219 2218 +f 2312 2139 2337 +f 2139 2384 2448 +f 2448 2384 2395 +f 899 855 843 +f 2272 2273 2285 +f 2331 2303 2299 +f 176 2435 2054 +f 1012 176 2054 +f 2177 2185 2176 +f 2218 2219 2225 +f 1216 1220 1215 +f 2378 2139 2312 +f 2384 14 2395 +f 2324 2295 2255 +f 2240 2273 2252 +f 2371 2387 2405 +f 2410 2430 2405 +f 2430 2442 176 +f 2435 2344 2397 +f 2397 2344 2373 +f 2456 1888 2455 +f 2242 2267 2233 +f 2233 2262 2229 +f 2378 2384 2139 +f 2323 2310 2295 +f 2323 2322 2310 +f 2240 2274 2273 +f 974 841 990 +f 2490 1447 2486 +f 2387 2410 2405 +f 2442 2141 176 +f 2344 1778 2373 +f 972 1379 2373 +f 1778 972 2373 +f 1379 972 428 +f 1211 2437 1223 +f 1228 1215 1220 +f 702 2378 2312 +f 17 518 2415 +f 1888 26 1244 +f 2324 2323 2295 +f 2305 2311 2290 +f 2307 2285 2273 +f 2274 2307 2273 +f 2307 2320 2285 +f 2369 531 506 +f 2435 2258 2344 +f 2296 2324 2288 +f 1233 1217 2361 +f 2360 2371 2367 +f 2410 2442 2430 +f 176 2141 2258 +f 176 2258 2435 +f 539 2331 66 +f 2350 2392 2317 +f 2268 2225 2253 +f 1508 1500 2371 +f 2360 1508 2371 +f 2371 1500 2387 +f 972 2366 428 +f 1626 1686 1358 +f 1759 1807 1819 +f 2277 2257 2245 +f 2277 2299 2257 +f 1784 2228 1736 +f 2265 2240 1736 +f 2228 2265 1736 +f 2265 2274 2240 +f 1209 2320 2307 +f 2320 1209 1216 +f 1555 1584 1560 +f 2387 1500 2372 +f 2410 2420 2442 +f 2433 972 1778 +f 2433 2366 972 +f 955 522 1225 +f 2339 2307 2274 +f 2372 1493 2387 +f 2411 2420 2410 +f 2420 954 2442 +f 2442 954 2141 +f 2344 2433 1778 +f 2205 2212 2218 +f 2328 2334 2351 +f 2394 2401 2414 +f 2250 2256 2271 +f 2339 1209 2307 +f 2328 2322 2323 +f 866 845 2425 +f 3 316 893 +f 2387 2411 2410 +f 2441 2141 954 +f 2141 2441 2258 +f 2354 2433 2344 +f 2254 2294 2270 +f 2269 2254 2270 +f 863 2305 846 +f 2441 2354 2258 +f 2258 2354 2344 +f 2319 2355 51 +f 2223 2228 1784 +f 1493 2411 2387 +f 1560 2449 1555 +f 2288 2324 2255 +f 825 2251 2238 +f 2251 2245 2238 +f 1299 84 1312 +f 2246 2265 2228 +f 2313 2274 2265 +f 2313 2339 2274 +f 2251 2277 2245 +f 2319 51 2331 +f 891 1862 2252 +f 2443 954 2420 +f 2443 2441 954 +f 511 2447 2439 +f 2242 2233 2211 +f 188 15 814 +f 2443 2426 2441 +f 2426 2354 2441 +f 2306 2403 2433 +f 2433 2403 2366 +f 539 2303 2331 +f 2246 2228 2223 +f 1030 1819 1807 +f 2354 2306 2433 +f 2413 2412 2376 +f 2438 2455 1888 +f 1848 1857 2176 +f 2207 2208 2223 +f 2208 2246 2223 +f 1209 2339 1217 +f 2339 2361 1217 +f 1221 1210 2388 +f 554 109 78 +f 386 1375 95 +f 2327 2326 2318 +f 2179 2182 1393 +f 2182 2208 1393 +f 1393 2208 2207 +f 2361 2399 2388 +f 2388 2399 1211 +f 2306 2354 2426 +f 2403 2359 2366 +f 2214 2226 2213 +f 2268 2253 2276 +f 889 2200 2179 +f 2200 2182 2179 +f 2200 2221 2182 +f 2221 2208 2182 +f 2314 2265 2246 +f 2314 2313 2265 +f 2339 2374 2361 +f 2478 2434 2379 +f 2205 2217 2199 +f 2208 2259 2246 +f 2259 2275 2246 +f 2314 2321 2313 +f 2313 2347 2339 +f 2347 2374 2339 +f 2374 2399 2361 +f 153 154 2426 +f 154 2306 2426 +f 2385 2359 2403 +f 2221 2259 2208 +f 2306 2357 2403 +f 2357 2385 2403 +f 2237 2256 2231 +f 2172 2180 889 +f 2180 2200 889 +f 2200 2201 2221 +f 2246 2291 2314 +f 2374 2444 2399 +f 571 555 2311 +f 2192 2205 2199 +f 2173 2180 2172 +f 2279 2246 2275 +f 2279 2291 2246 +f 2292 2314 2291 +f 2321 2362 2313 +f 2362 2347 2313 +f 2347 2389 2374 +f 2444 955 2437 +f 2292 2291 2279 +f 2452 2444 2374 +f 2054 2356 1996 +f 2338 2306 154 +f 2186 2192 2191 +f 2193 2201 2200 +f 2259 2221 2201 +f 2247 2259 2201 +f 2452 955 2444 +f 2278 2277 2251 +f 2338 2357 2306 +f 2181 2186 2185 +f 2276 2326 2281 +f 2432 2457 2446 +f 2198 2201 2193 +f 2198 2232 2201 +f 2232 2247 2201 +f 2389 2452 2374 +f 2452 1630 955 +f 1403 1749 1444 +f 1555 1996 1561 +f 2357 2427 2385 +f 2385 2428 230 +f 2409 2415 2424 +f 2304 2331 2299 +f 2193 2200 2180 +f 2445 2452 2389 +f 1565 1759 1927 +f 2380 1544 2370 +f 2338 2427 2357 +f 2427 2428 2385 +f 230 222 253 +f 2202 2198 2193 +f 2202 2209 2198 +f 2209 2241 2198 +f 2241 2232 2198 +f 2266 2275 2259 +f 2365 1340 1128 +f 2415 518 2424 +f 2338 170 2427 +f 170 2428 2427 +f 2181 2185 2177 +f 2196 2195 2189 +f 2183 2193 2180 +f 2453 1630 2452 +f 2197 2214 2189 +f 2401 2409 2414 +f 822 2220 2197 +f 1210 2361 2388 +f 2187 2193 2183 +f 2187 2202 2193 +f 2266 2279 2275 +f 2279 2300 2292 +f 2375 2347 2362 +f 2375 2390 2347 +f 2390 2389 2347 +f 2453 2452 2445 +f 1347 1630 2453 +f 1630 1347 522 +f 2220 2206 2197 +f 2262 2350 2286 +f 170 254 2428 +f 2457 1973 2446 +f 1973 1365 2446 +f 2174 2183 2180 +f 2194 2202 2187 +f 2222 2241 2209 +f 2222 2260 2241 +f 2266 2259 2247 +f 2390 2445 2389 +f 2264 2251 825 +f 2363 2368 2351 +f 2326 2393 2341 +f 1855 1850 1851 +f 2210 2209 2202 +f 2210 2222 2209 +f 2261 2260 2222 +f 2280 2279 2266 +f 2280 2300 2279 +f 251 263 2359 +f 2277 2304 2299 +f 2220 2230 2206 +f 2202 2194 2210 +f 2213 2243 2234 +f 2328 2327 2322 +f 2294 2310 2293 +f 2214 2196 2189 +f 2196 2213 2219 +f 2224 2222 2210 +f 2421 2390 2375 +f 2206 2230 2214 +f 2194 2203 2210 +f 2224 2261 2222 +f 2421 2445 2390 +f 2322 2327 2318 +f 2393 2408 2341 +f 1365 1973 510 +f 2216 2210 2203 +f 2216 2224 2210 +f 2266 2308 2280 +f 2280 2308 2300 +f 2407 2421 2375 +f 2175 2183 2174 +f 2194 2190 2203 +f 2454 2445 2421 +f 522 1347 523 +f 2456 2455 2423 +f 823 2197 2178 +f 2281 2333 2287 +f 2188 2187 2183 +f 2188 2190 2194 +f 2187 2188 2194 +f 2308 2315 2300 +f 2407 2375 2362 +f 2443 2420 2503 +f 2420 2411 2503 +f 2411 1493 2503 +f 1493 1487 2503 +f 1487 1318 2503 +f 1318 1320 2503 +f 1320 2443 2503 diff --git a/gradio/templates/cdn/static/img/Duck.glb b/gradio/templates/cdn/static/img/Duck.glb new file mode 100644 index 0000000000000000000000000000000000000000..217170d2bd67051270be974292dc3b834eefe206 Binary files /dev/null and b/gradio/templates/cdn/static/img/Duck.glb differ diff --git a/gradio/templates/cdn/static/img/api-logo.svg b/gradio/templates/cdn/static/img/api-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..bce49a58f0e8a89980e96b8f3bb99f7da48e6254 --- /dev/null +++ b/gradio/templates/cdn/static/img/api-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/gradio/templates/cdn/static/img/camera.svg b/gradio/templates/cdn/static/img/camera.svg new file mode 100644 index 0000000000000000000000000000000000000000..b46daebb74be9fffa8868fcee3d9f2e8759d08d3 --- /dev/null +++ b/gradio/templates/cdn/static/img/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gradio/templates/cdn/static/img/clear.svg b/gradio/templates/cdn/static/img/clear.svg new file mode 100644 index 0000000000000000000000000000000000000000..bea03307482b585d819f3d581731e17e0ed37c29 --- /dev/null +++ b/gradio/templates/cdn/static/img/clear.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/gradio/templates/cdn/static/img/edit.svg b/gradio/templates/cdn/static/img/edit.svg new file mode 100644 index 0000000000000000000000000000000000000000..07fbe15983f2a5a9f9447c21a414a5c82ee8dadf --- /dev/null +++ b/gradio/templates/cdn/static/img/edit.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/gradio/templates/cdn/static/img/javascript.svg b/gradio/templates/cdn/static/img/javascript.svg new file mode 100644 index 0000000000000000000000000000000000000000..426b76c2fb75e27d9825661ddf341ac7aa0e5ced --- /dev/null +++ b/gradio/templates/cdn/static/img/javascript.svg @@ -0,0 +1,16 @@ + diff --git a/gradio/templates/cdn/static/img/logo.svg b/gradio/templates/cdn/static/img/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..069779a490d8e0dc7cbfe41ed8a81fd6e5444dc9 --- /dev/null +++ b/gradio/templates/cdn/static/img/logo.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/gradio/templates/cdn/static/img/logo_error.svg b/gradio/templates/cdn/static/img/logo_error.svg new file mode 100644 index 0000000000000000000000000000000000000000..5662b675528d13bd1cd70254cc125e27104f4409 --- /dev/null +++ b/gradio/templates/cdn/static/img/logo_error.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + ERROR + + + diff --git a/gradio/templates/cdn/static/img/python.svg b/gradio/templates/cdn/static/img/python.svg new file mode 100644 index 0000000000000000000000000000000000000000..ae0065b85722deca4baac8222b2ebf1df4a1c82b --- /dev/null +++ b/gradio/templates/cdn/static/img/python.svg @@ -0,0 +1,20 @@ + diff --git a/gradio/templates/cdn/static/img/undo-solid.svg b/gradio/templates/cdn/static/img/undo-solid.svg new file mode 100644 index 0000000000000000000000000000000000000000..bbbc9670bbf3efdd50fb683f2fb5eac6eaff9f81 --- /dev/null +++ b/gradio/templates/cdn/static/img/undo-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gradio/templates/frontend/assets/BlockLabel.7ce695d8.js b/gradio/templates/frontend/assets/BlockLabel.7ce695d8.js new file mode 100644 index 0000000000000000000000000000000000000000..15f23bb1d4b569f52ffb83396a84050fdc2d4bc5 --- /dev/null +++ b/gradio/templates/frontend/assets/BlockLabel.7ce695d8.js @@ -0,0 +1,2 @@ +import{S as b,i as g,s as h,F as m,c as d,G as w,H as y,B as u,O as r,f as I,D as _,m as B,J as j,o as S,t as k,p as q,l as C}from"./index.37b24c07.js";import{g as D}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";function F(l){let e,a,n,c,f,i;return n=new l[1]({}),{c(){e=m("div"),a=m("span"),d(n.$$.fragment),c=w(),f=y(l[0]),u(a,"class","svelte-1frtwj3"),u(e,"style",l[4]),u(e,"class","svelte-1frtwj3"),r(e,"hide",!l[2]),r(e,"sr-only",!l[2]),r(e,"float",l[3])},m(t,s){I(t,e,s),_(e,a),B(n,a,null),_(e,c),_(e,f),i=!0},p(t,[s]){(!i||s&1)&&j(f,t[0]),(!i||s&16)&&u(e,"style",t[4]),s&4&&r(e,"hide",!t[2]),s&4&&r(e,"sr-only",!t[2]),s&8&&r(e,"float",t[3])},i(t){i||(S(n.$$.fragment,t),i=!0)},o(t){k(n.$$.fragment,t),i=!1},d(t){t&&q(e),C(n)}}}function G(l,e,a){let n,{label:c=null}=e,{Icon:f}=e,{show_label:i=!0}=e,{disable:t=!1}=e,{float:s=!0}=e;return l.$$set=o=>{"label"in o&&a(0,c=o.label),"Icon"in o&&a(1,f=o.Icon),"show_label"in o&&a(2,i=o.show_label),"disable"in o&&a(5,t=o.disable),"float"in o&&a(3,s=o.float)},l.$$.update=()=>{l.$$.dirty&32&&a(4,{styles:n}=D({label_container:!t},["label_container"]),n)},[c,f,i,s,n,t]}class L extends b{constructor(e){super(),g(this,e,G,F,h,{label:0,Icon:1,show_label:2,disable:5,float:3})}}export{L as B}; +//# sourceMappingURL=BlockLabel.7ce695d8.js.map diff --git a/gradio/templates/frontend/assets/BlockLabel.7ce695d8.js.map b/gradio/templates/frontend/assets/BlockLabel.7ce695d8.js.map new file mode 100644 index 0000000000000000000000000000000000000000..2dc0a1c218150664e39a67415976e784b1ce6c0d --- /dev/null +++ b/gradio/templates/frontend/assets/BlockLabel.7ce695d8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BlockLabel.7ce695d8.js","sources":["../../../../ui/packages/atoms/src/BlockLabel.svelte"],"sourcesContent":["\n\n\n\t\n\t\t\n\t\n\n\t{label}\n\n\n\n"],"names":[],"mappings":"yUAwBE,gDANM,gDAHM,qBACG,gCAFjB,SAMC,+DAIC,8BANM,uBAHM,0BACG,4IAbL,QAAuB,SACvB,WACA,aAAsB,OACtB,UAAmB,OACnB,QAAiB,uNAEtB,UAAW,GAAa,iBAAkB,IAC/C,iBAAF"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/BlockTitle.78628404.js b/gradio/templates/frontend/assets/BlockTitle.78628404.js new file mode 100644 index 0000000000000000000000000000000000000000..f0cf89843a85982dddd27f698b8f1d9607f4325c --- /dev/null +++ b/gradio/templates/frontend/assets/BlockTitle.78628404.js @@ -0,0 +1,2 @@ +import{S as d,i as h,s as k,W as g,c as w,m as $,o as r,t as m,l as B,F as I,G as S,e as j,B as q,O as _,f as c,X as C,Y as F,Z as G,k as H,n as J,p,H as N,J as O}from"./index.37b24c07.js";import{I as T}from"./Info.1218d587.js";import"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";function b(o){let e,n;return e=new T({props:{$$slots:{default:[W]},$$scope:{ctx:o}}}),{c(){w(e.$$.fragment)},m(l,f){$(e,l,f),n=!0},p(l,f){const u={};f&10&&(u.$$scope={dirty:f,ctx:l}),e.$set(u)},i(l){n||(r(e.$$.fragment,l),n=!0)},o(l){m(e.$$.fragment,l),n=!1},d(l){B(e,l)}}}function W(o){let e;return{c(){e=N(o[1])},m(n,l){c(n,e,l)},p(n,l){l&2&&O(e,n[1])},d(n){n&&p(e)}}}function X(o){let e,n,l,f;const u=o[2].default,a=g(u,o,o[3],null);let s=o[1]&&b(o);return{c(){e=I("span"),a&&a.c(),n=S(),s&&s.c(),l=j(),q(e,"class","svelte-1gfkn6j"),_(e,"sr-only",!o[0]),_(e,"hide",!o[0]),_(e,"has-info",o[1]!=null)},m(t,i){c(t,e,i),a&&a.m(e,null),c(t,n,i),s&&s.m(t,i),c(t,l,i),f=!0},p(t,[i]){a&&a.p&&(!f||i&8)&&C(a,u,t,t[3],f?G(u,t[3],i,null):F(t[3]),null),i&1&&_(e,"sr-only",!t[0]),i&1&&_(e,"hide",!t[0]),i&2&&_(e,"has-info",t[1]!=null),t[1]?s?(s.p(t,i),i&2&&r(s,1)):(s=b(t),s.c(),r(s,1),s.m(l.parentNode,l)):s&&(H(),m(s,1,1,()=>{s=null}),J())},i(t){f||(r(a,t),r(s),f=!0)},o(t){m(a,t),m(s),f=!1},d(t){t&&p(e),a&&a.d(t),t&&p(n),s&&s.d(t),t&&p(l)}}}function Y(o,e,n){let{$$slots:l={},$$scope:f}=e,{show_label:u=!0}=e,{info:a=void 0}=e;return o.$$set=s=>{"show_label"in s&&n(0,u=s.show_label),"info"in s&&n(1,a=s.info),"$$scope"in s&&n(3,f=s.$$scope)},[u,a,l,f]}class A extends d{constructor(e){super(),h(this,e,Y,X,k,{show_label:0,info:1})}}export{A as B}; +//# sourceMappingURL=BlockTitle.78628404.js.map diff --git a/gradio/templates/frontend/assets/BlockTitle.78628404.js.map b/gradio/templates/frontend/assets/BlockTitle.78628404.js.map new file mode 100644 index 0000000000000000000000000000000000000000..c62c3e7d551a941423339bb4a30e323d8c82a73e --- /dev/null +++ b/gradio/templates/frontend/assets/BlockTitle.78628404.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BlockTitle.78628404.js","sources":["../../../../ui/packages/atoms/src/BlockTitle.svelte"],"sourcesContent":["\n\n\n\t\n
\n{#if info}\n\t{info}\n{/if}\n\n\n"],"names":[],"mappings":"klBAcQ,wCAAA,8FADH,6GANY,kBACH,qBACG,MAAQ,IAAI,UAH7B,0JACiB,uBACH,0BACG,MAAQ,IAAI,EAIxB,mQAXO,aAAsB,OACtB,OAA2B"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Blocks.15437627.css b/gradio/templates/frontend/assets/Blocks.15437627.css new file mode 100644 index 0000000000000000000000000000000000000000..ab575d8fe732de741b21bb174b517b7f95a83e79 --- /dev/null +++ b/gradio/templates/frontend/assets/Blocks.15437627.css @@ -0,0 +1 @@ +.wrap.svelte-1i3r921.svelte-1i3r921{padding:var(--size-6)}.attention.svelte-1i3r921.svelte-1i3r921{font-weight:var(--weight-bold);font-size:var(--text-lg)}.attention.svelte-1i3r921 code.svelte-1i3r921{border:none;background:none;color:var(--color-accent);font-weight:var(--weight-bold)}button.svelte-1i3r921.svelte-1i3r921{position:absolute;top:var(--size-5);right:var(--size-6);width:var(--size-4);color:var(--body-text-color)}button.svelte-1i3r921.svelte-1i3r921:hover{color:var(--color-accent)}@media (min-width: 768px){button.svelte-1i3r921.svelte-1i3r921{top:var(--size-6)}}h2.svelte-155na5k.svelte-155na5k{display:flex;color:var(--body-text-color);font-weight:var(--weight-semibold)}h2.svelte-155na5k img.svelte-155na5k{margin-right:var(--size-2);width:var(--size-4)}span.svelte-155na5k.svelte-155na5k{color:var(--color-accent)}button.svelte-155na5k.svelte-155na5k{position:absolute;top:var(--size-5);right:var(--size-6);width:var(--size-4);color:var(--body-text-color)}button.svelte-155na5k.svelte-155na5k:hover{color:var(--color-accent)}@media (min-width: 768px){button.svelte-155na5k.svelte-155na5k{top:var(--size-6)}h2.svelte-155na5k img.svelte-155na5k{width:var(--size-5)}}h3.svelte-vs3f38{color:var(--body-text-color);font-weight:var(--section-header-text-weight);font-size:var(--text-lg)}.post.svelte-vs3f38{margin-right:var(--size-2);border:1px solid var(--border-color-accent);border-radius:var(--radius-sm);background:var(--color-accent-soft);padding-right:var(--size-1);padding-left:var(--size-1);color:var(--color-accent);font-weight:var(--weight-semibold)}.endpoint.svelte-vs3f38{margin-bottom:var(--size-6);color:var(--body-text-color)}.url.svelte-vs3f38{display:inline-block;border:none;background:none;padding:var(--size-0-5);font-family:var(--font-mono)}.payload-details.svelte-j5il63{font-family:var(--font-mono)}.space.svelte-j5il63{display:flex;flex-basis:1;margin-top:var(--size-4)}h4.svelte-j5il63{display:flex;align-items:center;margin-top:var(--size-6);margin-bottom:var(--size-3);color:var(--body-text-color);font-weight:var(--weight-bold)}.toggle-icon.svelte-j5il63{display:flex;align-items:center;margin-right:var(--size-2);border-radius:var(--radius-full);background:var(--color-grey-300);width:12px;height:4px}.toggle-dot.svelte-j5il63{border-radius:var(--radius-full);background:var(--color-grey-700);width:6px;height:6px}.dark .toggle-icon.svelte-j5il63{background:var(--color-grey-500)}.dark .toggle-dot.svelte-j5il63{background:var(--color-grey-400)}input[type=text].svelte-j5il63{--ring-color:transparent;margin:var(--size-1) 0;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--radius-lg);background:var(--input-background-fill);padding:var(--size-1-5);color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-j5il63:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}.error.svelte-j5il63{color:var(--error-text-color)}.type.svelte-j5il63{color:var(--block-label-text-color)}.desc.svelte-j5il63{color:var(--body-text-color-subdued)}.name.svelte-j5il63{text-transform:capitalize}.first-level.svelte-j5il63{margin-left:1rem}.second-level.svelte-j5il63{margin-left:2rem}.load-wrap.svelte-fxtbel{display:flex;justify-content:center;align-items:center}h4.svelte-fxtbel{display:flex;align-items:center;margin-top:var(--size-6);margin-bottom:var(--size-3);color:var(--body-text-color);font-weight:var(--weight-bold)}.toggle-icon.svelte-fxtbel{display:flex;align-items:center;margin-right:var(--size-2);border-radius:var(--radius-full);background:var(--color-grey-300);width:12px;height:4px}.toggle-dot.svelte-fxtbel{margin-left:auto;border-radius:var(--radius-full);background:var(--color-grey-700);width:6px;height:6px}.response-wrap.svelte-fxtbel{font-family:var(--font-mono)}input[type=text].svelte-fxtbel{--ring-color:transparent;margin:var(--size-1) 0;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--radius-lg);background:var(--input-background-fill);padding:var(--size-1-5);color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-fxtbel:focus{box-shadow:var(--input-shadow);border-color:var(--input-border-color-focus)}.type.svelte-fxtbel{color:var(--block-label-text-color)}.desc.svelte-fxtbel{color:var(--body-text-color-subdued)}.name.svelte-fxtbel{text-transform:capitalize}.hide.svelte-fxtbel{display:none}.first-level.svelte-fxtbel{margin-left:1rem}.second-level.svelte-fxtbel{margin-left:2rem}h4.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:flex;align-items:center;margin-top:var(--size-8);margin-bottom:var(--size-3);color:var(--body-text-color);font-weight:var(--weight-bold)}h4.svelte-dks0o4 svg.svelte-dks0o4.svelte-dks0o4{margin-right:var(--size-1-5)}.snippets.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:flex;align-items:center;margin-bottom:var(--size-3)}.snippets.svelte-dks0o4>.svelte-dks0o4+.svelte-dks0o4{margin-left:var(--size-2)}.snippet.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:flex;align-items:center;border:1px solid var(--border-color-primary);border-radius:var(--radius-md);padding:var(--size-1) var(--size-1-5);color:var(--body-text-color-subdued);color:var(--body-text-color);line-height:1;user-select:none;text-transform:capitalize}.current-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{border:1px solid var(--body-text-color-subdued);color:var(--body-text-color)}.inactive-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{cursor:pointer;color:var(--body-text-color-subdued)}.inactive-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4:hover,.inactive-lang.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4:focus{box-shadow:var(--shadow-drop);color:var(--body-text-color)}.snippet.svelte-dks0o4 img.svelte-dks0o4.svelte-dks0o4{margin-right:var(--size-1-5);width:var(--size-3)}code.svelte-dks0o4 pre.svelte-dks0o4.svelte-dks0o4{overflow-x:auto;color:var(--body-text-color);font-family:var(--font-mono);tab-size:2}.client.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{white-space:pre-wrap;overflow-wrap:break-word}.token.string.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{display:contents;color:var(--color-accent-base)}code.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{position:relative}.copy.svelte-dks0o4.svelte-dks0o4.svelte-dks0o4{position:absolute;top:0;right:0;margin:1rem}.banner-wrap.svelte-1kj0q1l{position:relative;border-bottom:1px solid var(--border-color-primary);padding:var(--size-4) var(--size-6);font-size:var(--text-md)}@media (min-width: 768px){.banner-wrap.svelte-1kj0q1l{font-size:var(--text-xl)}}.docs-wrap.svelte-1kj0q1l{display:flex;flex-direction:column;gap:var(--spacing-xxl)}.endpoint.svelte-1kj0q1l{border-radius:var(--radius-md);background:var(--background-fill-primary);padding:var(--size-6);font-size:var(--text-md)}.wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;flex-grow:1;flex-direction:column;width:var(--size-full);font-weight:var(--body-text-weight);font-size:var(--body-text-size)}footer.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;justify-content:center;margin-top:var(--size-4);color:var(--body-text-color-subdued)}footer.svelte-1lyswbr>.svelte-1lyswbr+.svelte-1lyswbr{margin-left:var(--size-2)}.show-api.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;align-items:center}.show-api.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr:hover{color:var(--body-text-color)}.show-api.svelte-1lyswbr img.svelte-1lyswbr.svelte-1lyswbr{margin-right:var(--size-1);margin-left:var(--size-2);width:var(--size-3)}.built-with.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;align-items:center}.built-with.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr:hover{color:var(--body-text-color)}.built-with.svelte-1lyswbr img.svelte-1lyswbr.svelte-1lyswbr{margin-right:var(--size-1);margin-left:var(--size-2);width:var(--size-3)}.api-docs.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{display:flex;position:fixed;top:0;right:0;z-index:var(--layer-5);background:rgba(0,0,0,.5);width:var(--size-screen);height:var(--size-screen-h)}.backdrop.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{flex:1 1 0%;backdrop-filter:blur(4px)}.api-docs-wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{box-shadow:var(--shadow-drop-lg);background:var(--background-fill-primary);overflow-x:hidden;overflow-y:auto}@media (min-width: 768px){.api-docs-wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg);width:950px}}@media (min-width: 1536px){.api-docs-wrap.svelte-1lyswbr.svelte-1lyswbr.svelte-1lyswbr{width:1150px}} diff --git a/gradio/templates/frontend/assets/Blocks.5efe22d4.js b/gradio/templates/frontend/assets/Blocks.5efe22d4.js new file mode 100644 index 0000000000000000000000000000000000000000..ec395c9298bff526cf20b5212e5ffadfa7fd401b --- /dev/null +++ b/gradio/templates/frontend/assets/Blocks.5efe22d4.js @@ -0,0 +1,77 @@ +import{d as be,w as rt,_ as j,S as K,i as $,s as ee,b as we,a as mt,c as V,e as ne,m as z,f as I,g as fo,h as co,j as _o,k as oe,t as D,l as X,n as ae,o as x,p as S,q as it,r as on,u as po,v as mo,x as je,y as ho,z as go,A as xe,B as E,C as ie,D as h,E as re,F as w,G as L,H as P,I as _e,J as B,K as Pe,L as vo,M as De,N as ye,O as ht,P as bo,Q as yo,R as Eo,T as So,U as To,V as wo}from"./index.37b24c07.js";import{B as ot,a as at}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";var Io=function(t){return Ao(t)&&!Po(t)};function Ao(e){return!!e&&typeof e=="object"}function Po(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||ko(e)}var Co=typeof Symbol=="function"&&Symbol.for,Oo=Co?Symbol.for("react.element"):60103;function ko(e){return e.$$typeof===Oo}function xo(e){return Array.isArray(e)?[]:{}}function Ie(e,t){return t.clone!==!1&&t.isMergeableObject(e)?de(xo(e),e,t):e}function Lo(e,t,n){return e.concat(t).map(function(r){return Ie(r,n)})}function Ro(e,t){if(!t.customMerge)return de;var n=t.customMerge(e);return typeof n=="function"?n:de}function No(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function gt(e){return Object.keys(e).concat(No(e))}function an(e,t){try{return t in e}catch{return!1}}function jo(e,t){return an(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function Do(e,t,n){var r={};return n.isMergeableObject(e)&>(e).forEach(function(i){r[i]=Ie(e[i],n)}),gt(t).forEach(function(i){jo(e,i)||(an(e,i)&&n.isMergeableObject(t[i])?r[i]=Ro(i,n)(e[i],t[i],n):r[i]=Ie(t[i],n))}),r}function de(e,t,n){n=n||{},n.arrayMerge=n.arrayMerge||Lo,n.isMergeableObject=n.isMergeableObject||Io,n.cloneUnlessOtherwiseSpecified=Ie;var r=Array.isArray(t),i=Array.isArray(e),o=r===i;return o?r?n.arrayMerge(e,t,n):Do(e,t,n):Ie(t,n)}de.all=function(t,n){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(r,i){return de(r,i,n)},{})};var Mo=de,Fo=Mo;/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Je=function(e,t){return Je=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},Je(e,t)};function Fe(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Je(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var G=function(){return G=Object.assign||function(t){for(var n,r=1,i=arguments.length;r0}),n=[],r=0,i=t;r1)throw new RangeError("integer-width stems only accept a single optional option");i.options[0].replace(Ho,function(f,l,u,_,c,g){if(l)t.minimumIntegerDigits=u.length;else{if(_&&c)throw new Error("We currently do not support maximum integer digits");if(g)throw new Error("We currently do not support exact integer digits")}return""});continue}if(hn.test(i.stem)){t.minimumIntegerDigits=i.stem.length;continue}if(bt.test(i.stem)){if(i.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");i.stem.replace(bt,function(f,l,u,_,c,g){return u==="*"?t.minimumFractionDigits=l.length:_&&_[0]==="#"?t.maximumFractionDigits=_.length:c&&g?(t.minimumFractionDigits=c.length,t.maximumFractionDigits=c.length+g.length):(t.minimumFractionDigits=l.length,t.maximumFractionDigits=l.length),""});var o=i.options[0];o==="w"?t=G(G({},t),{trailingZeroDisplay:"stripIfInteger"}):o&&(t=G(G({},t),yt(o)));continue}if(mn.test(i.stem)){t=G(G({},t),yt(i.stem));continue}var s=gn(i.stem);s&&(t=G(G({},t),s));var a=Wo(i.stem);a&&(t=G(G({},t),a))}return t}var Be,Jo=new RegExp("^".concat(dn.source,"*")),Yo=new RegExp("".concat(dn.source,"*$"));function F(e,t){return{start:e,end:t}}var Qo=!!String.prototype.startsWith,Ko=!!String.fromCodePoint,$o=!!Object.fromEntries,ea=!!String.prototype.codePointAt,ta=!!String.prototype.trimStart,na=!!String.prototype.trimEnd,ra=!!Number.isSafeInteger,ia=ra?Number.isSafeInteger:function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},Qe=!0;try{var oa=bn("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");Qe=((Be=oa.exec("a"))===null||Be===void 0?void 0:Be[0])==="a"}catch{Qe=!1}var St=Qo?function(t,n,r){return t.startsWith(n,r)}:function(t,n,r){return t.slice(r,r+n.length)===n},Ke=Ko?String.fromCodePoint:function(){for(var t=[],n=0;no;){if(s=t[o++],s>1114111)throw RangeError(s+" is not a valid code point");r+=s<65536?String.fromCharCode(s):String.fromCharCode(((s-=65536)>>10)+55296,s%1024+56320)}return r},Tt=$o?Object.fromEntries:function(t){for(var n={},r=0,i=t;r=r)){var i=t.charCodeAt(n),o;return i<55296||i>56319||n+1===r||(o=t.charCodeAt(n+1))<56320||o>57343?i:(i-55296<<10)+(o-56320)+65536}},aa=ta?function(t){return t.trimStart()}:function(t){return t.replace(Jo,"")},la=na?function(t){return t.trimEnd()}:function(t){return t.replace(Yo,"")};function bn(e,t){return new RegExp(e,t)}var $e;if(Qe){var wt=bn("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");$e=function(t,n){var r;wt.lastIndex=n;var i=wt.exec(t);return(r=i[1])!==null&&r!==void 0?r:""}}else $e=function(t,n){for(var r=[];;){var i=vn(t,n);if(i===void 0||yn(i)||ca(i))break;r.push(i),n+=i>=65536?2:1}return Ke.apply(void 0,r)};var sa=function(){function e(t,n){n===void 0&&(n={}),this.message=t,this.position={offset:0,line:1,column:1},this.ignoreTag=!!n.ignoreTag,this.requiresOtherClause=!!n.requiresOtherClause,this.shouldParseSkeletons=!!n.shouldParseSkeletons}return e.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},e.prototype.parseMessage=function(t,n,r){for(var i=[];!this.isEOF();){var o=this.char();if(o===123){var s=this.parseArgument(t,r);if(s.err)return s;i.push(s.val)}else{if(o===125&&t>0)break;if(o===35&&(n==="plural"||n==="selectordinal")){var a=this.clonePosition();this.bump(),i.push({type:U.pound,location:F(a,this.clonePosition())})}else if(o===60&&!this.ignoreTag&&this.peek()===47){if(r)break;return this.error(M.UNMATCHED_CLOSING_TAG,F(this.clonePosition(),this.clonePosition()))}else if(o===60&&!this.ignoreTag&&et(this.peek()||0)){var s=this.parseTag(t,n);if(s.err)return s;i.push(s.val)}else{var s=this.parseLiteral(t,n);if(s.err)return s;i.push(s.val)}}}return{val:i,err:null}},e.prototype.parseTag=function(t,n){var r=this.clonePosition();this.bump();var i=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:U.literal,value:"<".concat(i,"/>"),location:F(r,this.clonePosition())},err:null};if(this.bumpIf(">")){var o=this.parseMessage(t+1,n,!0);if(o.err)return o;var s=o.val,a=this.clonePosition();if(this.bumpIf("")?{val:{type:U.tag,value:i,children:s,location:F(r,this.clonePosition())},err:null}:this.error(M.INVALID_TAG,F(a,this.clonePosition())))}else return this.error(M.UNCLOSED_TAG,F(r,this.clonePosition()))}else return this.error(M.INVALID_TAG,F(r,this.clonePosition()))},e.prototype.parseTagName=function(){var t=this.offset();for(this.bump();!this.isEOF()&&fa(this.char());)this.bump();return this.message.slice(t,this.offset())},e.prototype.parseLiteral=function(t,n){for(var r=this.clonePosition(),i="";;){var o=this.tryParseQuote(n);if(o){i+=o;continue}var s=this.tryParseUnquoted(t,n);if(s){i+=s;continue}var a=this.tryParseLeftAngleBracket();if(a){i+=a;continue}break}var f=F(r,this.clonePosition());return{val:{type:U.literal,value:i,location:f},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!ua(this.peek()||0))?(this.bump(),"<"):null},e.prototype.tryParseQuote=function(t){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(t==="plural"||t==="selectordinal")break;return null;default:return null}this.bump();var n=[this.char()];for(this.bump();!this.isEOF();){var r=this.char();if(r===39)if(this.peek()===39)n.push(39),this.bump();else{this.bump();break}else n.push(r);this.bump()}return Ke.apply(void 0,n)},e.prototype.tryParseUnquoted=function(t,n){if(this.isEOF())return null;var r=this.char();return r===60||r===123||r===35&&(n==="plural"||n==="selectordinal")||r===125&&t>0?null:(this.bump(),Ke(r))},e.prototype.parseArgument=function(t,n){var r=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(r,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(M.EMPTY_ARGUMENT,F(r,this.clonePosition()));var i=this.parseIdentifierIfPossible().value;if(!i)return this.error(M.MALFORMED_ARGUMENT,F(r,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(r,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:U.argument,value:i,location:F(r,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(r,this.clonePosition())):this.parseArgumentOptions(t,n,i,r);default:return this.error(M.MALFORMED_ARGUMENT,F(r,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var t=this.clonePosition(),n=this.offset(),r=$e(this.message,n),i=n+r.length;this.bumpTo(i);var o=this.clonePosition(),s=F(t,o);return{value:r,location:s}},e.prototype.parseArgumentOptions=function(t,n,r,i){var o,s=this.clonePosition(),a=this.parseIdentifierIfPossible().value,f=this.clonePosition();switch(a){case"":return this.error(M.EXPECT_ARGUMENT_TYPE,F(s,f));case"number":case"date":case"time":{this.bumpSpace();var l=null;if(this.bumpIf(",")){this.bumpSpace();var u=this.clonePosition(),_=this.parseSimpleArgStyleIfPossible();if(_.err)return _;var c=la(_.val);if(c.length===0)return this.error(M.EXPECT_ARGUMENT_STYLE,F(this.clonePosition(),this.clonePosition()));var g=F(u,this.clonePosition());l={style:c,styleLocation:g}}var p=this.tryParseArgumentClose(i);if(p.err)return p;var m=F(i,this.clonePosition());if(l&&St(l?.style,"::",0)){var d=aa(l.style.slice(2));if(a==="number"){var _=this.parseNumberSkeletonFromString(d,l.styleLocation);return _.err?_:{val:{type:U.number,value:r,location:m,style:_.val},err:null}}else{if(d.length===0)return this.error(M.EXPECT_DATE_TIME_SKELETON,m);var c={type:me.dateTime,pattern:d,location:l.styleLocation,parsedOptions:this.shouldParseSkeletons?zo(d):{}},C=a==="date"?U.date:U.time;return{val:{type:C,value:r,location:m,style:c},err:null}}}return{val:{type:a==="number"?U.number:a==="date"?U.date:U.time,value:r,location:m,style:(o=l?.style)!==null&&o!==void 0?o:null},err:null}}case"plural":case"selectordinal":case"select":{var T=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(M.EXPECT_SELECT_ARGUMENT_OPTIONS,F(T,G({},T)));this.bumpSpace();var y=this.parseIdentifierIfPossible(),b=0;if(a!=="select"&&y.value==="offset"){if(!this.bumpIf(":"))return this.error(M.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,F(this.clonePosition(),this.clonePosition()));this.bumpSpace();var _=this.tryParseDecimalInteger(M.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,M.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(_.err)return _;this.bumpSpace(),y=this.parseIdentifierIfPossible(),b=_.val}var A=this.tryParsePluralOrSelectOptions(t,a,n,y);if(A.err)return A;var p=this.tryParseArgumentClose(i);if(p.err)return p;var O=F(i,this.clonePosition());return a==="select"?{val:{type:U.select,value:r,options:Tt(A.val),location:O},err:null}:{val:{type:U.plural,value:r,options:Tt(A.val),offset:b,pluralType:a==="plural"?"cardinal":"ordinal",location:O},err:null}}default:return this.error(M.INVALID_ARGUMENT_TYPE,F(s,f))}},e.prototype.tryParseArgumentClose=function(t){return this.isEOF()||this.char()!==125?this.error(M.EXPECT_ARGUMENT_CLOSING_BRACE,F(t,this.clonePosition())):(this.bump(),{val:!0,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var t=0,n=this.clonePosition();!this.isEOF();){var r=this.char();switch(r){case 39:{this.bump();var i=this.clonePosition();if(!this.bumpUntil("'"))return this.error(M.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,F(i,this.clonePosition()));this.bump();break}case 123:{t+=1,this.bump();break}case 125:{if(t>0)t-=1;else return{val:this.message.slice(n.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(n.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(t,n){var r=[];try{r=Bo(t)}catch{return this.error(M.INVALID_NUMBER_SKELETON,n)}return{val:{type:me.number,tokens:r,location:n,parsedOptions:this.shouldParseSkeletons?Zo(r):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(t,n,r,i){for(var o,s=!1,a=[],f=new Set,l=i.value,u=i.location;;){if(l.length===0){var _=this.clonePosition();if(n!=="select"&&this.bumpIf("=")){var c=this.tryParseDecimalInteger(M.EXPECT_PLURAL_ARGUMENT_SELECTOR,M.INVALID_PLURAL_ARGUMENT_SELECTOR);if(c.err)return c;u=F(_,this.clonePosition()),l=this.message.slice(_.offset,this.offset())}else break}if(f.has(l))return this.error(n==="select"?M.DUPLICATE_SELECT_ARGUMENT_SELECTOR:M.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,u);l==="other"&&(s=!0),this.bumpSpace();var g=this.clonePosition();if(!this.bumpIf("{"))return this.error(n==="select"?M.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:M.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,F(this.clonePosition(),this.clonePosition()));var p=this.parseMessage(t+1,n,r);if(p.err)return p;var m=this.tryParseArgumentClose(g);if(m.err)return m;a.push([l,{value:p.val,location:F(g,this.clonePosition())}]),f.add(l),this.bumpSpace(),o=this.parseIdentifierIfPossible(),l=o.value,u=o.location}return a.length===0?this.error(n==="select"?M.EXPECT_SELECT_ARGUMENT_SELECTOR:M.EXPECT_PLURAL_ARGUMENT_SELECTOR,F(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!s?this.error(M.MISSING_OTHER_CLAUSE,F(this.clonePosition(),this.clonePosition())):{val:a,err:null}},e.prototype.tryParseDecimalInteger=function(t,n){var r=1,i=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(r=-1);for(var o=!1,s=0;!this.isEOF();){var a=this.char();if(a>=48&&a<=57)o=!0,s=s*10+(a-48),this.bump();else break}var f=F(i,this.clonePosition());return o?(s*=r,ia(s)?{val:s,err:null}:this.error(n,f)):this.error(t,f)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var t=this.position.offset;if(t>=this.message.length)throw Error("out of bound");var n=vn(this.message,t);if(n===void 0)throw Error("Offset ".concat(t," is at invalid UTF-16 code unit boundary"));return n},e.prototype.error=function(t,n){return{val:null,err:{kind:t,message:this.message,location:n}}},e.prototype.bump=function(){if(!this.isEOF()){var t=this.char();t===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=t<65536?1:2)}},e.prototype.bumpIf=function(t){if(St(this.message,t,this.offset())){for(var n=0;n=0?(this.bumpTo(r),!0):(this.bumpTo(this.message.length),!1)},e.prototype.bumpTo=function(t){if(this.offset()>t)throw Error("targetOffset ".concat(t," must be greater than or equal to the current offset ").concat(this.offset()));for(t=Math.min(t,this.message.length);;){var n=this.offset();if(n===t)break;if(n>t)throw Error("targetOffset ".concat(t," is at invalid UTF-16 code unit boundary"));if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&yn(this.char());)this.bump()},e.prototype.peek=function(){if(this.isEOF())return null;var t=this.char(),n=this.offset(),r=this.message.charCodeAt(n+(t>=65536?2:1));return r??null},e}();function et(e){return e>=97&&e<=122||e>=65&&e<=90}function ua(e){return et(e)||e===47}function fa(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function yn(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function ca(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e===8217||e===8218||e>=8219&&e<=8220||e===8221||e===8222||e===8223||e>=8224&&e<=8231||e>=8240&&e<=8248||e===8249||e===8250||e>=8251&&e<=8254||e>=8257&&e<=8259||e===8260||e===8261||e===8262||e>=8263&&e<=8273||e===8274||e===8275||e>=8277&&e<=8286||e>=8592&&e<=8596||e>=8597&&e<=8601||e>=8602&&e<=8603||e>=8604&&e<=8607||e===8608||e>=8609&&e<=8610||e===8611||e>=8612&&e<=8613||e===8614||e>=8615&&e<=8621||e===8622||e>=8623&&e<=8653||e>=8654&&e<=8655||e>=8656&&e<=8657||e===8658||e===8659||e===8660||e>=8661&&e<=8691||e>=8692&&e<=8959||e>=8960&&e<=8967||e===8968||e===8969||e===8970||e===8971||e>=8972&&e<=8991||e>=8992&&e<=8993||e>=8994&&e<=9e3||e===9001||e===9002||e>=9003&&e<=9083||e===9084||e>=9085&&e<=9114||e>=9115&&e<=9139||e>=9140&&e<=9179||e>=9180&&e<=9185||e>=9186&&e<=9254||e>=9255&&e<=9279||e>=9280&&e<=9290||e>=9291&&e<=9311||e>=9472&&e<=9654||e===9655||e>=9656&&e<=9664||e===9665||e>=9666&&e<=9719||e>=9720&&e<=9727||e>=9728&&e<=9838||e===9839||e>=9840&&e<=10087||e===10088||e===10089||e===10090||e===10091||e===10092||e===10093||e===10094||e===10095||e===10096||e===10097||e===10098||e===10099||e===10100||e===10101||e>=10132&&e<=10175||e>=10176&&e<=10180||e===10181||e===10182||e>=10183&&e<=10213||e===10214||e===10215||e===10216||e===10217||e===10218||e===10219||e===10220||e===10221||e===10222||e===10223||e>=10224&&e<=10239||e>=10240&&e<=10495||e>=10496&&e<=10626||e===10627||e===10628||e===10629||e===10630||e===10631||e===10632||e===10633||e===10634||e===10635||e===10636||e===10637||e===10638||e===10639||e===10640||e===10641||e===10642||e===10643||e===10644||e===10645||e===10646||e===10647||e===10648||e>=10649&&e<=10711||e===10712||e===10713||e===10714||e===10715||e>=10716&&e<=10747||e===10748||e===10749||e>=10750&&e<=11007||e>=11008&&e<=11055||e>=11056&&e<=11076||e>=11077&&e<=11078||e>=11079&&e<=11084||e>=11085&&e<=11123||e>=11124&&e<=11125||e>=11126&&e<=11157||e===11158||e>=11159&&e<=11263||e>=11776&&e<=11777||e===11778||e===11779||e===11780||e===11781||e>=11782&&e<=11784||e===11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}function tt(e){e.forEach(function(t){if(delete t.location,fn(t)||cn(t))for(var n in t.options)delete t.options[n].location,tt(t.options[n].value);else ln(t)&&pn(t.style)||(sn(t)||un(t))&&Ye(t.style)?delete t.style.location:_n(t)&&tt(t.children)})}function _a(e,t){t===void 0&&(t={}),t=G({shouldParseSkeletons:!0,requiresOtherClause:!0},t);var n=new sa(e,t).parse();if(n.err){var r=SyntaxError(M[n.err.kind]);throw r.location=n.err.location,r.originalMessage=n.err.message,r}return t?.captureLocation||tt(n.val),n.val}function qe(e,t){var n=t&&t.cache?t.cache:va,r=t&&t.serializer?t.serializer:ga,i=t&&t.strategy?t.strategy:da;return i(e,{cache:n,serializer:r})}function pa(e){return e==null||typeof e=="number"||typeof e=="boolean"}function En(e,t,n,r){var i=pa(r)?r:n(r),o=t.get(i);return typeof o>"u"&&(o=e.call(this,r),t.set(i,o)),o}function Sn(e,t,n){var r=Array.prototype.slice.call(arguments,3),i=n(r),o=t.get(i);return typeof o>"u"&&(o=e.apply(this,r),t.set(i,o)),o}function lt(e,t,n,r,i){return n.bind(t,e,r,i)}function da(e,t){var n=e.length===1?En:Sn;return lt(e,this,n,t.cache.create(),t.serializer)}function ma(e,t){return lt(e,this,Sn,t.cache.create(),t.serializer)}function ha(e,t){return lt(e,this,En,t.cache.create(),t.serializer)}var ga=function(){return JSON.stringify(arguments)};function st(){this.cache=Object.create(null)}st.prototype.get=function(e){return this.cache[e]};st.prototype.set=function(e,t){this.cache[e]=t};var va={create:function(){return new st}},He={variadic:ma,monadic:ha},he;(function(e){e.MISSING_VALUE="MISSING_VALUE",e.INVALID_VALUE="INVALID_VALUE",e.MISSING_INTL_API="MISSING_INTL_API"})(he||(he={}));var Ge=function(e){Fe(t,e);function t(n,r,i){var o=e.call(this,n)||this;return o.code=r,o.originalMessage=i,o}return t.prototype.toString=function(){return"[formatjs Error: ".concat(this.code,"] ").concat(this.message)},t}(Error),It=function(e){Fe(t,e);function t(n,r,i,o){return e.call(this,'Invalid values for "'.concat(n,'": "').concat(r,'". Options are "').concat(Object.keys(i).join('", "'),'"'),he.INVALID_VALUE,o)||this}return t}(Ge),ba=function(e){Fe(t,e);function t(n,r,i){return e.call(this,'Value for "'.concat(n,'" must be of type ').concat(r),he.INVALID_VALUE,i)||this}return t}(Ge),ya=function(e){Fe(t,e);function t(n,r){return e.call(this,'The intl string context variable "'.concat(n,'" was not provided to the string "').concat(r,'"'),he.MISSING_VALUE,r)||this}return t}(Ge),Z;(function(e){e[e.literal=0]="literal",e[e.object=1]="object"})(Z||(Z={}));function Ea(e){return e.length<2?e:e.reduce(function(t,n){var r=t[t.length-1];return!r||r.type!==Z.literal||n.type!==Z.literal?t.push(n):r.value+=n.value,t},[])}function Sa(e){return typeof e=="function"}function Le(e,t,n,r,i,o,s){if(e.length===1&&vt(e[0]))return[{type:Z.literal,value:e[0].value}];for(var a=[],f=0,l=e;fn&&(t in fe||(fe[t]={}),e in fe[t]||(fe[t][e]=n),n),Tn=(e,t)=>{if(t==null)return;if(t in fe&&e in fe[t])return fe[t][e];const n=Oe(t);for(let r=0;r0){const a=i.slice(s,i.length).join(".");if(a in o){o=o[a];break}}o=o[i[s]]}else o=void 0;return o}(function(n){return ut[n]||null}(e),t):null}function In(e,...t){delete fe[e],Ce.update(n=>(n[e]=Fo.all([n[e]||{},...t]),n))}be([Ce],([e])=>Object.keys(e));Ce.subscribe(e=>ut=e);const Re={};function An(e){return Re[e]}function Me(e){return e!=null&&Oe(e).some(t=>{var n;return(n=An(t))===null||n===void 0?void 0:n.size})}function ka(e,t){return Promise.all(t.map(n=>(function(r,i){Re[r].delete(i),Re[r].size===0&&delete Re[r]}(e,n),n().then(r=>r.default||r)))).then(n=>In(e,...n))}const Se={};function Pn(e){if(!Me(e))return e in Se?Se[e]:Promise.resolve();const t=function(n){return Oe(n).map(r=>{const i=An(r);return[r,i?[...i]:[]]}).filter(([,r])=>r.length>0)}(e);return Se[e]=Promise.all(t.map(([n,r])=>ka(n,r))).then(()=>{if(Me(e))return Pn(e);delete Se[e]}),Se[e]}/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */function pe(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function"){var i=0;for(r=Object.getOwnPropertySymbols(e);ir.slice(0,n+1).join("-")).reverse()}function Oe(e,t=ge().fallbackLocale){const n=At(e);return t?[...new Set([...n,...At(t)])]:n}function ce(){return nt??void 0}Ne.subscribe(e=>{nt=e??void 0,typeof window<"u"&&e!=null&&document.documentElement.setAttribute("lang",e)});const Ee=Object.assign(Object.assign({},Ne),{set:e=>{if(e&&function(t){if(t==null)return;const n=Oe(t);for(let r=0;rZe.set(!0),t):Ze.set(!0),Pn(e).then(()=>{Ne.set(e)}).finally(()=>{clearTimeout(n),Ze.set(!1)})}return Ne.set(e)}}),La=()=>typeof window>"u"?null:window.navigator.language||window.navigator.languages[0],Ue=e=>{const t=Object.create(null);return n=>{const r=JSON.stringify(n);return r in t?t[r]:t[r]=e(n)}},Ae=(e,t)=>{const{formats:n}=ge();if(e in n&&t in n[e])return n[e][t];throw new Error(`[svelte-i18n] Unknown "${t}" ${e} format.`)},Ra=Ue(e=>{var{locale:t,format:n}=e,r=pe(e,["locale","format"]);if(t==null)throw new Error('[svelte-i18n] A "locale" must be set to format numbers');return n&&(r=Ae("number",n)),new Intl.NumberFormat(t,r)}),Na=Ue(e=>{var{locale:t,format:n}=e,r=pe(e,["locale","format"]);if(t==null)throw new Error('[svelte-i18n] A "locale" must be set to format dates');return n?r=Ae("date",n):Object.keys(r).length===0&&(r=Ae("date","short")),new Intl.DateTimeFormat(t,r)}),ja=Ue(e=>{var{locale:t,format:n}=e,r=pe(e,["locale","format"]);if(t==null)throw new Error('[svelte-i18n] A "locale" must be set to format time values');return n?r=Ae("time",n):Object.keys(r).length===0&&(r=Ae("time","short")),new Intl.DateTimeFormat(t,r)}),Da=(e={})=>{var{locale:t=ce()}=e,n=pe(e,["locale"]);return Ra(Object.assign({locale:t},n))},Ma=(e={})=>{var{locale:t=ce()}=e,n=pe(e,["locale"]);return Na(Object.assign({locale:t},n))},Fa=(e={})=>{var{locale:t=ce()}=e,n=pe(e,["locale"]);return ja(Object.assign({locale:t},n))},Ga=Ue((e,t=ce())=>new Pa(e,t,ge().formats,{ignoreTag:ge().ignoreTag})),Ua=(e,t={})=>{let n=t;typeof e=="object"&&(n=e,e=n.id);const{values:r,locale:i=ce(),default:o}=n;if(i==null)throw new Error("[svelte-i18n] Cannot format a message without first setting the initial locale.");let s=Tn(e,i);if(s){if(typeof s!="string")return console.warn(`[svelte-i18n] Message with id "${e}" must be of type "string", found: "${typeof s}". Gettin its value through the "$format" method is deprecated; use the "json" method instead.`),s}else ge().warnOnMissingMessages&&console.warn(`[svelte-i18n] The message "${e}" was not found in "${Oe(i).join('", "')}".${Me(ce())?` + +Note: there are at least one loader still registered to this locale that wasn't executed.`:""}`),s=o??e;if(!r)return s;let a=s;try{a=Ga(s,i).format(r)}catch(f){console.warn(`[svelte-i18n] Message "${e}" has syntax error:`,f.message)}return a},Va=(e,t)=>Fa(t).format(e),za=(e,t)=>Ma(t).format(e),Xa=(e,t)=>Da(t).format(e),Ba=(e,t=ce())=>Tn(e,t),Ds=be([Ee,Ce],()=>Ua);be([Ee],()=>Va);be([Ee],()=>za);be([Ee],()=>Xa);be([Ee,Ce],()=>Ba);const qa={accordion:()=>j(()=>import("./index.161aa114.js"),["assets/index.161aa114.js","assets/index.5aa71568.css","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Column.899c996b.js"]),audio:()=>j(()=>import("./index.f7b4af26.js"),["assets/index.f7b4af26.js","assets/index.949232a2.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/UploadText.dca45b41.js","assets/UploadText.41b55f5d.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Upload.233e3186.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.6b6d2d33.js","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js"]),box:()=>j(()=>import("./index.9e3b8e14.js"),["assets/index.9e3b8e14.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),button:()=>j(()=>import("./index.ec5895b1.js"),["assets/index.ec5895b1.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),chatbot:()=>j(()=>import("./index.f7288490.js"),["assets/index.f7288490.js","assets/index.c402ae1d.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css"]),checkbox:()=>j(()=>import("./index.9bb1e80a.js"),["assets/index.9bb1e80a.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Info.1218d587.js"]),checkboxgroup:()=>j(()=>import("./index.d846d8ec.js"),["assets/index.d846d8ec.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),code:()=>j(()=>import("./index.8f4ac20d.js").then(function(e){return e.F}),["assets/index.8f4ac20d.js","assets/index.4d8c967c.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"]),colorpicker:()=>j(()=>import("./index.9eaac145.js"),["assets/index.9eaac145.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),column:()=>j(()=>import("./index.c6373c8b.js"),["assets/index.c6373c8b.js","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/Column.899c996b.js","assets/index.37b24c07.js","assets/index.f554ccc1.css"]),dataframe:()=>j(()=>import("./index.11c5f2d6.js"),["assets/index.11c5f2d6.js","assets/index.ed3a7ba6.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Upload.233e3186.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/dsv.7fe76a93.js"]),dataset:()=>j(()=>import("./index.fc9bbd69.js"),["assets/index.fc9bbd69.js","assets/index.a3fdfec5.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/_commonjsHelpers.a5007c1f.js","assets/Image.3b7bf79b.js","assets/Image.3a14ca24.css","assets/csv.27f5436c.js","assets/dsv.7fe76a93.js","assets/Model3D.e4f84941.js","assets/Model3D.586493bd.css"]),dropdown:()=>j(()=>import("./index.a5a7351b.js"),["assets/index.a5a7351b.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),file:()=>j(()=>import("./index.e78e7e3f.js"),["assets/index.e78e7e3f.js","assets/index.6da2d824.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/File.92a85ebc.js","assets/Upload.233e3186.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.6b6d2d33.js","assets/UploadText.dca45b41.js","assets/UploadText.41b55f5d.css"]),form:()=>j(()=>import("./index.d9197354.js"),["assets/index.d9197354.js","assets/Form.829e1388.js","assets/Form.0a7d9dad.css","assets/index.37b24c07.js","assets/index.f554ccc1.css"]),gallery:()=>j(()=>import("./index.309797c9.js"),["assets/index.309797c9.js","assets/index.5c217706.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.6b6d2d33.js","assets/Image.5624fd80.js"]),group:()=>j(()=>import("./index.625f0989.js"),["assets/index.625f0989.js","assets/index.722bec8b.css","assets/index.37b24c07.js","assets/index.f554ccc1.css"]),highlightedtext:()=>j(()=>import("./index.f15f2c31.js"),["assets/index.f15f2c31.js","assets/index.6f761b5e.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/color.b4725534.js","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js"]),html:()=>j(()=>import("./index.34c6276f.js"),["assets/index.34c6276f.js","assets/index.f6ac8e97.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),image:()=>j(()=>import("./index.148fc4b9.js"),["assets/index.148fc4b9.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Image.5624fd80.js","assets/StaticImage.svelte_svelte_type_style_lang.c3c14c87.js","assets/StaticImage.svelte_svelte_type_style_lang.b09e12d3.css","assets/ModifyUpload.6b6d2d33.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Upload.233e3186.js","assets/Empty.ae5c2506.js","assets/Download.5a6e5fa3.js","assets/UploadText.dca45b41.js","assets/UploadText.41b55f5d.css","assets/Image.3b7bf79b.js","assets/Image.3a14ca24.css"]),interpretation:()=>j(()=>import("./index.a103cc61.js"),["assets/index.a103cc61.js","assets/index.8b2a7651.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),json:()=>j(()=>import("./index.2de5e818.js"),["assets/index.2de5e818.js","assets/index.61c7b416.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Copy.d6bfc6ec.js","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Empty.ae5c2506.js","assets/BlockLabel.7ce695d8.js"]),label:()=>j(()=>import("./index.60be8090.js"),["assets/index.60be8090.js","assets/index.b68d5aeb.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js"]),markdown:()=>j(()=>import("./index.941e34fd.js"),["assets/index.941e34fd.js","assets/index.24229075.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css"]),model3d:()=>j(()=>import("./index.a791a429.js"),["assets/index.a791a429.js","assets/index.00ec9920.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/File.92a85ebc.js","assets/ModifyUpload.6b6d2d33.js","assets/Download.5a6e5fa3.js","assets/_commonjsHelpers.a5007c1f.js","assets/Upload.233e3186.js","assets/UploadText.dca45b41.js","assets/UploadText.41b55f5d.css","assets/Model3D.e4f84941.js","assets/Model3D.586493bd.css"]),number:()=>j(()=>import("./index.0c78303c.js"),["assets/index.0c78303c.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),plot:()=>j(()=>import("./index.756cf7e0.js"),["assets/index.756cf7e0.js","assets/index.84ff132c.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/_commonjsHelpers.a5007c1f.js","assets/color.b4725534.js","assets/linear.955f0731.js","assets/dsv.7fe76a93.js","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Empty.ae5c2506.js","assets/BlockLabel.7ce695d8.js"]),radio:()=>j(()=>import("./index.66bc5f70.js"),["assets/index.66bc5f70.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),row:()=>j(()=>import("./index.e53bc184.js"),["assets/index.e53bc184.js","assets/index.1c646c8a.css","assets/index.37b24c07.js","assets/index.f554ccc1.css"]),slider:()=>j(()=>import("./index.52f19625.js"),["assets/index.52f19625.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js"]),state:()=>j(()=>import("./index.be0857c3.js"),["assets/index.be0857c3.js","assets/index.37b24c07.js","assets/index.f554ccc1.css"]),statustracker:()=>j(()=>import("./index.4e431560.js"),["assets/index.4e431560.js","assets/index.37b24c07.js","assets/index.f554ccc1.css"]),tabs:()=>j(()=>import("./index.668532cc.js"),["assets/index.668532cc.js","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/TabItem.svelte_svelte_type_style_lang.40c372e9.js","assets/TabItem.svelte_svelte_type_style_lang.8ca4f84d.css"]),tabitem:()=>j(()=>import("./index.e0c7a81b.js"),["assets/index.e0c7a81b.js","assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/TabItem.svelte_svelte_type_style_lang.40c372e9.js","assets/TabItem.svelte_svelte_type_style_lang.8ca4f84d.css","assets/Column.899c996b.js"]),textbox:()=>j(()=>import("./index.0df6cff0.js"),["assets/index.0df6cff0.js","assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/Textbox.08748353.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockTitle.78628404.js","assets/Info.1218d587.js","assets/Copy.d6bfc6ec.js"]),timeseries:()=>j(()=>import("./index.f57736a7.js"),["assets/index.f57736a7.js","assets/index.8f9fffde.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Upload.233e3186.js","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/ModifyUpload.6b6d2d33.js","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/color.b4725534.js","assets/linear.955f0731.js","assets/csv.27f5436c.js","assets/dsv.7fe76a93.js","assets/UploadText.dca45b41.js","assets/UploadText.41b55f5d.css"]),uploadbutton:()=>j(()=>import("./index.d3c29361.js"),["assets/index.d3c29361.js","assets/index.89ce7356.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css"]),video:()=>j(()=>import("./index.d860e796.js"),["assets/index.d860e796.js","assets/index.ff5c67e2.css","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js","assets/ModifyUpload.svelte_svelte_type_style_lang.8c17392b.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/Upload.233e3186.js","assets/ModifyUpload.6b6d2d33.js","assets/BlockLabel.7ce695d8.js","assets/StaticImage.svelte_svelte_type_style_lang.c3c14c87.js","assets/StaticImage.svelte_svelte_type_style_lang.b09e12d3.css","assets/Empty.ae5c2506.js","assets/UploadText.dca45b41.js","assets/UploadText.41b55f5d.css"])},Cn="\u0623\u0631\u0633\u0644",On="\u0623\u0645\u0633\u062D",kn="\u0641\u0633\u0650\u0651\u0631",xn="\u0628\u0644\u0650\u0651\u063A",Ln="\u0623\u0645\u062B\u0644\u0629",Rn="\u0623\u0648";var Ha={interface:{drop_image:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0635\u0648\u0631\u0629 \u0647\u0646\u0627",drop_video:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0641\u064A\u062F\u064A\u0648 \u0647\u0646\u0627",drop_audio:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0635\u0648\u062A\u064A \u0647\u0646\u0627",drop_file:"\u0623\u0633\u0642\u0637 \u0627\u0644\u0645\u0644\u0641 \u0647\u0646\u0627",drop_csv:"\u0623\u0633\u0642\u0637 \u0645\u0644\u0641 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0647\u0646\u0627",click_to_upload:"\u0625\u0636\u063A\u0637 \u0644\u0644\u062A\u062D\u0645\u064A\u0644",view_api:"\u0625\u0633\u062A\u062E\u062F\u0645 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0628\u0631\u0645\u062C\u0629",built_with_Gradio:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0628\u0625\u0633\u062A\u062E\u062F\u0627\u0645 Gradio"},Submit:Cn,Clear:On,Interpret:kn,Flag:xn,Examples:Ln,or:Rn},Wa=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Cn,Clear:On,Interpret:kn,Flag:xn,Examples:Ln,or:Rn,default:Ha});const Nn="Absenden",jn="L\xF6schen",Dn="Ersteller",Mn="Flag",Fn="Beispiele",Gn="oder";var Za={interface:{drop_image:"Bild hier ablegen",drop_video:"Video hier ablegen",drop_audio:"Audio hier ablegen",drop_file:"Datei hier ablegen",drop_csv:"CSV Datei hier ablegen",click_to_upload:"Hochladen",view_api:"API anschauen",built_with_Gradio:"Mit Gradio erstellt"},Submit:Nn,Clear:jn,Interpret:Dn,Flag:Mn,Examples:Fn,or:Gn},Ja=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Nn,Clear:jn,Interpret:Dn,Flag:Mn,Examples:Fn,or:Gn,default:Za});const Un="Submit",Vn="Clear",zn="Interpret",Xn="Flag",Bn="Examples",qn="or";var Ya={interface:{drop_image:"Drop Image Here",drop_video:"Drop Video Here",drop_audio:"Drop Audio Here",drop_file:"Drop File Here",drop_csv:"Drop CSV Here",click_to_upload:"Click to Upload",view_api:"view the api",built_with_Gradio:"Built with gradio",copy_to_clipboard:"copy json",loading:"Loading",error:"ERROR",empty:"Empty"},Submit:Un,Clear:Vn,Interpret:zn,Flag:Xn,Examples:Bn,or:qn},Qa=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Un,Clear:Vn,Interpret:zn,Flag:Xn,Examples:Bn,or:qn,default:Ya});const Hn="Enviar",Wn="Limpiar",Zn="Interpretar",Jn="Avisar",Yn="Ejemplos",Qn="o";var Ka={interface:{drop_image:"Coloque la imagen aqu\xED",drop_video:"Coloque el video aqu\xED",drop_audio:"Coloque el audio aqu\xED",drop_file:"Coloque el archivo aqu\xED",drop_csv:"Coloque el CSV aqu\xED",click_to_upload:"Haga click para cargar",view_api:"Ver la API",built_with_Gradio:"Construido con Gradio"},Submit:Hn,Clear:Wn,Interpret:Zn,Flag:Jn,Examples:Yn,or:Qn},$a=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Hn,Clear:Wn,Interpret:Zn,Flag:Jn,Examples:Yn,or:Qn,default:Ka});const Kn="\u0627\u0631\u0633\u0627\u0644",$n="\u062D\u0630\u0641",er="\u062A\u0641\u0633\u06CC\u0631",tr="\u067E\u0631\u0686\u0645",nr="\u0645\u062B\u0627\u0644 \u0647\u0627",rr="\u06CC\u0627";var el={interface:{drop_image:"\u062A\u0635\u0648\u06CC\u0631 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_video:"\u0648\u06CC\u062F\u06CC\u0648 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_audio:"\u0635\u0648\u062A \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_file:"\u0641\u0627\u06CC\u0644 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",drop_csv:"\u0641\u0627\u06CC\u0644 csv \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F",click_to_upload:"\u0628\u0631\u0627\u06CC \u0622\u067E\u0644\u0648\u062F \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",view_api:"api \u0631\u0627 \u0645\u0634\u0627\u0647\u062F\u0647 \u06A9\u0646\u06CC\u062F",built_with_Gradio:"\u0633\u0627\u062E\u062A\u0647 \u0634\u062F\u0647 \u0628\u0627 gradio"},Submit:Kn,Clear:$n,Interpret:er,Flag:tr,Examples:nr,or:rr},tl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Kn,Clear:$n,Interpret:er,Flag:tr,Examples:nr,or:rr,default:el});const ir="Soumettre",or="Nettoyer",ar="Interpr\xE9ter",lr="Signaler",sr="Exemples",ur="ou";var nl={interface:{drop_image:"D\xE9poser l'Image Ici",drop_video:"D\xE9poser la Vid\xE9o Ici",drop_audio:"D\xE9poser l'Audio Ici",drop_file:"D\xE9poser le Fichier Ici",drop_csv:"D\xE9poser le CSV Ici",click_to_upload:"Cliquer pour T\xE9l\xE9charger",view_api:"Voir l'API",built_with_Gradio:"Con\xE7u avec Gradio"},Submit:ir,Clear:or,Interpret:ar,Flag:lr,Examples:sr,or:ur},rl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:ir,Clear:or,Interpret:ar,Flag:lr,Examples:sr,or:ur,default:nl});const fr="\u05E9\u05DC\u05D7",cr="\u05E0\u05E7\u05D4",_r="\u05DC\u05E4\u05E8\u05E9",pr="\u05E1\u05DE\u05DF",dr="\u05D3\u05D5\u05D2\u05DE\u05D5\u05EA",mr="\u05D0\u05D5";var il={interface:{drop_image:"\u05D2\u05E8\u05D5\u05E8 \u05E7\u05D5\u05D1\u05E5 \u05EA\u05DE\u05D5\u05E0\u05D4 \u05DC\u05DB\u05D0\u05DF",drop_video:"\u05D2\u05E8\u05D5\u05E8 \u05E7\u05D5\u05D1\u05E5 \u05E1\u05E8\u05D8\u05D5\u05DF \u05DC\u05DB\u05D0\u05DF",drop_audio:"\u05D2\u05E8\u05D5\u05E8 \u05DC\u05DB\u05D0\u05DF \u05E7\u05D5\u05D1\u05E5 \u05E9\u05DE\u05E2",drop_file:"\u05D2\u05E8\u05D5\u05E8 \u05E7\u05D5\u05D1\u05E5 \u05DC\u05DB\u05D0\u05DF",drop_csv:"\u05D2\u05E8\u05D5\u05E8 csv \u05E7\u05D5\u05D1\u05E5 \u05DC\u05DB\u05D0\u05DF",click_to_upload:"\u05DC\u05D7\u05E5 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05E2\u05DC\u05D5\u05EA",view_api:"\u05E6\u05E4\u05D4 \u05D1 API",built_with_Gradio:"\u05D1\u05E0\u05D5\u05D9 \u05E2\u05DD \u05D2\u05E8\u05D3\u05D9\u05D5"},Submit:fr,Clear:cr,Interpret:_r,Flag:pr,Examples:dr,or:mr},ol=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:fr,Clear:cr,Interpret:_r,Flag:pr,Examples:dr,or:mr,default:il});const hr="\u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0947",gr="\u0939\u091F\u093E\u092F\u0947",vr="\u0935\u094D\u092F\u093E\u0916\u094D\u092F\u093E \u0915\u0930\u0947",br="\u091A\u093F\u0939\u094D\u0928\u093F\u0924 \u0915\u0930\u0947",yr="\u0909\u0926\u093E\u0939\u0930\u0923",Er="\u092F\u093E";var al={interface:{drop_image:"\u092F\u0939\u093E\u0901 \u0907\u092E\u0947\u091C \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_video:"\u092F\u0939\u093E\u0901 \u0935\u0940\u0921\u093F\u092F\u094B \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_audio:"\u092F\u0939\u093E\u0901 \u0911\u0921\u093F\u092F\u094B \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_file:"\u092F\u0939\u093E\u0901 File \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",drop_csv:"\u092F\u0939\u093E\u0901 CSV \u0921\u094D\u0930\u0949\u092A \u0915\u0930\u0947\u0902",click_to_upload:"\u0905\u092A\u0932\u094B\u0921 \u0915\u0947 \u0932\u093F\u090F \u092C\u091F\u0928 \u0926\u092C\u093E\u092F\u0947\u0902",view_api:"API \u0915\u094B \u0926\u0947\u0916\u0947",built_with_Gradio:"Gradio \u0938\u0947 \u092C\u0928\u093E"},Submit:hr,Clear:gr,Interpret:vr,Flag:br,Examples:yr,or:Er},ll=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:hr,Clear:gr,Interpret:vr,Flag:br,Examples:yr,or:Er,default:al});const Sr="\u9001\u4FE1",Tr="\u30AF\u30EA\u30A2",wr="\u89E3\u91C8",Ir="\u30D5\u30E9\u30B0\u3059\u308B",Ar="\u5165\u529B\u4F8B",Pr="\u307E\u305F\u306F";var sl={interface:{drop_image:"\u3053\u3053\u306B\u753B\u50CF\u3092\u30C9\u30ED\u30C3\u30D7",drop_video:"\u3053\u3053\u306B\u52D5\u753B\u3092\u30C9\u30ED\u30C3\u30D7",drop_audio:"\u3053\u3053\u306B\u97F3\u58F0\u3092\u30C9\u30ED\u30C3\u30D7",drop_file:"\u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C9\u30ED\u30C3\u30D7",drop_csv:"\u3053\u3053\u306BCSV\u3092\u30C9\u30ED\u30C3\u30D7",click_to_upload:"\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9",view_api:"API\u3092\u898B\u308B",built_with_Gradio:"gradio\u3067\u4F5C\u308D\u3046"},Submit:Sr,Clear:Tr,Interpret:wr,Flag:Ir,Examples:Ar,or:Pr},ul=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Sr,Clear:Tr,Interpret:wr,Flag:Ir,Examples:Ar,or:Pr,default:sl});const Cr="\uC81C\uCD9C\uD558\uAE30",Or="\uD074\uB9AC\uC5B4",kr="\uC124\uBA85\uD558\uAE30",xr="\uD50C\uB798\uADF8",Lr="\uC608\uC2DC",Rr="\uB610\uB294";var fl={interface:{drop_image:"\uC774\uBBF8\uC9C0\uB97C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_video:"\uBE44\uB514\uC624\uB97C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_audio:"\uC624\uB514\uC624\uB97C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_file:"\uD30C\uC77C\uC744 \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",drop_csv:"CSV\uD30C\uC77C\uC744 \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",click_to_upload:"\uD074\uB9AD\uD574\uC11C \uC5C5\uB85C\uB4DC\uD558\uAE30",view_api:"API \uBCF4\uAE30",built_with_Gradio:"gradio\uB85C \uC81C\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4"},Submit:Cr,Clear:Or,Interpret:kr,Flag:xr,Examples:Lr,or:Rr},cl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Cr,Clear:Or,Interpret:kr,Flag:xr,Examples:Lr,or:Rr,default:fl});const Nr="Pateikti",jr="Trinti",Dr="Interpretuoti",Mr="Pa\u017Eym\u0117ti",Fr="Pavyzd\u017Eiai",Gr="arba";var _l={interface:{drop_image:"\u012Ekelkite paveiksl\u0117l\u012F \u010Dia",drop_video:"\u012Ekelkite vaizdo \u012Fra\u0161\u0105 \u010Dia",drop_audio:"\u012Ekelkite garso \u012Fra\u0161\u0105 \u010Dia",drop_file:"\u012Ekelkite byl\u0105 \u010Dia",drop_csv:"\u012Ekelkite CSV \u010Dia",click_to_upload:"Spustel\u0117kite nor\u0117dami \u012Fkelti",view_api:"per\u017Ei\u016Br\u0117ti api",built_with_Gradio:"sukurta su gradio"},Submit:Nr,Clear:jr,Interpret:Dr,Flag:Mr,Examples:Fr,or:Gr},pl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Nr,Clear:jr,Interpret:Dr,Flag:Mr,Examples:Fr,or:Gr,default:_l});const Ur="Zend in",Vr="Wis",zr="Interpreteer",Xr="Vlag",Br="Voorbeelden",qr="of";var dl={interface:{drop_image:"Sleep een Afbeelding hier",drop_video:"Sleep een Video hier",drop_audio:"Sleep een Geluidsbestand hier",drop_file:"Sleep een Document hier",drop_csv:"Sleep een CSV hier",click_to_upload:"Klik om the Uploaden",view_api:"zie de api",built_with_Gradio:"gemaakt met gradio"},Submit:Ur,Clear:Vr,Interpret:zr,Flag:Xr,Examples:Br,or:qr},ml=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ur,Clear:Vr,Interpret:zr,Flag:Xr,Examples:Br,or:qr,default:dl});const Hr="Zatwierd\u017A",Wr="Wyczy\u015B\u0107",Zr="Interpretuj",Jr="Oznacz",Yr="Przyk\u0142ady",Qr="lub";var hl={interface:{drop_image:"Przeci\u0105gnij tutaj zdj\u0119cie",drop_video:"Przeci\u0105gnij tutaj video",drop_audio:"Przeci\u0105gnij tutaj audio",drop_file:"Przeci\u0105gnij tutaj plik",drop_csv:"Przeci\u0105gnij tutaj CSV",click_to_upload:"Kliknij, aby przes\u0142a\u0107",view_api:"zobacz api",built_with_Gradio:"utworzone z gradio"},Submit:Hr,Clear:Wr,Interpret:Zr,Flag:Jr,Examples:Yr,or:Qr},gl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Hr,Clear:Wr,Interpret:Zr,Flag:Jr,Examples:Yr,or:Qr,default:hl});const Kr="Enviar",$r="Limpar",ei="Interpretar",ti="Marcar",ni="Exemplos",ri="ou";var vl={interface:{drop_image:"Solte a Imagem Aqui",drop_video:"Solte o V\xEDdeo Aqui",drop_audio:"Solte o \xC1udio Aqui",drop_file:"Solte o Arquivo Aqui",drop_csv:"Solte o CSV Aqui",click_to_upload:"Clique para o Upload",view_api:"Veja a API",built_with_Gradio:"Constru\xEDdo com gradio",copy_to_clipboard:"copiar para o clipboard",loading:"Carregando",error:"ERRO",empty:"Vazio"},Submit:Kr,Clear:$r,Interpret:ei,Flag:ti,Examples:ni,or:ri},bl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Kr,Clear:$r,Interpret:ei,Flag:ti,Examples:ni,or:ri,default:vl});const ii="\u0418\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u044C",oi="\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",ai="\u0418\u043D\u0442\u0435\u0440\u043F\u0440\u0435\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C",li="\u041F\u043E\u043C\u0435\u0442\u0438\u0442\u044C",si="\u041F\u0440\u0438\u043C\u0435\u0440\u044B",ui="\u0438\u043B\u0438";var yl={interface:{drop_image:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0417\u0434\u0435\u0441\u044C",drop_video:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0412\u0438\u0434\u0435\u043E \u0417\u0434\u0435\u0441\u044C",drop_audio:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0410\u0443\u0434\u0438\u043E \u0417\u0434\u0435\u0441\u044C",drop_file:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0417\u0434\u0435\u0441\u044C",drop_csv:"\u041F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0435 CSV \u0417\u0434\u0435\u0441\u044C",click_to_upload:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C",view_api:"\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 api",built_with_Gradio:"\u0441\u0434\u0435\u043B\u0430\u043D\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E gradio"},Submit:ii,Clear:oi,Interpret:ai,Flag:li,Examples:si,or:ui},El=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:ii,Clear:oi,Interpret:ai,Flag:li,Examples:si,or:ui,default:yl});const fi="\u0B9A\u0BAE\u0BB0\u0BCD\u0BAA\u0BCD\u0BAA\u0BBF",ci="\u0B85\u0BB4\u0BBF",_i="\u0B89\u0B9F\u0BCD\u0BAA\u0BCA\u0BB0\u0BC1\u0BB3\u0BCD",pi="\u0B95\u0BCA\u0B9F\u0BBF\u0BAF\u0BBF\u0B9F\u0BC1",di="\u0B8E\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",mi="\u0B85\u0BB2\u0BCD\u0BB2\u0BA4\u0BC1";var Sl={interface:{drop_image:"\u0BAA\u0B9F\u0BA4\u0BCD\u0BA4\u0BC8 \u0BB5\u0BC8",drop_video:"\u0BB5\u0BC0\u0B9F\u0BBF\u0BAF\u0BCB\u0BB5\u0BC8 \u0BB5\u0BC8",drop_audio:"\u0B86\u0B9F\u0BBF\u0BAF\u0BCB\u0BB5\u0BC8 \u0BB5\u0BC8",drop_file:"\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC8 \u0BB5\u0BC8",drop_csv:"\u0B9A\u0BBF\u0B8E\u0BB8\u0BCD\u0BB5\u0BBF \u0BB5\u0BC8",click_to_upload:"\u0BAA\u0BA4\u0BBF\u0BB5\u0BC7\u0BB1\u0BCD\u0BB1 \u0B95\u0BBF\u0BB3\u0BBF\u0B95\u0BCD \u0B9A\u0BC6\u0BAF\u0BCD",view_api:"\u0B85\u0BAA\u0BBF\u0BAF\u0BC8 \u0B95\u0BBE\u0BA3\u0BCD",built_with_Gradio:"\u0B95\u0BCD\u0BB0\u0BC7\u0B9F\u0BBF\u0BAF\u0BCB-\u0BB5\u0BC1\u0B9F\u0BA9\u0BCD \u0B95\u0B9F\u0BCD\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1"},Submit:fi,Clear:ci,Interpret:_i,Flag:pi,Examples:di,or:mi},Tl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:fi,Clear:ci,Interpret:_i,Flag:pi,Examples:di,or:mi,default:Sl});const hi="Y\xFCkle",gi="Temizle",vi="Yorumla",bi="Etiketle",yi="\xF6rnekler",Ei="veya";var wl={interface:{drop_image:"Resmi Buraya S\xFCr\xFCkle",drop_video:"Videoyu Buraya S\xFCr\xFCkle",drop_audio:"Kayd\u0131 Buraya S\xFCr\xFCkle",drop_file:"Dosyay\u0131 Buraya S\xFCr\xFCkle",drop_csv:"CSV'yi Buraya S\xFCr\xFCkle",click_to_upload:"Y\xFCklemek i\xE7in T\u0131kla",view_api:"api'yi g\xF6r\xFCnt\xFCle",built_with_Gradio:"Gradio ile olu\u015Fturulmu\u015Ftur"},Submit:hi,Clear:gi,Interpret:vi,Flag:bi,Examples:yi,or:Ei},Il=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:hi,Clear:gi,Interpret:vi,Flag:bi,Examples:yi,or:Ei,default:wl});const Si="\u041D\u0430\u0434\u0456\u0441\u043B\u0430\u0442\u0438",Ti="\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438",wi="\u041F\u043E\u044F\u0441\u043D\u0438\u0442\u0438 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442",Ii="\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438",Ai="\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438",Pi="\u0430\u0431\u043E";var Al={interface:{drop_image:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0441\u044E\u0434\u0438",drop_video:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0432\u0456\u0434\u0435\u043E \u0441\u044E\u0434\u0438",drop_audio:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0430\u0443\u0434\u0456\u043E \u0441\u044E\u0434\u0438",drop_file:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B \u0441\u044E\u0434\u0438",drop_csv:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C CSV-\u0444\u0430\u0439\u043B \u0441\u044E\u0434\u0438",click_to_upload:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0449\u043E\u0431 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438",view_api:"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 API",built_with_Gradio:"\u0417\u0440\u043E\u0431\u043B\u0435\u043D\u043E \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 gradio"},Submit:Si,Clear:Ti,Interpret:wi,Flag:Ii,Examples:Ai,or:Pi},Pl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Si,Clear:Ti,Interpret:wi,Flag:Ii,Examples:Ai,or:Pi,default:Al});const Ci="\u062C\u0645\u0639 \u06A9\u0631\u06CC\u06BA",Oi="\u06C1\u0679\u0627 \u062F\u06CC\u06BA",ki="\u062A\u0634\u0631\u06CC\u062D \u06A9\u0631\u06CC\u06BA",xi="\u0646\u0634\u0627\u0646 \u0644\u06AF\u0627\u0626\u06CC\u06BA",Li="\u0645\u062B\u0627\u0644\u06CC\u06BA",Ri="\u06CC\u0627";var Cl={interface:{drop_image:"\u06CC\u06C1\u0627\u06BA \u062A\u0635\u0648\u06CC\u0631 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_video:"\u06CC\u06C1\u0627\u06BA \u0648\u06CC\u0688\u06CC\u0648 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_audio:"\u06CC\u06C1\u0627\u06BA \u0622\u0688\u06CC\u0648 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_file:"\u06CC\u06C1\u0627\u06BA \u0641\u0627\u0626\u0644 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",drop_csv:"\u06CC\u06C1\u0627\u06BA \u0641\u0627\u0626\u0644 \u0688\u0631\u0627\u067E \u06A9\u0631\u06CC\u06BA",click_to_upload:"\u0627\u067E \u0644\u0648\u0688 \u06A9\u06D2 \u0644\u06CC\u06D2 \u06A9\u0644\u06A9 \u06A9\u0631\u06CC\u06BA",view_api:"API \u062F\u06CC\u06A9\u06BE\u06CC\u06BA",built_with_Gradio:"\u06A9\u06D2 \u0633\u0627\u062A\u06BE \u0628\u0646\u0627\u06CC\u0627 \u06AF\u06CC\u0627 Gradio"},Submit:Ci,Clear:Oi,Interpret:ki,Flag:xi,Examples:Li,or:Ri},Ol=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ci,Clear:Oi,Interpret:ki,Flag:xi,Examples:Li,or:Ri,default:Cl});const Ni="Yubor",ji="Tozalash",Di="Tushuntirish",Mi="Bayroq",Fi="Namunalar",Gi="\u6216";var kl={interface:{drop_image:"Rasmni Shu Yerga Tashlang",drop_video:"Videoni Shu Yerga Tashlang",drop_audio:"Audioni Shu Yerga Tashlang",drop_file:"Faylni Shu Yerga Tashlang",drop_csv:"CSVni Shu Yerga Tashlang",click_to_upload:"Yuklash uchun Bosing",view_api:"apini ko'ring",built_with_Gradio:"gradio bilan qilingan"},Submit:Ni,Clear:ji,Interpret:Di,Flag:Mi,Examples:Fi,or:Gi},xl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ni,Clear:ji,Interpret:Di,Flag:Mi,Examples:Fi,or:Gi,default:kl});const Ui="\u63D0\u4EA4",Vi="\u6E05\u9664",zi="\u89E3\u91CA",Xi="\u6807\u8BB0",Bi="\u793A\u4F8B",qi="\u6216";var Ll={interface:{drop_image:"\u62D6\u653E\u56FE\u7247\u81F3\u6B64\u5904",drop_video:"\u62D6\u653E\u89C6\u9891\u81F3\u6B64\u5904",drop_audio:"\u62D6\u653E\u97F3\u9891\u81F3\u6B64\u5904",drop_file:"\u62D6\u653E\u6587\u4EF6\u81F3\u6B64\u5904",drop_csv:"\u62D6\u653ECSV\u81F3\u6B64\u5904",click_to_upload:"\u70B9\u51FB\u4E0A\u4F20",view_api:"\u67E5\u770BAPI",built_with_Gradio:"\u4F7F\u7528Gradio\u6784\u5EFA"},Submit:Ui,Clear:Vi,Interpret:zi,Flag:Xi,Examples:Bi,or:qi},Rl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Ui,Clear:Vi,Interpret:zi,Flag:Xi,Examples:Bi,or:qi,default:Ll});const Hi="\u63D0\u4EA4",Wi="\u6E05\u9664",Zi="\u89E3\u91CB",Ji="Flag",Yi="\u7BC4\u4F8B",Qi="\u6216";var Nl={interface:{drop_image:"\u522A\u9664\u5716\u7247",drop_video:"\u522A\u9664\u5F71\u7247",drop_audio:"\u522A\u9664\u97F3\u983B",drop_file:"\u522A\u9664\u6A94\u6848",drop_csv:"\u522A\u9664CSV",click_to_upload:"\u9EDE\u64CA\u4E0A\u50B3",view_api:"\u67E5\u770BAPI",built_with_Gradio:"\u4F7F\u7528Gradio\u69CB\u5EFA"},Submit:Hi,Clear:Wi,Interpret:Zi,Flag:Ji,Examples:Yi,or:Qi},jl=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Submit:Hi,Clear:Wi,Interpret:Zi,Flag:Ji,Examples:Yi,or:Qi,default:Nl});const Pt={"./lang/ar.json":Wa,"./lang/de.json":Ja,"./lang/en.json":Qa,"./lang/es.json":$a,"./lang/fa.json":tl,"./lang/fr.json":rl,"./lang/he.json":ol,"./lang/hi.json":ll,"./lang/ja.json":ul,"./lang/ko.json":cl,"./lang/lt.json":pl,"./lang/nl.json":ml,"./lang/pl.json":gl,"./lang/pt-BR.json":bl,"./lang/ru.json":El,"./lang/ta.json":Tl,"./lang/tr.json":Il,"./lang/uk.json":Pl,"./lang/ur.json":Ol,"./lang/uz.json":xl,"./lang/zh-cn.json":Rl,"./lang/zh-tw.json":jl};function Dl(){let e={};for(const t in Pt){const n=t.split("/").pop().split(".").shift();e[n]=Pt[t].default}return e}const Ct=Dl();for(const e in Ct)In(e,Ct[e]);function Ml(){xa({fallbackLocale:"en",initialLocale:La()})}function Ot(e,t,n){const r=e.slice();return r[8]=t[n].component,r[17]=t[n].id,r[2]=t[n].props,r[18]=t[n].children,r[9]=t[n].has_modes,r}function kt(e){let t=[],n=new Map,r,i,o=e[1];const s=a=>a[17];for(let a=0;a{r=null}),ae())},i(i){n||(x(r),n=!0)},o(i){D(r),n=!1},d(i){r&&r.d(i),i&&S(t)}}}function Gl(e){let t,n,r,i;const o=[{elem_id:"elem_id"in e[2]&&e[2].elem_id||`component-${e[4]}`},{elem_classes:"elem_classes"in e[2]&&e[2].elem_classes||[]},{target:e[6]},e[2],{theme:e[7]},{root:e[3]}];function s(l){e[15](l)}var a=e[8];function f(l){let u={$$slots:{default:[Fl]},$$scope:{ctx:l}};for(let _=0;_mt(t,"value",s)),t.$on("prop_change",e[10])),{c(){t&&V(t.$$.fragment),r=ne()},m(l,u){t&&z(t,l,u),I(l,r,u),i=!0},p(l,[u]){const _=u&220?fo(o,[u&20&&{elem_id:"elem_id"in l[2]&&l[2].elem_id||`component-${l[4]}`},u&4&&{elem_classes:"elem_classes"in l[2]&&l[2].elem_classes||[]},u&64&&{target:l[6]},u&4&&co(l[2]),u&128&&{theme:l[7]},u&8&&{root:l[3]}]):{};if(u&2097387&&(_.$$scope={dirty:u,ctx:l}),!n&&u&17&&(n=!0,_.value=l[0][l[4]].props.value,_o(()=>n=!1)),a!==(a=l[8])){if(t){oe();const c=t;D(c.$$.fragment,1,0,()=>{X(c,1)}),ae()}a?(t=new a(f(l)),l[14](t),we.push(()=>mt(t,"value",s)),t.$on("prop_change",l[10]),V(t.$$.fragment),x(t.$$.fragment,1),z(t,r.parentNode,r)):t=null}else a&&t.$set(_)},i(l){i||(t&&x(t.$$.fragment,l),i=!0)},o(l){t&&D(t.$$.fragment,l),i=!1},d(l){e[14](null),l&&S(r),t&&X(t,l)}}}function Ul(e,t,n){let{root:r}=t,{component:i}=t,{instance_map:o}=t,{id:s}=t,{props:a}=t,{children:f}=t,{dynamic_ids:l}=t,{has_modes:u}=t,{parent:_=null}=t,{target:c}=t,{theme:g}=t;const p=it();u&&(a.interactive===!1?a.mode="static":a.interactive===!0||l.has(s)?a.mode="dynamic":a.mode="static"),on(()=>(p("mount",s),()=>p("destroy",s))),po("BLOCK_KEY",_);function m(b){for(const A in b.detail)n(0,o[s].props[A]=b.detail[A],o)}function d(b){je.call(this,e,b)}function C(b){je.call(this,e,b)}function T(b){we[b?"unshift":"push"](()=>{o[s].instance=b,n(0,o)})}function y(b){e.$$.not_equal(o[s].props.value,b)&&(o[s].props.value=b,n(0,o))}return e.$$set=b=>{"root"in b&&n(3,r=b.root),"component"in b&&n(8,i=b.component),"instance_map"in b&&n(0,o=b.instance_map),"id"in b&&n(4,s=b.id),"props"in b&&n(2,a=b.props),"children"in b&&n(1,f=b.children),"dynamic_ids"in b&&n(5,l=b.dynamic_ids),"has_modes"in b&&n(9,u=b.has_modes),"parent"in b&&n(11,_=b.parent),"target"in b&&n(6,c=b.target),"theme"in b&&n(7,g=b.theme)},e.$$.update=()=>{e.$$.dirty&3&&n(1,f=f&&f.filter(b=>o[b.id].type!=="statustracker")),e.$$.dirty&19&&o[s].type==="form"&&(f?.every(b=>!b.props.visible)?n(2,a.visible=!1,a):n(2,a.visible=!0,a))},[o,f,a,r,s,l,c,g,i,u,m,_,d,C,T,y]}class Ki extends K{constructor(t){super(),$(this,t,Ul,Gl,ee,{root:3,component:8,instance_map:0,id:4,props:2,children:1,dynamic_ids:5,has_modes:9,parent:11,target:6,theme:7})}}function Vl(e){let t,n,r,i;return{c(){t=xe("svg"),n=xe("g"),r=xe("path"),i=xe("path"),E(r,"d","M3.789,0.09C3.903,-0.024 4.088,-0.024 4.202,0.09L4.817,0.705C4.931,0.819 4.931,1.004 4.817,1.118L1.118,4.817C1.004,4.931 0.819,4.931 0.705,4.817L0.09,4.202C-0.024,4.088 -0.024,3.903 0.09,3.789L3.789,0.09Z"),E(i,"d","M4.825,3.797C4.934,3.907 4.934,4.084 4.825,4.193L4.193,4.825C4.084,4.934 3.907,4.934 3.797,4.825L0.082,1.11C-0.027,1.001 -0.027,0.823 0.082,0.714L0.714,0.082C0.823,-0.027 1.001,-0.027 1.11,0.082L4.825,3.797Z"),E(t,"width","100%"),E(t,"height","100%"),E(t,"viewBox","0 0 5 5"),E(t,"version","1.1"),E(t,"xmlns","http://www.w3.org/2000/svg"),E(t,"xmlns:xlink","http://www.w3.org/1999/xlink"),E(t,"xml:space","preserve"),ie(t,"fill","currentColor"),ie(t,"fill-rule","evenodd"),ie(t,"clip-rule","evenodd"),ie(t,"stroke-linejoin","round"),ie(t,"stroke-miterlimit","2")},m(o,s){I(o,t,s),h(t,n),h(n,r),h(n,i)},p:re,i:re,o:re,d(o){o&&S(t)}}}class $i extends K{constructor(t){super(),$(this,t,null,Vl,ee,{})}}function zl(e){let t,n,r,i,o,s,a,f,l,u,_,c,g,p,m;return c=new $i({}),{c(){t=w("div"),n=w("h1"),n.textContent="API Docs",r=L(),i=w("p"),o=P(`No named API Routes found for + `),s=w("code"),a=P(e[0]),f=L(),l=w("p"),l.innerHTML=`To expose an API endpoint of your app in this page, set the api_name + parameter of the event listener. +
+ For more information, visit the +
API Page guide + . To hide the API documentation button and this page, set + show_api=False + in the + Blocks.launch() + method.`,u=L(),_=w("button"),V(c.$$.fragment),E(s,"class","svelte-1i3r921"),E(i,"class","attention svelte-1i3r921"),E(t,"class","wrap prose svelte-1i3r921"),E(_,"class","svelte-1i3r921")},m(d,C){I(d,t,C),h(t,n),h(t,r),h(t,i),h(i,o),h(i,s),h(s,a),h(t,f),h(t,l),I(d,u,C),I(d,_,C),z(c,_,null),g=!0,p||(m=_e(_,"click",e[2]),p=!0)},p(d,[C]){(!g||C&1)&&B(a,d[0])},i(d){g||(x(c.$$.fragment,d),g=!0)},o(d){D(c.$$.fragment,d),g=!1},d(d){d&&S(t),d&&S(u),d&&S(_),X(c),p=!1,m()}}}function Xl(e,t,n){const r=it();let{root:i}=t;const o=()=>r("close");return e.$$set=s=>{"root"in s&&n(0,i=s.root)},[i,r,o]}class Bl extends K{constructor(t){super(),$(this,t,Xl,zl,ee,{root:0})}}function ve(e,t,n=null){return t===void 0?n==="py"?"None":null:t==="string"?n===null?e:'"'+e+'"':t==="number"?n===null?parseFloat(e):e:t==="boolean"?n==="py"?e==="true"?"True":"False":n==="js"?e:e==="true":n===null?e===""?null:JSON.parse(e):typeof e=="string"?e===""?n==="py"?"None":"null":e:JSON.stringify(e)}var ql="./assets/api-logo.5346f193.svg";function Lt(e){let t,n,r;return{c(){t=w("div"),n=P(e[1]),r=P(" API endpoints:")},m(i,o){I(i,t,o),h(t,n),h(t,r)},p(i,o){o&2&&B(n,i[1])},d(i){i&&S(t)}}}function Hl(e){let t,n,r,i,o,s,a,f,l,u,_,c,g,p=e[1]>1&&Lt(e);return u=new $i({}),{c(){t=w("h2"),n=w("img"),i=P(` + API documentation for\xA0 + `),o=w("span"),s=P(e[0]),a=L(),p&&p.c(),f=L(),l=w("button"),V(u.$$.fragment),Pe(n.src,r=ql)||E(n,"src",r),E(n,"alt",""),E(n,"class","svelte-155na5k"),E(o,"class","url svelte-155na5k"),E(t,"class","svelte-155na5k"),E(l,"class","svelte-155na5k")},m(m,d){I(m,t,d),h(t,n),h(t,i),h(t,o),h(o,s),I(m,a,d),p&&p.m(m,d),I(m,f,d),I(m,l,d),z(u,l,null),_=!0,c||(g=_e(l,"click",e[3]),c=!0)},p(m,[d]){(!_||d&1)&&B(s,m[0]),m[1]>1?p?p.p(m,d):(p=Lt(m),p.c(),p.m(f.parentNode,f)):p&&(p.d(1),p=null)},i(m){_||(x(u.$$.fragment,m),_=!0)},o(m){D(u.$$.fragment,m),_=!1},d(m){m&&S(t),m&&S(a),p&&p.d(m),m&&S(f),m&&S(l),X(u),c=!1,g()}}}function Wl(e,t,n){let{root:r}=t,{active_api_count:i}=t;const o=it(),s=()=>o("close");return e.$$set=a=>{"root"in a&&n(0,r=a.root),"active_api_count"in a&&n(1,i=a.active_api_count)},[r,i,o,s]}class Zl extends K{constructor(t){super(),$(this,t,Wl,Hl,ee,{root:0,active_api_count:1})}}function Jl(e){let t;return{c(){t=P("copy")},m(n,r){I(n,t,r)},d(n){n&&S(t)}}}function Yl(e){let t;return{c(){t=P("copied!")},m(n,r){I(n,t,r)},d(n){n&&S(t)}}}function Ql(e){let t;function n(o,s){return o[3]===o[2]?Yl:Jl}let r=n(e),i=r(e);return{c(){i.c(),t=ne()},m(o,s){i.m(o,s),I(o,t,s)},p(o,s){r!==(r=n(o))&&(i.d(1),i=r(o),i&&(i.c(),i.m(t.parentNode,t)))},d(o){i.d(o),o&&S(t)}}}function Kl(e){let t,n,r,i,o,s,a,f,l,u,_,c,g;return c=new ot({props:{size:"sm",variant:"secondary",$$slots:{default:[Ql]},$$scope:{ctx:e}}}),c.$on("click",e[4]),{c(){t=w("h3"),n=w("span"),n.textContent="POST",r=P(` + /run/`),i=P(e[0]),o=L(),s=w("div"),a=w("div"),f=P(e[1]),l=P("run/"),u=P(e[0]),_=L(),V(c.$$.fragment),E(n,"class","post svelte-vs3f38"),E(t,"class","svelte-vs3f38"),E(a,"class","url svelte-vs3f38"),E(s,"class","endpoint prose svelte-vs3f38")},m(p,m){I(p,t,m),h(t,n),h(t,r),h(t,i),I(p,o,m),I(p,s,m),h(s,a),h(a,f),h(a,l),h(a,u),h(a,_),z(c,a,null),g=!0},p(p,[m]){(!g||m&1)&&B(i,p[0]),(!g||m&2)&&B(f,p[1]),(!g||m&1)&&B(u,p[0]);const d={};m&44&&(d.$$scope={dirty:m,ctx:p}),c.$set(d)},i(p){g||(x(c.$$.fragment,p),g=!0)},o(p){D(c.$$.fragment,p),g=!1},d(p){p&&S(t),p&&S(o),p&&S(s),X(c)}}}function $l(e,t,n){let{api_name:r}=t,{root:i}=t,{dependency_index:o}=t,s=-1;function a(){navigator.clipboard.writeText(i+"run/"+r),n(3,s=o),setTimeout(()=>{n(3,s=-1)},1500)}return e.$$set=f=>{"api_name"in f&&n(0,r=f.api_name),"root"in f&&n(1,i=f.root),"dependency_index"in f&&n(2,o=f.dependency_index)},[r,i,o,s,a]}class es extends K{constructor(t){super(),$(this,t,$l,Kl,ee,{api_name:0,root:1,dependency_index:2})}}function Rt(e,t,n){const r=e.slice();return r[7]=t[n],r[8]=t,r[9]=n,r}function Nt(e){let t;return{c(){t=w("span"),t.textContent="ERROR",E(t,"class","error svelte-j5il63")},m(n,r){I(n,t,r)},d(n){n&&S(t)}}}function jt(e){let t,n,r,i,o,s,a=(e[4][e[7]].documentation?.type?.input_payload||e[4][e[7]].documentation?.type?.payload)+"",f,l,u,_,c,g=(e[4][e[7]].documentation?.description?.input_payload||e[4][e[7]].documentation?.description?.payload)+"",p,m,d=Dt(e[4][e[7]].props.label)+"",C,T,y,b=e[4][e[7]].props.name+"",A,O,J,ke;function q(){e[6].call(n,e[9])}let W=e[2][e[3]][e[9]]&&Nt();return{c(){t=w("div"),n=w("input"),r=L(),W&&W.c(),i=L(),o=w("span"),s=P(": "),f=P(a),l=P(","),u=L(),_=w("span"),c=P("// represents "),p=P(g),m=P(` of + `),C=P(d),T=L(),y=w("span"),A=P(b),O=P(` + component`),E(n,"class"," svelte-j5il63"),E(n,"type","text"),E(o,"class","type svelte-j5il63"),E(y,"class","name svelte-j5il63"),E(_,"class","desc svelte-j5il63"),E(t,"class","second-level svelte-j5il63")},m(le,te){I(le,t,te),h(t,n),De(n,e[0][e[3]][e[9]]),h(t,r),W&&W.m(t,null),h(t,i),h(t,o),h(o,s),h(o,f),h(o,l),h(t,u),h(t,_),h(_,c),h(_,p),h(_,m),h(_,C),h(_,T),h(_,y),h(y,A),h(_,O),J||(ke=_e(n,"input",q),J=!0)},p(le,te){e=le,te&9&&n.value!==e[0][e[3]][e[9]]&&De(n,e[0][e[3]][e[9]]),e[2][e[3]][e[9]]?W||(W=Nt(),W.c(),W.m(t,i)):W&&(W.d(1),W=null),te&18&&a!==(a=(e[4][e[7]].documentation?.type?.input_payload||e[4][e[7]].documentation?.type?.payload)+"")&&B(f,a),te&18&&g!==(g=(e[4][e[7]].documentation?.description?.input_payload||e[4][e[7]].documentation?.description?.payload)+"")&&B(p,g),te&18&&d!==(d=Dt(e[4][e[7]].props.label)+"")&&B(C,d),te&18&&b!==(b=e[4][e[7]].props.name+"")&&B(A,b)},d(le){le&&S(t),W&&W.d(),J=!1,ke()}}}function ts(e){let t,n,r,i,o,s,a,f=e[1].inputs,l=[];for(let u=0;u
+ Input Payload`,n=L(),V(r.$$.fragment),i=L(),o=w("span"),s=L(),V(a.$$.fragment),E(t,"class","svelte-j5il63"),E(o,"class","space svelte-j5il63")},m(l,u){I(l,t,u),I(l,n,u),z(r,l,u),I(l,i,u),I(l,o,u),I(l,s,u),z(a,l,u),f=!0},p(l,[u]){e=l;const _={};u&1055&&(_.$$scope={dirty:u,ctx:e}),r.$set(_);const c={};u&1024&&(c.$$scope={dirty:u,ctx:e}),a.$set(c)},i(l){f||(x(r.$$.fragment,l),x(a.$$.fragment,l),f=!0)},o(l){D(r.$$.fragment,l),D(a.$$.fragment,l),f=!1},d(l){l&&S(t),l&&S(n),X(r,l),l&&S(i),l&&S(o),l&&S(s),X(a,l)}}}function Dt(e){return e?"'"+e+"'":"the"}function is(e,t,n){let{dependency:r}=t,{dependency_failures:i}=t,{dependency_index:o}=t,{instance_map:s}=t,{run:a}=t,{dependency_inputs:f}=t;function l(u){f[o][u]=this.value,n(0,f)}return e.$$set=u=>{"dependency"in u&&n(1,r=u.dependency),"dependency_failures"in u&&n(2,i=u.dependency_failures),"dependency_index"in u&&n(3,o=u.dependency_index),"instance_map"in u&&n(4,s=u.instance_map),"run"in u&&n(5,a=u.run),"dependency_inputs"in u&&n(0,f=u.dependency_inputs)},[f,r,i,o,s,a,l]}class os extends K{constructor(t){super(),$(this,t,is,rs,ee,{dependency:1,dependency_failures:2,dependency_index:3,instance_map:4,run:5,dependency_inputs:0})}}function Mt(e,t,n){const r=e.slice();return r[8]=t[n],r[9]=t,r[10]=n,r}function Ft(e){let t,n,r,i;function o(){e[7].call(t,e[10])}return{c(){t=w("input"),n=P(` + :`),t.disabled=!0,E(t,"type","text"),E(t,"class","svelte-fxtbel")},m(s,a){I(s,t,a),De(t,e[0][e[2]][e[10]]),I(s,n,a),r||(i=_e(t,"input",o),r=!0)},p(s,a){e=s,a&5&&t.value!==e[0][e[2]][e[10]]&&De(t,e[0][e[2]][e[10]])},d(s){s&&S(t),s&&S(n),r=!1,i()}}}function Gt(e){let t,n,r,i=(e[3][e[8]].documentation?.type?.response_object||e[3][e[8]].documentation?.type?.payload)+"",o,s,a,f,l,u=e[5](e[3][e[8]].documentation?.description?.response_object||e[3][e[8]].documentation?.description?.payload,e[0][e[2]][e[10]])+"",_,c,g=Vt(e[3][e[8]].props.label)+"",p,m,d,C=e[3][e[8]].props.name+"",T,y,b=e[0][e[2]][e[10]]!==void 0&&Ft(e);return{c(){t=w("div"),b&&b.c(),n=L(),r=w("span"),o=P(i),s=P(","),a=L(),f=w("span"),l=P("// represents "),_=P(u),c=P(` of + `),p=P(g),m=L(),d=w("span"),T=P(C),y=P(` + component`),E(r,"class","type svelte-fxtbel"),E(d,"class","name capitalize svelte-fxtbel"),E(f,"class","desc svelte-fxtbel"),E(t,"class","second-level svelte-fxtbel")},m(A,O){I(A,t,O),b&&b.m(t,null),h(t,n),h(t,r),h(r,o),h(r,s),h(t,a),h(t,f),h(f,l),h(f,_),h(f,c),h(f,p),h(f,m),h(f,d),h(d,T),h(f,y)},p(A,O){A[0][A[2]][A[10]]!==void 0?b?b.p(A,O):(b=Ft(A),b.c(),b.m(t,n)):b&&(b.d(1),b=null),O&10&&i!==(i=(A[3][A[8]].documentation?.type?.response_object||A[3][A[8]].documentation?.type?.payload)+"")&&B(o,i),O&15&&u!==(u=A[5](A[3][A[8]].documentation?.description?.response_object||A[3][A[8]].documentation?.description?.payload,A[0][A[2]][A[10]])+"")&&B(_,u),O&10&&g!==(g=Vt(A[3][A[8]].props.label)+"")&&B(p,g),O&10&&C!==(C=A[3][A[8]].props.name+"")&&B(T,C)},d(A){A&&S(t),b&&b.d()}}}function Ut(e){let t,n,r;return n=new bo({props:{margin:!1}}),{c(){t=w("div"),V(n.$$.fragment),E(t,"class","load-wrap svelte-fxtbel")},m(i,o){I(i,t,o),z(n,t,null),r=!0},i(i){r||(x(n.$$.fragment,i),r=!0)},o(i){D(n.$$.fragment,i),r=!1},d(i){i&&S(t),X(n)}}}function as(e){let t,n,r,i,o,s,a,f,l,u,_,c,g=e[1].outputs,p=[];for(let d=0;d// number of seconds to run function call`,u=P(` + }`),_=L(),m&&m.c(),E(i,"class","first-level svelte-fxtbel"),E(a,"class","first-level svelte-fxtbel"),E(l,"class","first-level svelte-fxtbel"),E(n,"class","svelte-fxtbel"),ht(n,"hide",e[4]),E(t,"class","response-wrap svelte-fxtbel")},m(d,C){I(d,t,C),h(t,n),h(n,r),h(n,i),h(n,o);for(let T=0;T{m=null}),ae())},i(d){c||(x(m),c=!0)},o(d){D(m),c=!1},d(d){d&&S(t),ye(p,d),m&&m.d()}}}function ls(e){let t,n,r,i;return r=new at({props:{$$slots:{default:[as]},$$scope:{ctx:e}}}),{c(){t=w("h4"),t.innerHTML=`
+ Response Object`,n=L(),V(r.$$.fragment),E(t,"class","svelte-fxtbel")},m(o,s){I(o,t,s),I(o,n,s),z(r,o,s),i=!0},p(o,[s]){const a={};s&2079&&(a.$$scope={dirty:s,ctx:o}),r.$set(a)},i(o){i||(x(r.$$.fragment,o),i=!0)},o(o){D(r.$$.fragment,o),i=!1},d(o){o&&S(t),o&&S(n),X(r,o)}}}const Vt=e=>e?"'"+e+"'":"the";function ss(e,t,n){let{dependency:r}=t,{dependency_index:i}=t,{instance_map:o}=t,{dependency_outputs:s}=t,{is_running:a}=t,{root:f}=t;const l=(_,c)=>_?.replace("{ROOT}",f)?.replace("{name}",c?JSON.parse(`${c}`)?.name:"{name}");function u(_){s[i][_]=this.value,n(0,s)}return e.$$set=_=>{"dependency"in _&&n(1,r=_.dependency),"dependency_index"in _&&n(2,i=_.dependency_index),"instance_map"in _&&n(3,o=_.instance_map),"dependency_outputs"in _&&n(0,s=_.dependency_outputs),"is_running"in _&&n(4,a=_.is_running),"root"in _&&n(6,f=_.root)},[s,r,i,o,a,l,f,u]}class us extends K{constructor(t){super(),$(this,t,ss,ls,ee,{dependency:1,dependency_index:2,instance_map:3,dependency_outputs:0,is_running:4,root:6})}}function fs(e){let t;return{c(){t=P(e[0])},m(n,r){I(n,t,r)},p(n,r){r&1&&B(t,n[0])},d(n){n&&S(t)}}}function cs(e){let t,n;return t=new ot({props:{size:"sm",$$slots:{default:[fs]},$$scope:{ctx:e}}}),t.$on("click",e[1]),{c(){V(t.$$.fragment)},m(r,i){z(t,r,i),n=!0},p(r,[i]){const o={};i&9&&(o.$$scope={dirty:i,ctx:r}),t.$set(o)},i(r){n||(x(t.$$.fragment,r),n=!0)},o(r){D(t.$$.fragment,r),n=!1},d(r){X(t,r)}}}function _s(e,t,n){let{code:r}=t,i="copy";function o(){navigator.clipboard.writeText(r),n(0,i="copied!"),setTimeout(()=>{n(0,i="copy")},1500)}return e.$$set=s=>{"code"in s&&n(2,r=s.code)},[i,o,r]}class eo extends K{constructor(t){super(),$(this,t,_s,cs,ee,{code:2})}}var ps="./assets/python.20e39c92.svg",ds="./assets/javascript.850cf94b.svg";function zt(e,t,n){const r=e.slice();return r[13]=t[n],r[15]=n,r}function Xt(e,t,n){const r=e.slice();return r[13]=t[n],r[15]=n,r}function Bt(e,t,n){const r=e.slice();return r[17]=t[n][0],r[18]=t[n][1],r}function qt(e){let t,n,r,i,o=e[17]+"",s,a,f,l,u;function _(){return e[10](e[17])}return{c(){t=w("li"),n=w("img"),i=L(),s=P(o),a=L(),Pe(n.src,r=e[18])||E(n,"src",r),E(n,"alt",""),E(n,"class","svelte-dks0o4"),E(t,"class",f="snippet "+(e[0]===e[17]?"current-lang":"inactive-lang")+" svelte-dks0o4")},m(c,g){I(c,t,g),h(t,n),h(t,i),h(t,s),h(t,a),l||(u=_e(t,"click",_),l=!0)},p(c,g){e=c,g&1&&f!==(f="snippet "+(e[0]===e[17]?"current-lang":"inactive-lang")+" svelte-dks0o4")&&E(t,"class",f)},d(c){c&&S(t),l=!1,u()}}}function ms(e){let t;return{c(){t=w("pre"),t.textContent="Hello World",E(t,"class","client svelte-dks0o4")},m(n,r){I(n,t,r)},p:re,i:re,o:re,d(n){n&&S(t)}}}function hs(e){let t,n,r,i,o,s,a,f,l=e[5]+"run/"+e[1].api_name,u,_,c,g,p,m,d;n=new eo({props:{code:e[8]?.innerText}});let C=e[6][e[3]],T=[];for(let y=0;y{s[u]=null}),ae()),~n?(r=s[n],r?r.p(f,l):(r=s[n]=o[n](f),r.c()),x(r,1),r.m(t,null)):r=null)},i(f){i||(x(r),i=!0)},o(f){D(r),i=!1},d(f){f&&S(t),~n&&s[n].d()}}}function bs(e){let t,n,r,i,o,s,a=e[9],f=[];for(let l=0;l + Code snippets`,n=L(),r=w("div");for(let l=0;ln(0,l=d);function p(d){we[d?"unshift":"push"](()=>{_=d,n(7,_)})}function m(d){we[d?"unshift":"push"](()=>{c=d,n(8,c)})}return e.$$set=d=>{"dependency"in d&&n(1,r=d.dependency),"dependencies"in d&&n(2,i=d.dependencies),"dependency_index"in d&&n(3,o=d.dependency_index),"instance_map"in d&&n(4,s=d.instance_map),"root"in d&&n(5,a=d.root),"dependency_inputs"in d&&n(6,f=d.dependency_inputs),"current_language"in d&&n(0,l=d.current_language)},[l,r,i,o,s,a,f,_,c,u,g,p,m]}class Es extends K{constructor(t){super(),$(this,t,ys,bs,ee,{dependency:1,dependencies:2,dependency_index:3,instance_map:4,root:5,dependency_inputs:6,current_language:0})}}function Zt(e,t,n){const r=e.slice();return r[11]=t[n],r[13]=n,r}function Ss(e){let t,n;return t=new Bl({props:{root:e[0]}}),t.$on("close",e[10]),{c(){V(t.$$.fragment)},m(r,i){z(t,r,i),n=!0},p(r,i){const o={};i&1&&(o.root=r[0]),t.$set(o)},i(r){n||(x(t.$$.fragment,r),n=!0)},o(r){D(t.$$.fragment,r),n=!1},d(r){X(t,r)}}}function Ts(e){let t,n,r,i,o;n=new Zl({props:{root:e[0],active_api_count:e[7]}}),n.$on("close",e[9]);let s=e[2],a=[];for(let l=0;lD(a[l],1,1,()=>{a[l]=null});return{c(){t=w("div"),V(n.$$.fragment),r=L(),i=w("div");for(let l=0;l{r=null}),ae())},i(i){n||(x(r),n=!0)},o(i){D(r),n=!1},d(i){r&&r.d(i),i&&S(t)}}}function ws(e){let t,n,r,i;const o=[Ts,Ss],s=[];function a(f,l){return f[7]?0:1}return t=a(e),n=s[t]=o[t](e),{c(){n.c(),r=ne()},m(f,l){s[t].m(f,l),I(f,r,l),i=!0},p(f,[l]){n.p(f,l)},i(f){i||(x(n),i=!0)},o(f){D(n),i=!1},d(f){s[t].d(f),f&&S(r)}}}let Is="python";function As(e,t,n){let{instance_map:r}=t,{dependencies:i}=t,{root:o}=t;o===""&&(o=location.protocol+"//"+location.host+location.pathname),o.endsWith("/")||(o+="/");let s=!1,a=i.map(p=>p.inputs.map(m=>{let d=r[m].documentation?.example_data;return d===void 0?d="":typeof d=="object"&&(d=JSON.stringify(d)),d})),f=i.map(p=>new Array(p.outputs.length)),l=i.map(p=>new Array(p.inputs.length).fill(!1)),u=i.filter(p=>p.api_name).length;const _=async p=>{n(3,s=!0);let m=i[p],d=0;try{var C=a[p].map((b,A)=>{d=A;let O=r[m.inputs[A]];return b=ve(b,O.documentation?.type?.input_payload||O.documentation?.type?.payload),n(5,l[p][d]=!1,l),b})}catch{n(5,l[p][d]=!0,l),n(3,s=!1);return}let[T,y]=await yo(`${o}/run/${m.api_name}`,{data:C});n(3,s=!1),y==200?n(4,f[p]=T.data.map((b,A)=>{let O=r[m.outputs[A]];return ve(b,O.documentation?.type?.response_object||O.documentation?.type?.payload,"js")}),f):n(5,l[p]=new Array(l[p].length).fill(!0),l)};on(()=>(document.body.style.overflow="hidden",()=>{document.body.style.overflow="auto"}));function c(p){je.call(this,e,p)}function g(p){je.call(this,e,p)}return e.$$set=p=>{"instance_map"in p&&n(1,r=p.instance_map),"dependencies"in p&&n(2,i=p.dependencies),"root"in p&&n(0,o=p.root)},[o,r,i,s,f,l,a,u,_,c,g]}class Ps extends K{constructor(t){super(),$(this,t,As,ws,ee,{instance_map:1,dependencies:2,root:0})}}var Cs="./assets/logo.0a070fcf.svg",Os="./static/img/api-logo.svg";function Qt(e){return document.title=e[3],{c:re,m:re,d:re}}function Kt(e){let t,n;return{c(){t=w("script"),t.async=!0,t.defer=!0,Pe(t.src,n="https://www.googletagmanager.com/gtag/js?id=UA-156449732-1")||E(t,"src",n)},m(r,i){I(r,t,i)},d(r){r&&S(t)}}}function $t(e){let t,n;return t=new Ki({props:{has_modes:e[11].has_modes,component:e[11].component,id:e[11].id,props:e[11].props,children:e[11].children,dynamic_ids:e[16],instance_map:e[13],root:e[1],target:e[5],theme:e[10]}}),t.$on("mount",e[17]),t.$on("destroy",e[24]),{c(){V(t.$$.fragment)},m(r,i){z(t,r,i),n=!0},p(r,i){const o={};i[0]&2048&&(o.has_modes=r[11].has_modes),i[0]&2048&&(o.component=r[11].component),i[0]&2048&&(o.id=r[11].id),i[0]&2048&&(o.props=r[11].props),i[0]&2048&&(o.children=r[11].children),i[0]&8192&&(o.instance_map=r[13]),i[0]&2&&(o.root=r[1]),i[0]&32&&(o.target=r[5]),i[0]&1024&&(o.theme=r[10]),t.$set(o)},i(r){n||(x(t.$$.fragment,r),n=!0)},o(r){D(t.$$.fragment,r),n=!1},d(r){X(t,r)}}}function en(e){let t,n,r,i,o,s,a=e[6]&&tn(e);return{c(){t=w("footer"),a&&a.c(),n=L(),r=w("a"),i=P(`Built with Gradio + `),o=w("img"),Pe(o.src,s=Cs)||E(o,"src",s),E(o,"alt","logo"),E(o,"class","svelte-1lyswbr"),E(r,"href","https://gradio.app"),E(r,"class","built-with svelte-1lyswbr"),E(r,"target","_blank"),E(r,"rel","noreferrer"),E(t,"class","svelte-1lyswbr")},m(f,l){I(f,t,l),a&&a.m(t,null),h(t,n),h(t,r),h(r,i),h(r,o)},p(f,l){f[6]?a?a.p(f,l):(a=tn(f),a.c(),a.m(t,n)):a&&(a.d(1),a=null)},d(f){f&&S(t),a&&a.d()}}}function tn(e){let t,n,r,i,o,s,a,f;return{c(){t=w("button"),n=P("Use via API "),r=w("img"),o=L(),s=w("div"),s.textContent="\xB7",Pe(r.src,i=Os)||E(r,"src",i),E(r,"alt",""),E(r,"class","svelte-1lyswbr"),E(t,"class","show-api svelte-1lyswbr"),E(s,"class","svelte-1lyswbr")},m(l,u){I(l,t,u),h(t,n),h(t,r),I(l,o,u),I(l,s,u),a||(f=_e(t,"click",e[25]),a=!0)},p:re,d(l){l&&S(t),l&&S(o),l&&S(s),a=!1,f()}}}function nn(e){let t,n,r,i,o,s,a,f;return o=new Ps({props:{instance_map:e[13],dependencies:e[2],root:e[1]}}),o.$on("close",e[27]),{c(){t=w("div"),n=w("div"),r=L(),i=w("div"),V(o.$$.fragment),E(n,"class","backdrop svelte-1lyswbr"),E(i,"class","api-docs-wrap svelte-1lyswbr"),E(t,"class","api-docs svelte-1lyswbr")},m(l,u){I(l,t,u),h(t,n),h(t,r),h(t,i),z(o,i,null),s=!0,a||(f=_e(n,"click",e[26]),a=!0)},p(l,u){const _={};u[0]&8192&&(_.instance_map=l[13]),u[0]&4&&(_.dependencies=l[2]),u[0]&2&&(_.root=l[1]),o.$set(_)},i(l){s||(x(o.$$.fragment,l),s=!0)},o(l){D(o.$$.fragment,l),s=!1},d(l){l&&S(t),X(o),a=!1,f()}}}function ks(e){let t,n,r,i,o,s,a,f,l,u=e[8]&&Qt(e),_=e[4]&&Kt(),c=e[0]&&$t(e),g=e[7]&&en(e),p=e[12]&&e[0]&&nn(e);return{c(){u&&u.c(),t=ne(),_&&_.c(),n=ne(),r=L(),i=w("div"),o=w("div"),c&&c.c(),s=L(),g&&g.c(),a=L(),p&&p.c(),f=ne(),E(o,"class","contain"),ie(o,"flex-grow",e[9]?"1":"auto",!1),E(i,"class","wrap svelte-1lyswbr"),ie(i,"min-height",e[9]?"100%":"auto",!1)},m(m,d){u&&u.m(document.head,null),h(document.head,t),_&&_.m(document.head,null),h(document.head,n),I(m,r,d),I(m,i,d),h(i,o),c&&c.m(o,null),h(i,s),g&&g.m(i,null),I(m,a,d),p&&p.m(m,d),I(m,f,d),l=!0},p(m,d){m[8]?u||(u=Qt(m),u.c(),u.m(t.parentNode,t)):u&&(u.d(1),u=null),m[4]?_||(_=Kt(),_.c(),_.m(n.parentNode,n)):_&&(_.d(1),_=null),m[0]?c?(c.p(m,d),d[0]&1&&x(c,1)):(c=$t(m),c.c(),x(c,1),c.m(o,null)):c&&(oe(),D(c,1,1,()=>{c=null}),ae()),d[0]&512&&ie(o,"flex-grow",m[9]?"1":"auto",!1),m[7]?g?g.p(m,d):(g=en(m),g.c(),g.m(i,null)):g&&(g.d(1),g=null),d[0]&512&&ie(i,"min-height",m[9]?"100%":"auto",!1),m[12]&&m[0]?p?(p.p(m,d),d[0]&4097&&x(p,1)):(p=nn(m),p.c(),x(p,1),p.m(f.parentNode,f)):p&&(oe(),D(p,1,1,()=>{p=null}),ae())},i(m){l||(x(c),x(p),l=!0)},o(m){D(c),D(p),l=!1},d(m){u&&u.d(m),S(t),_&&_.d(m),S(n),m&&S(r),m&&S(i),c&&c.d(),g&&g.d(),m&&S(a),p&&p.d(m),m&&S(f)}}}function rn(e,t,n){let r=0;for(;;){const i=n[r];if(i===void 0)break;let o=0;for(;;){const s=i[t][o];if(s===void 0)break;if(s===e)return!0;o++}r++}return!1}function xs(e){return Array.isArray(e)&&e.length===0||e===""||e===0||!e}function Ls(e,t,n){let r;Ml();let{root:i}=t,{components:o}=t,{layout:s}=t,{dependencies:a}=t,{title:f="Gradio"}=t,{analytics_enabled:l=!1}=t,{target:u}=t,{autoscroll:_}=t,{show_api:c=!0}=t,{show_footer:g=!0}=t,{control_page_title:p=!1}=t,{app_mode:m}=t,{theme:d}=t,{app:C}=t,T=Eo();So(e,T,v=>n(23,r=v));let y={id:s.id,type:"column",props:{},has_modes:!1,instance:{},component:{}};o.push(y);const b=Object.getPrototypeOf(async function(){}).constructor;a.forEach(v=>{if(v.js){const k=v.backend_fn?v.inputs.length===1:v.outputs.length===1;try{v.frontend_fn=new b("__fn_args",`let result = await (${v.js})(...__fn_args); + return ${k} ? [result] : result;`)}catch(R){console.error("Could not parse custom js method."),console.error(R)}}});let O=new URLSearchParams(window.location.search).get("view")==="api";const J=v=>{n(12,O=v);let k=new URLSearchParams(window.location.search);v?k.set("view","api"):k.delete("view"),history.replaceState(null,"","?"+k.toString())},ke=o.reduce((v,{id:k,props:R})=>{const N=rn(k,"inputs",a),H=rn(k,"outputs",a);return!N&&!H&&xs(R?.value)&&v.add(k),N&&v.add(k),v},new Set);let q=o.reduce((v,k)=>(v[k.id]=k,v),{});function W(v){return new Promise(async(k,R)=>{try{const N=await qa[v]();k({name:v,component:N})}catch(N){console.error("failed to load: "+v),console.error(N),R(N)}})}const le=new Set,te=new Map;async function ft(v){let k=q[v.id];const R=(await te.get(k.type)).component;k.component=R.Component,R.document&&(k.documentation=R.document(k.props)),R.modes&&R.modes.length>1&&(k.has_modes=!0),v.children&&(k.children=v.children.map(N=>q[N.id]),await Promise.all(v.children.map(N=>ft(N))))}o.forEach(async v=>{const k=W(v.type);le.add(k),te.set(v.type,k)});let{ready:Ve=!1}=t;Promise.all(Array.from(le)).then(()=>{ft(s).then(async()=>{n(0,Ve=!0)}).catch(v=>{console.error(v)})});function ct(v,k){const R=a[k].outputs;v.forEach((N,H)=>{if(typeof N=="object"&&N!==null&&N.__type__==="update"){for(const[ue,Y]of Object.entries(N))ue!=="__type__"&&n(13,q[R[H]].props[ue]=Y,q);n(11,y)}else n(13,q[R[H]].props.value=N,q)})}C.on("data",({data:v,fn_index:k})=>{ct(v,k);let R=T.get_status_for_fn(k);(R==="complete"||R==="error")&&a.forEach((N,H)=>{N.trigger_after===k&&(!N.trigger_only_on_success||R==="complete")&&ze(H,null)})}),C.on("status",({fn_index:v,...k})=>{T.update({...k,fn_index:v})});function _t(v,k,R){v?.props||(v.props={}),v.props[k]=R,n(11,y)}let se=[];const ze=(v,k)=>{let R=a[v];const N=T.get_status_for_fn(v);if(N==="pending"||N==="generating")return;R.cancels&&R.cancels.forEach(Y=>{C.cancel("/predict",Y)});let H={fn_index:v,data:R.inputs.map(Y=>q[Y].props.value),event_data:R.collects_event_data?k:null};R.frontend_fn?R.frontend_fn(H.data.concat(R.outputs.map(Y=>q[Y].props.value))).then(Y=>{R.backend_fn?(H.data=Y,ue()):ct(Y,v)}):R.backend_fn&&ue();function ue(){C.predict("/predict",H)}};async function to(){await wo();for(var v=u.getElementsByTagName("a"),k=0;k{let{targets:H,trigger:ue,inputs:Y,outputs:lo}=R;const so=H.map(Q=>[Q,q[Q]]);H.length===0&&!se[N]?.includes(-1)&&ue==="load"&&lo.every(Q=>q?.[Q].instance)&&Y.every(Q=>q?.[Q].instance)&&(ze(N,null),se[N]=[-1]),so.filter(Q=>!!Q&&!!Q[1]).forEach(([Q,{instance:dt}])=>{se[N]?.includes(Q)||!dt||(dt?.$on(ue,uo=>{ze(N,uo.detail)}),se[N]||(se[N]=[]),se[N].push(Q))})})}function pt(v){se=se.map(k=>k.filter(R=>R!==v))}a.forEach((v,k)=>{T.register(k,v.inputs,v.outputs)});function no(v){for(const R in v){let N=v[R],H=a[N.fn_index];N.scroll_to_output=H.scroll_to_output,N.visible=H.show_progress,_t(q[R],"loading_status",N)}const k=T.get_inputs_to_update();for(const[R,N]of k)_t(q[R],"pending",N==="pending")}const ro=({detail:v})=>pt(v),io=()=>{J(!O)},oo=()=>{J(!1)},ao=()=>{J(!1)};return e.$$set=v=>{"root"in v&&n(1,i=v.root),"components"in v&&n(19,o=v.components),"layout"in v&&n(20,s=v.layout),"dependencies"in v&&n(2,a=v.dependencies),"title"in v&&n(3,f=v.title),"analytics_enabled"in v&&n(4,l=v.analytics_enabled),"target"in v&&n(5,u=v.target),"autoscroll"in v&&n(21,_=v.autoscroll),"show_api"in v&&n(6,c=v.show_api),"show_footer"in v&&n(7,g=v.show_footer),"control_page_title"in v&&n(8,p=v.control_page_title),"app_mode"in v&&n(9,m=v.app_mode),"theme"in v&&n(10,d=v.theme),"app"in v&&n(22,C=v.app),"ready"in v&&n(0,Ve=v.ready)},e.$$.update=()=>{e.$$.dirty[0]&2097152&&To.update(v=>({...v,autoscroll:_})),e.$$.dirty[0]&8388608&&no(r)},[Ve,i,a,f,l,u,c,g,p,m,d,y,O,q,T,J,ke,to,pt,o,s,_,C,r,ro,io,oo,ao]}class Rs extends K{constructor(t){super(),$(this,t,Ls,ks,ee,{root:1,components:19,layout:20,dependencies:2,title:3,analytics_enabled:4,target:5,autoscroll:21,show_api:6,show_footer:7,control_page_title:8,app_mode:9,theme:10,app:22,ready:0},null,[-1,-1])}}var Ms=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:Rs});export{Ms as B,Ds as X}; +//# sourceMappingURL=Blocks.5efe22d4.js.map diff --git a/gradio/templates/frontend/assets/Blocks.5efe22d4.js.map b/gradio/templates/frontend/assets/Blocks.5efe22d4.js.map new file mode 100644 index 0000000000000000000000000000000000000000..166cf4bcea03b644d7414b8efca66236d76932b1 --- /dev/null +++ b/gradio/templates/frontend/assets/Blocks.5efe22d4.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"weAEA,GAAI,IAAoB,SAA2B,EAAO,CACzD,MAAO,IAAgB,CAAK,GACxB,CAAC,GAAU,CAAK,CACrB,EAEA,YAAyB,EAAO,CAC/B,MAAO,CAAC,CAAC,GAAS,MAAO,IAAU,QACpC,CAEA,YAAmB,EAAO,CACzB,GAAI,GAAc,OAAO,UAAU,SAAS,KAAK,CAAK,EAEtD,MAAO,KAAgB,mBACnB,IAAgB,iBAChB,GAAe,CAAK,CACzB,CAGA,GAAI,IAAe,MAAO,SAAW,YAAc,OAAO,IACtD,GAAqB,GAAe,OAAO,IAAI,eAAe,EAAI,MAEtE,YAAwB,EAAO,CAC9B,MAAO,GAAM,WAAa,EAC3B,CAEA,YAAqB,EAAK,CACzB,MAAO,OAAM,QAAQ,CAAG,EAAI,GAAK,EAClC,CAEA,YAAuC,EAAO,EAAS,CACtD,MAAQ,GAAQ,QAAU,IAAS,EAAQ,kBAAkB,CAAK,EAC/D,GAAU,GAAY,CAAK,EAAG,EAAO,CAAO,EAC5C,CACJ,CAEA,YAA2B,EAAQ,EAAQ,EAAS,CACnD,MAAO,GAAO,OAAO,CAAM,EAAE,IAAI,SAAS,EAAS,CAClD,MAAO,IAA8B,EAAS,CAAO,EACrD,CACF,CAEA,YAA0B,EAAK,EAAS,CACvC,GAAI,CAAC,EAAQ,YACZ,MAAO,IAER,GAAI,GAAc,EAAQ,YAAY,CAAG,EACzC,MAAO,OAAO,IAAgB,WAAa,EAAc,EAC1D,CAEA,YAAyC,EAAQ,CAChD,MAAO,QAAO,sBACX,OAAO,sBAAsB,CAAM,EAAE,OAAO,SAAS,EAAQ,CAC9D,MAAO,GAAO,qBAAqB,CAAM,EACzC,EACC,EACJ,CAEA,YAAiB,EAAQ,CACxB,MAAO,QAAO,KAAK,CAAM,EAAE,OAAO,GAAgC,CAAM,CAAC,CAC1E,CAEA,YAA4B,EAAQ,EAAU,CAC7C,GAAI,CACH,MAAO,KAAY,QAClB,CACD,MAAO,GAET,CAGA,YAA0B,EAAQ,EAAK,CACtC,MAAO,IAAmB,EAAQ,CAAG,GACjC,CAAE,QAAO,eAAe,KAAK,EAAQ,CAAG,GACvC,OAAO,qBAAqB,KAAK,EAAQ,CAAG,EAClD,CAEA,YAAqB,EAAQ,EAAQ,EAAS,CAC7C,GAAI,GAAc,GAClB,MAAI,GAAQ,kBAAkB,CAAM,GACnC,GAAQ,CAAM,EAAE,QAAQ,SAAS,EAAK,CACrC,EAAY,GAAO,GAA8B,EAAO,GAAM,CAAO,EACrE,EAEF,GAAQ,CAAM,EAAE,QAAQ,SAAS,EAAK,CACrC,CAAI,EAAiB,EAAQ,CAAG,GAIhC,CAAI,GAAmB,EAAQ,CAAG,GAAK,EAAQ,kBAAkB,EAAO,EAAI,EAC3E,EAAY,GAAO,GAAiB,EAAK,CAAO,EAAE,EAAO,GAAM,EAAO,GAAM,CAAO,EAEnF,EAAY,GAAO,GAA8B,EAAO,GAAM,CAAO,GAEtE,EACM,CACR,CAEA,YAAmB,EAAQ,EAAQ,EAAS,CAC3C,EAAU,GAAW,GACrB,EAAQ,WAAa,EAAQ,YAAc,GAC3C,EAAQ,kBAAoB,EAAQ,mBAAqB,GAGzD,EAAQ,8BAAgC,GAExC,GAAI,GAAgB,MAAM,QAAQ,CAAM,EACpC,EAAgB,MAAM,QAAQ,CAAM,EACpC,EAA4B,IAAkB,EAElD,MAAK,GAEM,EACH,EAAQ,WAAW,EAAQ,EAAQ,CAAO,EAE1C,GAAY,EAAQ,EAAQ,CAAO,EAJnC,GAA8B,EAAQ,CAAO,CAMtD,CAEA,GAAU,IAAM,SAAsB,EAAO,EAAS,CACrD,GAAI,CAAC,MAAM,QAAQ,CAAK,EACvB,KAAM,IAAI,OAAM,mCAAmC,EAGpD,MAAO,GAAM,OAAO,SAAS,EAAM,EAAM,CACxC,MAAO,IAAU,EAAM,EAAM,CAAO,GAClC,EAAE,CACN,EAEA,GAAI,IAAc,GAElB,GAAiB,GCpIjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAgBA,GAAI,IAAgB,SAAS,EAAG,EAAG,CAC/B,UAAgB,OAAO,gBAClB,CAAE,UAAW,aAAgB,QAAS,SAAU,EAAG,EAAG,CAAE,EAAE,UAAY,IACvE,SAAU,EAAG,EAAG,CAAE,OAAS,KAAK,GAAG,CAAI,MAAO,UAAU,eAAe,KAAK,EAAG,CAAC,GAAG,GAAE,GAAK,EAAE,KACzF,GAAc,EAAG,CAAC,CAC7B,EAEO,YAAmB,EAAG,EAAG,CAC5B,GAAI,MAAO,IAAM,YAAc,IAAM,KACjC,KAAM,IAAI,WAAU,uBAAyB,OAAO,CAAC,EAAI,+BAA+B,EAC5F,GAAc,EAAG,CAAC,EAClB,YAAc,CAAE,KAAK,YAAc,EACnC,EAAE,UAAY,IAAM,KAAO,OAAO,OAAO,CAAC,EAAK,GAAG,UAAY,EAAE,UAAW,GAAI,GACnF,CAEO,GAAI,GAAW,UAAW,CAC7B,SAAW,OAAO,QAAU,SAAkB,EAAG,CAC7C,OAAS,GAAG,EAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAAK,CACjD,EAAI,UAAU,GACd,OAAS,KAAK,GAAG,CAAI,MAAO,UAAU,eAAe,KAAK,EAAG,CAAC,GAAG,GAAE,GAAK,EAAE,IAE9E,MAAO,IAEJ,EAAS,MAAM,KAAM,SAAS,CACzC,EA4HO,YAAuB,EAAI,EAAM,EAAM,CAC1C,GAAI,GAAQ,UAAU,SAAW,EAAG,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,EAAI,EAAG,IAC5E,CAAI,GAAM,CAAE,KAAK,MACR,IAAI,GAAK,MAAM,UAAU,MAAM,KAAK,EAAM,EAAG,CAAC,GACnD,EAAG,GAAK,EAAK,IAGrB,MAAO,GAAG,OAAO,GAAM,MAAM,UAAU,MAAM,KAAK,CAAI,CAAC,CAC3D,CC5KO,GAAI,GACX,CAAC,SAAU,EAAW,CAElB,EAAU,EAAU,8BAAmC,GAAK,gCAE5D,EAAU,EAAU,eAAoB,GAAK,iBAE7C,EAAU,EAAU,mBAAwB,GAAK,qBAEjD,EAAU,EAAU,qBAA0B,GAAK,uBAEnD,EAAU,EAAU,sBAA2B,GAAK,wBAEpD,EAAU,EAAU,sBAA2B,GAAK,wBAEpD,EAAU,EAAU,wBAA6B,GAAK,0BAEtD,EAAU,EAAU,2BAAgC,GAAK,6BAEzD,EAAU,EAAU,uBAA4B,GAAK,yBAErD,EAAU,EAAU,0BAA+B,IAAM,4BAEzD,EAAU,EAAU,iCAAsC,IAAM,mCAEhE,EAAU,EAAU,+BAAoC,IAAM,iCAE9D,EAAU,EAAU,oCAAyC,IAAM,sCAEnE,EAAU,EAAU,qCAA0C,IAAM,uCAEpE,EAAU,EAAU,gCAAqC,IAAM,kCAE/D,EAAU,EAAU,gCAAqC,IAAM,kCAE/D,EAAU,EAAU,yCAA8C,IAAM,2CAKxE,EAAU,EAAU,yCAA8C,IAAM,2CAExE,EAAU,EAAU,iCAAsC,IAAM,mCAKhE,EAAU,EAAU,mCAAwC,IAAM,qCAIlE,EAAU,EAAU,mCAAwC,IAAM,qCAElE,EAAU,EAAU,qBAA0B,IAAM,uBAEpD,EAAU,EAAU,YAAiB,IAAM,cAE3C,EAAU,EAAU,iBAAsB,IAAM,mBAEhD,EAAU,EAAU,sBAA2B,IAAM,wBAErD,EAAU,EAAU,aAAkB,IAAM,cAChD,GAAG,GAAc,GAAY,GAAG,EC9DzB,GAAI,GACX,CAAC,SAAU,EAAM,CAIb,EAAK,EAAK,QAAa,GAAK,UAI5B,EAAK,EAAK,SAAc,GAAK,WAI7B,EAAK,EAAK,OAAY,GAAK,SAI3B,EAAK,EAAK,KAAU,GAAK,OAIzB,EAAK,EAAK,KAAU,GAAK,OAIzB,EAAK,EAAK,OAAY,GAAK,SAI3B,EAAK,EAAK,OAAY,GAAK,SAK3B,EAAK,EAAK,MAAW,GAAK,QAI1B,EAAK,EAAK,IAAS,GAAK,KAC5B,GAAG,GAAS,GAAO,GAAG,EACf,GAAI,IACX,CAAC,SAAU,EAAe,CACtB,EAAc,EAAc,OAAY,GAAK,SAC7C,EAAc,EAAc,SAAc,GAAK,UACnD,GAAG,IAAkB,IAAgB,GAAG,EAIjC,YAA0B,EAAI,CACjC,MAAO,GAAG,OAAS,EAAK,OAC5B,CACO,YAA2B,EAAI,CAClC,MAAO,GAAG,OAAS,EAAK,QAC5B,CACO,YAAyB,EAAI,CAChC,MAAO,GAAG,OAAS,EAAK,MAC5B,CACO,YAAuB,EAAI,CAC9B,MAAO,GAAG,OAAS,EAAK,IAC5B,CACO,YAAuB,EAAI,CAC9B,MAAO,GAAG,OAAS,EAAK,IAC5B,CACO,YAAyB,EAAI,CAChC,MAAO,GAAG,OAAS,EAAK,MAC5B,CACO,YAAyB,EAAI,CAChC,MAAO,GAAG,OAAS,EAAK,MAC5B,CACO,YAAwB,EAAI,CAC/B,MAAO,GAAG,OAAS,EAAK,KAC5B,CACO,YAAsB,EAAI,CAC7B,MAAO,GAAG,OAAS,EAAK,GAC5B,CACO,YAA0B,EAAI,CACjC,MAAO,CAAC,CAAE,IAAM,MAAO,IAAO,UAAY,EAAG,OAAS,GAAc,OACxE,CACO,YAA4B,EAAI,CACnC,MAAO,CAAC,CAAE,IAAM,MAAO,IAAO,UAAY,EAAG,OAAS,GAAc,SACxE,CC/EO,GAAI,IAAwB,+CCI/B,GAAkB,4KAOf,YAA+B,EAAU,CAC5C,GAAI,GAAS,GACb,SAAS,QAAQ,GAAiB,SAAU,EAAO,CAC/C,GAAI,GAAM,EAAM,OAChB,OAAQ,EAAM,QAEL,IACD,EAAO,IAAM,IAAQ,EAAI,OAAS,IAAQ,EAAI,SAAW,QACzD,UAEC,IACD,EAAO,KAAO,IAAQ,EAAI,UAAY,UACtC,UACC,QACA,QACA,QACA,IACD,KAAM,IAAI,YAAW,8DAA8D,MAElF,QACA,IACD,KAAM,IAAI,YAAW,4CAA4C,MAEhE,QACA,IACD,EAAO,MAAQ,CAAC,UAAW,UAAW,QAAS,OAAQ,QAAQ,EAAE,EAAM,GACvE,UAEC,QACA,IACD,KAAM,IAAI,YAAW,yCAAyC,MAC7D,IACD,EAAO,IAAM,CAAC,UAAW,SAAS,EAAE,EAAM,GAC1C,UACC,QACA,QACA,IACD,KAAM,IAAI,YAAW,2DAA2D,MAE/E,IACD,EAAO,QAAU,IAAQ,EAAI,QAAU,IAAQ,EAAI,SAAW,QAC9D,UACC,IACD,GAAI,EAAM,EACN,KAAM,IAAI,YAAW,+CAA+C,EAExE,EAAO,QAAU,CAAC,QAAS,OAAQ,SAAU,OAAO,EAAE,EAAM,GAC5D,UACC,IACD,GAAI,EAAM,EACN,KAAM,IAAI,YAAW,+CAA+C,EAExE,EAAO,QAAU,CAAC,QAAS,OAAQ,SAAU,OAAO,EAAE,EAAM,GAC5D,UAEC,IACD,EAAO,OAAS,GAChB,UACC,QACA,IACD,KAAM,IAAI,YAAW,4DAA4D,MAEhF,IACD,EAAO,UAAY,MACnB,EAAO,KAAO,CAAC,UAAW,SAAS,EAAE,EAAM,GAC3C,UACC,IACD,EAAO,UAAY,MACnB,EAAO,KAAO,CAAC,UAAW,SAAS,EAAE,EAAM,GAC3C,UACC,IACD,EAAO,UAAY,MACnB,EAAO,KAAO,CAAC,UAAW,SAAS,EAAE,EAAM,GAC3C,UACC,IACD,EAAO,UAAY,MACnB,EAAO,KAAO,CAAC,UAAW,SAAS,EAAE,EAAM,GAC3C,UACC,QACA,QACA,IACD,KAAM,IAAI,YAAW,kEAAkE,MAEtF,IACD,EAAO,OAAS,CAAC,UAAW,SAAS,EAAE,EAAM,GAC7C,UAEC,IACD,EAAO,OAAS,CAAC,UAAW,SAAS,EAAE,EAAM,GAC7C,UACC,QACA,IACD,KAAM,IAAI,YAAW,4DAA4D,MAEhF,IACD,EAAO,aAAe,EAAM,EAAI,QAAU,OAC1C,UACC,QACA,QACA,QACA,QACA,QACA,IACD,KAAM,IAAI,YAAW,sEAAsE,EAEnG,MAAO,GACV,EACM,CACX,CCvHO,GAAI,IAAoB,wCCCxB,YAAuC,EAAU,CACpD,GAAI,EAAS,SAAW,EACpB,KAAM,IAAI,OAAM,iCAAiC,EAOrD,OAJI,GAAe,EACd,MAAM,EAAiB,EACvB,OAAO,SAAU,EAAG,CAAE,MAAO,GAAE,OAAS,EAAI,EAC7C,EAAS,GACJ,EAAK,EAAG,EAAiB,EAAc,EAAK,EAAe,OAAQ,IAAM,CAC9E,GAAI,GAAc,EAAe,GAC7B,EAAiB,EAAY,MAAM,GAAG,EAC1C,GAAI,EAAe,SAAW,EAC1B,KAAM,IAAI,OAAM,yBAAyB,EAG7C,OADI,GAAO,EAAe,GAAI,EAAU,EAAe,MAAM,CAAC,EACrD,EAAK,EAAG,EAAY,EAAS,EAAK,EAAU,OAAQ,IAAM,CAC/D,GAAI,GAAS,EAAU,GACvB,GAAI,EAAO,SAAW,EAClB,KAAM,IAAI,OAAM,yBAAyB,EAGjD,EAAO,KAAK,CAAE,KAAM,EAAM,QAAS,EAAS,EAEhD,MAAO,EACX,CACA,YAAuB,EAAM,CACzB,MAAO,GAAK,QAAQ,UAAW,EAAE,CACrC,CACA,GAAI,IAA2B,mCAC3B,GAA8B,wBAC9B,GAAsB,0BACtB,GAA8B,SAClC,YAAmC,EAAK,CACpC,GAAI,GAAS,GACb,MAAI,GAAI,EAAI,OAAS,KAAO,IACxB,EAAO,iBAAmB,gBAErB,EAAI,EAAI,OAAS,KAAO,KAC7B,GAAO,iBAAmB,iBAE9B,EAAI,QAAQ,GAA6B,SAAU,EAAG,EAAI,EAAI,CAE1D,MAAI,OAAO,IAAO,SACd,GAAO,yBAA2B,EAAG,OACrC,EAAO,yBAA2B,EAAG,QAGpC,CAAI,GAAO,IACZ,EAAO,yBAA2B,EAAG,OAGpC,CAAI,CAAG,KAAO,IACf,EAAO,yBAA2B,EAAG,OAIrC,GAAO,yBAA2B,EAAG,OACrC,EAAO,yBACH,EAAG,OAAU,OAAO,IAAO,SAAW,EAAG,OAAS,IAEnD,GACV,EACM,CACX,CACA,YAAmB,EAAK,CACpB,OAAQ,OACC,YACD,MAAO,CACH,YAAa,YAEhB,sBACA,KACD,MAAO,CACH,aAAc,kBAEjB,kBACA,KACD,MAAO,CACH,YAAa,cAEhB,6BACA,MACD,MAAO,CACH,YAAa,SACb,aAAc,kBAEjB,uBACA,KACD,MAAO,CACH,YAAa,kBAEhB,kCACA,MACD,MAAO,CACH,YAAa,aACb,aAAc,kBAEjB,iBACA,KACD,MAAO,CACH,YAAa,SAG7B,CACA,YAAkD,EAAM,CAEpD,GAAI,GAaJ,GAZA,CAAI,CAAK,KAAO,KAAO,EAAK,KAAO,IAC/B,GAAS,CACL,SAAU,eAEd,EAAO,EAAK,MAAM,CAAC,GAEd,EAAK,KAAO,KACjB,GAAS,CACL,SAAU,cAEd,EAAO,EAAK,MAAM,CAAC,GAEnB,EAAQ,CACR,GAAI,GAAc,EAAK,MAAM,EAAG,CAAC,EASjC,GARA,CAAI,GAAgB,KAChB,GAAO,YAAc,SACrB,EAAO,EAAK,MAAM,CAAC,GAEd,IAAgB,MACrB,GAAO,YAAc,aACrB,EAAO,EAAK,MAAM,CAAC,GAEnB,CAAC,GAA4B,KAAK,CAAI,EACtC,KAAM,IAAI,OAAM,2CAA2C,EAE/D,EAAO,qBAAuB,EAAK,OAEvC,MAAO,EACX,CACA,YAA8B,EAAK,CAC/B,GAAI,GAAS,GACT,EAAW,GAAU,CAAG,EAC5B,MAAI,IAGG,CACX,CAIO,YAA6B,EAAQ,CAExC,OADI,GAAS,GACJ,EAAK,EAAG,EAAW,EAAQ,EAAK,EAAS,OAAQ,IAAM,CAC5D,GAAI,GAAQ,EAAS,GACrB,OAAQ,EAAM,UACL,cACA,IACD,EAAO,MAAQ,UACf,aACC,QACD,EAAO,MAAQ,UACf,EAAO,MAAQ,IACf,aACC,WACD,EAAO,MAAQ,WACf,EAAO,SAAW,EAAM,QAAQ,GAChC,aACC,gBACA,KACD,EAAO,YAAc,GACrB,aACC,wBACA,IACD,EAAO,sBAAwB,EAC/B,aACC,mBACA,OACD,EAAO,MAAQ,OACf,EAAO,KAAO,GAAc,EAAM,QAAQ,EAAE,EAC5C,aACC,oBACA,IACD,EAAO,SAAW,UAClB,EAAO,eAAiB,QACxB,aACC,mBACA,KACD,EAAO,SAAW,UAClB,EAAO,eAAiB,OACxB,aACC,aACD,EAAS,EAAS,EAAS,EAAS,GAAI,CAAM,EAAG,CAAE,SAAU,aAAc,EAAG,EAAM,QAAQ,OAAO,SAAU,EAAK,EAAK,CAAE,MAAQ,GAAS,EAAS,GAAI,CAAG,EAAG,GAAqB,CAAG,CAAC,GAAO,EAAE,CAAC,EAChM,aACC,cACD,EAAS,EAAS,EAAS,EAAS,GAAI,CAAM,EAAG,CAAE,SAAU,cAAe,EAAG,EAAM,QAAQ,OAAO,SAAU,EAAK,EAAK,CAAE,MAAQ,GAAS,EAAS,GAAI,CAAG,EAAG,GAAqB,CAAG,CAAC,GAAO,EAAE,CAAC,EACjM,aACC,kBACD,EAAO,SAAW,WAClB,aAEC,oBACD,EAAO,gBAAkB,eACzB,EAAO,YAAc,SACrB,aACC,mBACD,EAAO,gBAAkB,OACzB,EAAO,YAAc,QACrB,aACC,uBACD,EAAO,gBAAkB,OACzB,EAAO,YAAc,OACrB,aACC,sBACD,EAAO,gBAAkB,SACzB,aACC,QACD,EAAO,MAAQ,WAAW,EAAM,QAAQ,EAAE,EAC1C,aAEC,gBACD,GAAI,EAAM,QAAQ,OAAS,EACvB,KAAM,IAAI,YAAW,0DAA0D,EAEnF,EAAM,QAAQ,GAAG,QAAQ,GAAqB,SAAU,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,CAC3E,GAAI,EACA,EAAO,qBAAuB,EAAG,WAEhC,IAAI,GAAM,EACX,KAAM,IAAI,OAAM,oDAAoD,EAEnE,GAAI,EACL,KAAM,IAAI,OAAM,kDAAkD,EAEtE,MAAO,GACV,EACD,SAGR,GAAI,GAA4B,KAAK,EAAM,IAAI,EAAG,CAC9C,EAAO,qBAAuB,EAAM,KAAK,OACzC,SAEJ,GAAI,GAAyB,KAAK,EAAM,IAAI,EAAG,CAI3C,GAAI,EAAM,QAAQ,OAAS,EACvB,KAAM,IAAI,YAAW,+DAA+D,EAExF,EAAM,KAAK,QAAQ,GAA0B,SAAU,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,CAE1E,MAAI,KAAO,IACP,EAAO,sBAAwB,EAAG,OAGjC,CAAI,EAAM,EAAG,KAAO,IACrB,EAAO,sBAAwB,EAAG,OAGjC,CAAI,EAAM,EACX,GAAO,sBAAwB,EAAG,OAClC,EAAO,sBAAwB,EAAG,OAAS,EAAG,QAG9C,GAAO,sBAAwB,EAAG,OAClC,EAAO,sBAAwB,EAAG,QAE/B,GACV,EACD,GAAI,GAAM,EAAM,QAAQ,GAExB,CAAI,GAAQ,IACR,EAAS,EAAS,EAAS,GAAI,CAAM,EAAG,CAAE,oBAAqB,iBAAkB,EAE5E,GACL,GAAS,EAAS,EAAS,GAAI,CAAM,EAAG,GAA0B,CAAG,CAAC,GAE1E,SAGJ,GAAI,GAA4B,KAAK,EAAM,IAAI,EAAG,CAC9C,EAAS,EAAS,EAAS,GAAI,CAAM,EAAG,GAA0B,EAAM,IAAI,CAAC,EAC7E,SAEJ,GAAI,GAAW,GAAU,EAAM,IAAI,EACnC,CAAI,EACA,GAAS,EAAS,EAAS,GAAI,CAAM,EAAG,CAAQ,GAEpD,GAAI,GAAsC,GAAyC,EAAM,IAAI,EAC7F,CAAI,EACA,GAAS,EAAS,EAAS,GAAI,CAAM,EAAG,CAAmC,GAGnF,MAAO,EACX,CCtSA,GAAI,IAMA,GAA8B,GAAI,QAAO,IAAI,OAAO,GAAsB,OAAQ,GAAG,CAAC,EACtF,GAA4B,GAAI,QAAO,GAAG,OAAO,GAAsB,OAAQ,IAAI,CAAC,EACxF,WAAwB,EAAO,EAAK,CAChC,MAAO,CAAE,MAAO,EAAO,IAAK,EAChC,CAGA,GAAI,IAAsB,CAAC,CAAC,OAAO,UAAU,WACzC,GAAyB,CAAC,CAAC,OAAO,cAClC,GAAuB,CAAC,CAAC,OAAO,YAChC,GAAuB,CAAC,CAAC,OAAO,UAAU,YAC1C,GAAe,CAAC,CAAC,OAAO,UAAU,UAClC,GAAa,CAAC,CAAC,OAAO,UAAU,QAChC,GAAyB,CAAC,CAAC,OAAO,cAClC,GAAgB,GACd,OAAO,cACP,SAAU,EAAG,CACX,MAAQ,OAAO,IAAM,UACjB,SAAS,CAAC,GACV,KAAK,MAAM,CAAC,IAAM,GAClB,KAAK,IAAI,CAAC,GAAK,kBAGvB,GAAyB,GAC7B,GAAI,CACA,GAAI,IAAK,GAAG,4CAA6C,IAAI,EAO7D,GAA2B,KAAK,GAAG,KAAK,GAAG,KAAO,MAAQ,KAAO,OAAS,OAAS,GAAG,MAAQ,GAClG,MACA,CACI,GAAyB,EAC7B,CACA,GAAI,IAAa,GAET,SAAoB,EAAG,EAAQ,EAAU,CACrC,MAAO,GAAE,WAAW,EAAQ,CAAQ,GAGxC,SAAoB,EAAG,EAAQ,EAAU,CACrC,MAAO,GAAE,MAAM,EAAU,EAAW,EAAO,MAAM,IAAM,GAE/D,GAAgB,GACd,OAAO,cAEL,UAAyB,CAErB,OADI,GAAa,GACR,EAAK,EAAG,EAAK,UAAU,OAAQ,IACpC,EAAW,GAAM,UAAU,GAM/B,OAJI,GAAW,GACX,EAAS,EAAW,OACpB,EAAI,EACJ,EACG,EAAS,GAAG,CAEf,GADA,EAAO,EAAW,KACd,EAAO,QACP,KAAM,YAAW,EAAO,4BAA4B,EACxD,GACI,EAAO,MACD,OAAO,aAAa,CAAI,EACxB,OAAO,aAAe,KAAQ,QAAY,IAAM,MAAS,EAAO,KAAS,KAAM,EAE7F,MAAO,IAEf,GAEJ,GACM,OAAO,YAEL,SAAqB,EAAS,CAE1B,OADI,GAAM,GACD,EAAK,EAAG,EAAY,EAAS,EAAK,EAAU,OAAQ,IAAM,CAC/D,GAAI,GAAK,EAAU,GAAK,EAAI,EAAG,GAAI,EAAI,EAAG,GAC1C,EAAI,GAAK,EAEb,MAAO,IAEf,GAAc,GAEV,SAAqB,EAAG,EAAO,CAC3B,MAAO,GAAE,YAAY,CAAK,GAG9B,SAAqB,EAAG,EAAO,CAC3B,GAAI,GAAO,EAAE,OACb,GAAI,IAAQ,GAAK,GAAS,GAG1B,IAAI,GAAQ,EAAE,WAAW,CAAK,EAC1B,EACJ,MAAO,GAAQ,OACX,EAAQ,OACR,EAAQ,IAAM,GACb,GAAS,EAAE,WAAW,EAAQ,CAAC,GAAK,OACrC,EAAS,MACP,EACE,GAAQ,OAAW,IAAO,GAAS,OAAU,QAE7D,GAAY,GAER,SAAmB,EAAG,CAClB,MAAO,GAAE,aAGb,SAAmB,EAAG,CAClB,MAAO,GAAE,QAAQ,GAA6B,EAAE,GAExD,GAAU,GAEN,SAAiB,EAAG,CAChB,MAAO,GAAE,WAGb,SAAiB,EAAG,CAChB,MAAO,GAAE,QAAQ,GAA2B,EAAE,GAG1D,YAAY,EAAG,EAAM,CACjB,MAAO,IAAI,QAAO,EAAG,CAAI,CAC7B,CAEA,GAAI,IACJ,GAAI,GAAwB,CAExB,GAAI,IAAyB,GAAG,4CAA6C,IAAI,EACjF,GAAyB,SAAgC,EAAG,EAAO,CAC/D,GAAI,GACJ,GAAuB,UAAY,EACnC,GAAI,GAAQ,GAAuB,KAAK,CAAC,EACzC,MAAQ,GAAK,EAAM,MAAQ,MAAQ,IAAO,OAAS,EAAK,GAEhE,KAGI,IAAyB,SAAgC,EAAG,EAAO,CAE/D,OADI,GAAQ,KACC,CACT,GAAI,GAAI,GAAY,EAAG,CAAK,EAC5B,GAAI,IAAM,QAAa,GAAc,CAAC,GAAK,GAAiB,CAAC,EACzD,MAEJ,EAAM,KAAK,CAAC,EACZ,GAAS,GAAK,MAAU,EAAI,EAEhC,MAAO,IAAc,MAAM,OAAQ,CAAK,GAGhD,GAAI,IAAwB,UAAY,CACpC,WAAgB,EAAS,EAAS,CAC9B,CAAI,GAAY,QAAU,GAAU,IACpC,KAAK,QAAU,EACf,KAAK,SAAW,CAAE,OAAQ,EAAG,KAAM,EAAG,OAAQ,GAC9C,KAAK,UAAY,CAAC,CAAC,EAAQ,UAC3B,KAAK,oBAAsB,CAAC,CAAC,EAAQ,oBACrC,KAAK,qBAAuB,CAAC,CAAC,EAAQ,qBAE1C,SAAO,UAAU,MAAQ,UAAY,CACjC,GAAI,KAAK,WAAa,EAClB,KAAM,OAAM,8BAA8B,EAE9C,MAAO,MAAK,aAAa,EAAG,GAAI,EAAK,GAEzC,EAAO,UAAU,aAAe,SAAU,EAAc,EAAe,EAAmB,CAEtF,OADI,GAAW,GACR,CAAC,KAAK,SAAS,CAClB,GAAI,GAAO,KAAK,OAChB,GAAI,IAAS,IAAe,CACxB,GAAI,GAAS,KAAK,cAAc,EAAc,CAAiB,EAC/D,GAAI,EAAO,IACP,MAAO,GAEX,EAAS,KAAK,EAAO,GAAG,MAEvB,IAAI,IAAS,KAAiB,EAAe,EAC9C,MAEC,GAAI,IAAS,IACb,KAAkB,UAAY,IAAkB,iBAAkB,CACnE,GAAI,GAAW,KAAK,gBACpB,KAAK,OACL,EAAS,KAAK,CACV,KAAM,EAAK,MACX,SAAU,EAAe,EAAU,KAAK,eAAe,EAC1D,UAEI,IAAS,IACd,CAAC,KAAK,WACN,KAAK,SAAW,GAClB,CACE,GAAI,EACA,MAGA,MAAO,MAAK,MAAM,EAAU,sBAAuB,EAAe,KAAK,gBAAiB,KAAK,eAAe,CAAC,UAG5G,IAAS,IACd,CAAC,KAAK,WACN,GAAS,KAAK,QAAU,CAAC,EAAG,CAC5B,GAAI,GAAS,KAAK,SAAS,EAAc,CAAa,EACtD,GAAI,EAAO,IACP,MAAO,GAEX,EAAS,KAAK,EAAO,GAAG,MAEvB,CACD,GAAI,GAAS,KAAK,aAAa,EAAc,CAAa,EAC1D,GAAI,EAAO,IACP,MAAO,GAEX,EAAS,KAAK,EAAO,GAAG,IAGhC,MAAO,CAAE,IAAK,EAAU,IAAK,OAoBjC,EAAO,UAAU,SAAW,SAAU,EAAc,EAAe,CAC/D,GAAI,GAAgB,KAAK,gBACzB,KAAK,OACL,GAAI,GAAU,KAAK,eAEnB,GADA,KAAK,YACD,KAAK,OAAO,IAAI,EAEhB,MAAO,CACH,IAAK,CACD,KAAM,EAAK,QACX,MAAO,IAAI,OAAO,EAAS,IAAI,EAC/B,SAAU,EAAe,EAAe,KAAK,eAAe,GAEhE,IAAK,MAGR,GAAI,KAAK,OAAO,GAAG,EAAG,CACvB,GAAI,GAAiB,KAAK,aAAa,EAAe,EAAG,EAAe,EAAI,EAC5E,GAAI,EAAe,IACf,MAAO,GAEX,GAAI,GAAW,EAAe,IAE1B,EAAsB,KAAK,gBAC/B,GAAI,KAAK,OAAO,IAAI,EAAG,CACnB,GAAI,KAAK,SAAW,CAAC,GAAS,KAAK,MAAM,EACrC,MAAO,MAAK,MAAM,EAAU,YAAa,EAAe,EAAqB,KAAK,eAAe,CAAC,EAEtG,GAAI,GAA8B,KAAK,gBACnC,EAAiB,KAAK,eAC1B,MAAI,KAAY,EACL,KAAK,MAAM,EAAU,sBAAuB,EAAe,EAA6B,KAAK,eAAe,CAAC,EAExH,MAAK,YACD,CAAC,IAAK,OAAO,GAAG,EAGb,CACH,IAAK,CACD,KAAM,EAAK,IACX,MAAO,EACP,SAAU,EACV,SAAU,EAAe,EAAe,KAAK,eAAe,GAEhE,IAAK,MATE,KAAK,MAAM,EAAU,YAAa,EAAe,EAAqB,KAAK,eAAe,CAAC,OAatG,OAAO,MAAK,MAAM,EAAU,aAAc,EAAe,EAAe,KAAK,eAAe,CAAC,MAIjG,OAAO,MAAK,MAAM,EAAU,YAAa,EAAe,EAAe,KAAK,eAAe,CAAC,GAMpG,EAAO,UAAU,aAAe,UAAY,CACxC,GAAI,GAAc,KAAK,SAEvB,IADA,KAAK,OACE,CAAC,KAAK,SAAW,GAA4B,KAAK,MAAM,GAC3D,KAAK,OAET,MAAO,MAAK,QAAQ,MAAM,EAAa,KAAK,QAAQ,GAExD,EAAO,UAAU,aAAe,SAAU,EAAc,EAAe,CAGnE,OAFI,GAAQ,KAAK,gBACb,EAAQ,KACC,CACT,GAAI,GAAmB,KAAK,cAAc,CAAa,EACvD,GAAI,EAAkB,CAClB,GAAS,EACT,SAEJ,GAAI,GAAsB,KAAK,iBAAiB,EAAc,CAAa,EAC3E,GAAI,EAAqB,CACrB,GAAS,EACT,SAEJ,GAAI,GAAuB,KAAK,2BAChC,GAAI,EAAsB,CACtB,GAAS,EACT,SAEJ,MAEJ,GAAI,GAAW,EAAe,EAAO,KAAK,eAAe,EACzD,MAAO,CACH,IAAK,CAAE,KAAM,EAAK,QAAS,MAAO,EAAO,SAAU,GACnD,IAAK,OAGb,EAAO,UAAU,yBAA2B,UAAY,CACpD,MAAI,CAAC,KAAK,SACN,KAAK,SAAW,IACf,MAAK,WAEF,CAAC,GAAgB,KAAK,QAAU,CAAC,GACrC,MAAK,OACE,KAEJ,MAOX,EAAO,UAAU,cAAgB,SAAU,EAAe,CACtD,GAAI,KAAK,SAAW,KAAK,SAAW,GAChC,MAAO,MAIX,OAAQ,KAAK,YACJ,IAED,YAAK,OACL,KAAK,OACE,QAEN,SACA,QACA,QACA,KACD,UACC,IACD,GAAI,IAAkB,UAAY,IAAkB,gBAChD,MAEJ,MAAO,cAEP,MAAO,MAEf,KAAK,OACL,GAAI,GAAa,CAAC,KAAK,MAAM,EAG7B,IAFA,KAAK,OAEE,CAAC,KAAK,SAAS,CAClB,GAAI,GAAK,KAAK,OACd,GAAI,IAAO,GACP,GAAI,KAAK,SAAW,GAChB,EAAW,KAAK,EAAE,EAElB,KAAK,WAEJ,CAED,KAAK,OACL,UAIJ,GAAW,KAAK,CAAE,EAEtB,KAAK,OAET,MAAO,IAAc,MAAM,OAAQ,CAAU,GAEjD,EAAO,UAAU,iBAAmB,SAAU,EAAc,EAAe,CACvE,GAAI,KAAK,QACL,MAAO,MAEX,GAAI,GAAK,KAAK,OACd,MAAI,KAAO,IACP,IAAO,KACN,IAAO,IACH,KAAkB,UAAY,IAAkB,kBACpD,IAAO,KAAiB,EAAe,EACjC,KAGP,MAAK,OACE,GAAc,CAAE,IAG/B,EAAO,UAAU,cAAgB,SAAU,EAAc,EAAmB,CACxE,GAAI,GAAuB,KAAK,gBAGhC,GAFA,KAAK,OACL,KAAK,YACD,KAAK,QACL,MAAO,MAAK,MAAM,EAAU,8BAA+B,EAAe,EAAsB,KAAK,eAAe,CAAC,EAEzH,GAAI,KAAK,SAAW,IAChB,YAAK,OACE,KAAK,MAAM,EAAU,eAAgB,EAAe,EAAsB,KAAK,eAAe,CAAC,EAG1G,GAAI,GAAQ,KAAK,4BAA4B,MAC7C,GAAI,CAAC,EACD,MAAO,MAAK,MAAM,EAAU,mBAAoB,EAAe,EAAsB,KAAK,eAAe,CAAC,EAG9G,GADA,KAAK,YACD,KAAK,QACL,MAAO,MAAK,MAAM,EAAU,8BAA+B,EAAe,EAAsB,KAAK,eAAe,CAAC,EAEzH,OAAQ,KAAK,YAEJ,KACD,YAAK,OACE,CACH,IAAK,CACD,KAAM,EAAK,SAEX,MAAO,EACP,SAAU,EAAe,EAAsB,KAAK,eAAe,GAEvE,IAAK,UAIR,IAGD,MAFA,MAAK,OACL,KAAK,YACD,KAAK,QACE,KAAK,MAAM,EAAU,8BAA+B,EAAe,EAAsB,KAAK,eAAe,CAAC,EAElH,KAAK,qBAAqB,EAAc,EAAmB,EAAO,CAAoB,UAG7F,MAAO,MAAK,MAAM,EAAU,mBAAoB,EAAe,EAAsB,KAAK,eAAe,CAAC,IAOtH,EAAO,UAAU,0BAA4B,UAAY,CACrD,GAAI,GAAmB,KAAK,gBACxB,EAAc,KAAK,SACnB,EAAQ,GAAuB,KAAK,QAAS,CAAW,EACxD,EAAY,EAAc,EAAM,OACpC,KAAK,OAAO,CAAS,EACrB,GAAI,GAAc,KAAK,gBACnB,EAAW,EAAe,EAAkB,CAAW,EAC3D,MAAO,CAAE,MAAO,EAAO,SAAU,IAErC,EAAO,UAAU,qBAAuB,SAAU,EAAc,EAAmB,EAAO,EAAsB,CAC5G,GAAI,GAIA,EAAoB,KAAK,gBACzB,EAAU,KAAK,4BAA4B,MAC3C,EAAkB,KAAK,gBAC3B,OAAQ,OACC,GAED,MAAO,MAAK,MAAM,EAAU,qBAAsB,EAAe,EAAmB,CAAe,CAAC,MACnG,aACA,WACA,OAAQ,CAIT,KAAK,YACL,GAAI,GAAmB,KACvB,GAAI,KAAK,OAAO,GAAG,EAAG,CAClB,KAAK,YACL,GAAI,GAAqB,KAAK,gBAC1B,EAAS,KAAK,gCAClB,GAAI,EAAO,IACP,MAAO,GAEX,GAAI,GAAQ,GAAQ,EAAO,GAAG,EAC9B,GAAI,EAAM,SAAW,EACjB,MAAO,MAAK,MAAM,EAAU,sBAAuB,EAAe,KAAK,gBAAiB,KAAK,eAAe,CAAC,EAEjH,GAAI,GAAgB,EAAe,EAAoB,KAAK,eAAe,EAC3E,EAAmB,CAAE,MAAO,EAAO,cAAe,GAEtD,GAAI,GAAiB,KAAK,sBAAsB,CAAoB,EACpE,GAAI,EAAe,IACf,MAAO,GAEX,GAAI,GAAa,EAAe,EAAsB,KAAK,eAAe,EAE1E,GAAI,GAAoB,GAA+E,GAAiB,MAAO,KAAM,CAAC,EAAG,CAErI,GAAI,GAAW,GAAU,EAAiB,MAAM,MAAM,CAAC,CAAC,EACxD,GAAI,IAAY,SAAU,CACtB,GAAI,GAAS,KAAK,8BAA8B,EAAU,EAAiB,aAAa,EACxF,MAAI,GAAO,IACA,EAEJ,CACH,IAAK,CAAE,KAAM,EAAK,OAAQ,MAAO,EAAO,SAAU,EAAY,MAAO,EAAO,KAC5E,IAAK,UAGR,CACD,GAAI,EAAS,SAAW,EACpB,MAAO,MAAK,MAAM,EAAU,0BAA2B,CAAU,EAErE,GAAI,GAAQ,CACR,KAAM,GAAc,SACpB,QAAS,EACT,SAAU,EAAiB,cAC3B,cAAe,KAAK,qBACd,GAAsB,CAAQ,EAC9B,IAEN,EAAO,IAAY,OAAS,EAAK,KAAO,EAAK,KACjD,MAAO,CACH,IAAK,CAAE,KAAM,EAAM,MAAO,EAAO,SAAU,EAAY,MAAO,GAC9D,IAAK,OAKjB,MAAO,CACH,IAAK,CACD,KAAM,IAAY,SACZ,EAAK,OACL,IAAY,OACR,EAAK,KACL,EAAK,KACf,MAAO,EACP,SAAU,EACV,MAAQ,GAAyE,GAAiB,SAAW,MAAQ,IAAO,OAAS,EAAK,MAE9I,IAAK,UAGR,aACA,oBACA,SAAU,CAIX,GAAI,GAAoB,KAAK,gBAE7B,GADA,KAAK,YACD,CAAC,KAAK,OAAO,GAAG,EAChB,MAAO,MAAK,MAAM,EAAU,+BAAgC,EAAe,EAAmB,EAAS,GAAI,CAAiB,CAAC,CAAC,EAElI,KAAK,YASL,GAAI,GAAwB,KAAK,4BAC7B,EAAe,EACnB,GAAI,IAAY,UAAY,EAAsB,QAAU,SAAU,CAClE,GAAI,CAAC,KAAK,OAAO,GAAG,EAChB,MAAO,MAAK,MAAM,EAAU,oCAAqC,EAAe,KAAK,gBAAiB,KAAK,eAAe,CAAC,EAE/H,KAAK,YACL,GAAI,GAAS,KAAK,uBAAuB,EAAU,oCAAqC,EAAU,oCAAoC,EACtI,GAAI,EAAO,IACP,MAAO,GAGX,KAAK,YACL,EAAwB,KAAK,4BAC7B,EAAe,EAAO,IAE1B,GAAI,GAAgB,KAAK,8BAA8B,EAAc,EAAS,EAAmB,CAAqB,EACtH,GAAI,EAAc,IACd,MAAO,GAEX,GAAI,GAAiB,KAAK,sBAAsB,CAAoB,EACpE,GAAI,EAAe,IACf,MAAO,GAEX,GAAI,GAAa,EAAe,EAAsB,KAAK,eAAe,EAC1E,MAAI,KAAY,SACL,CACH,IAAK,CACD,KAAM,EAAK,OACX,MAAO,EACP,QAAS,GAAY,EAAc,GAAG,EACtC,SAAU,GAEd,IAAK,MAIF,CACH,IAAK,CACD,KAAM,EAAK,OACX,MAAO,EACP,QAAS,GAAY,EAAc,GAAG,EACtC,OAAQ,EACR,WAAY,IAAY,SAAW,WAAa,UAChD,SAAU,GAEd,IAAK,cAKb,MAAO,MAAK,MAAM,EAAU,sBAAuB,EAAe,EAAmB,CAAe,CAAC,IAGjH,EAAO,UAAU,sBAAwB,SAAU,EAAsB,CAGrE,MAAI,MAAK,SAAW,KAAK,SAAW,IACzB,KAAK,MAAM,EAAU,8BAA+B,EAAe,EAAsB,KAAK,eAAe,CAAC,EAEzH,MAAK,OACE,CAAE,IAAK,GAAM,IAAK,QAK7B,EAAO,UAAU,8BAAgC,UAAY,CAGzD,OAFI,GAAe,EACf,EAAgB,KAAK,gBAClB,CAAC,KAAK,SAAS,CAClB,GAAI,GAAK,KAAK,OACd,OAAQ,OACC,IAAc,CAGf,KAAK,OACL,GAAI,GAAqB,KAAK,gBAC9B,GAAI,CAAC,KAAK,UAAU,GAAG,EACnB,MAAO,MAAK,MAAM,EAAU,iCAAkC,EAAe,EAAoB,KAAK,eAAe,CAAC,EAE1H,KAAK,OACL,UAEC,KAAe,CAChB,GAAgB,EAChB,KAAK,OACL,UAEC,KAAe,CAChB,GAAI,EAAe,EACf,GAAgB,MAGhB,OAAO,CACH,IAAK,KAAK,QAAQ,MAAM,EAAc,OAAQ,KAAK,QAAQ,EAC3D,IAAK,MAGb,cAGA,KAAK,OACL,OAGZ,MAAO,CACH,IAAK,KAAK,QAAQ,MAAM,EAAc,OAAQ,KAAK,QAAQ,EAC3D,IAAK,OAGb,EAAO,UAAU,8BAAgC,SAAU,EAAU,EAAU,CAC3E,GAAI,GAAS,GACb,GAAI,CACA,EAAS,GAA8B,CAAQ,OAEnD,CACI,MAAO,MAAK,MAAM,EAAU,wBAAyB,CAAQ,EAEjE,MAAO,CACH,IAAK,CACD,KAAM,GAAc,OACpB,OAAQ,EACR,SAAU,EACV,cAAe,KAAK,qBACd,GAAoB,CAAM,EAC1B,IAEV,IAAK,OAab,EAAO,UAAU,8BAAgC,SAAU,EAAc,EAAe,EAAgB,EAAuB,CAS3H,OARI,GACA,EAAiB,GACjB,EAAU,GACV,EAAkB,GAAI,KACtB,EAAW,EAAsB,MAAO,EAAmB,EAAsB,WAIxE,CACT,GAAI,EAAS,SAAW,EAAG,CACvB,GAAI,GAAgB,KAAK,gBACzB,GAAI,IAAkB,UAAY,KAAK,OAAO,GAAG,EAAG,CAEhD,GAAI,GAAS,KAAK,uBAAuB,EAAU,gCAAiC,EAAU,gCAAgC,EAC9H,GAAI,EAAO,IACP,MAAO,GAEX,EAAmB,EAAe,EAAe,KAAK,eAAe,EACrE,EAAW,KAAK,QAAQ,MAAM,EAAc,OAAQ,KAAK,QAAQ,MAGjE,OAIR,GAAI,EAAgB,IAAI,CAAQ,EAC5B,MAAO,MAAK,MAAM,IAAkB,SAC9B,EAAU,mCACV,EAAU,mCAAoC,CAAgB,EAExE,CAAI,GAAa,SACb,GAAiB,IAKrB,KAAK,YACL,GAAI,GAAuB,KAAK,gBAChC,GAAI,CAAC,KAAK,OAAO,GAAG,EAChB,MAAO,MAAK,MAAM,IAAkB,SAC9B,EAAU,yCACV,EAAU,yCAA0C,EAAe,KAAK,gBAAiB,KAAK,eAAe,CAAC,EAExH,GAAI,GAAiB,KAAK,aAAa,EAAe,EAAG,EAAe,CAAc,EACtF,GAAI,EAAe,IACf,MAAO,GAEX,GAAI,GAAiB,KAAK,sBAAsB,CAAoB,EACpE,GAAI,EAAe,IACf,MAAO,GAEX,EAAQ,KAAK,CACT,EACA,CACI,MAAO,EAAe,IACtB,SAAU,EAAe,EAAsB,KAAK,eAAe,GAE1E,EAED,EAAgB,IAAI,CAAQ,EAE5B,KAAK,YACJ,EAAK,KAAK,4BAA6B,EAAW,EAAG,MAAO,EAAmB,EAAG,SAEvF,MAAI,GAAQ,SAAW,EACZ,KAAK,MAAM,IAAkB,SAC9B,EAAU,gCACV,EAAU,gCAAiC,EAAe,KAAK,gBAAiB,KAAK,eAAe,CAAC,EAE3G,KAAK,qBAAuB,CAAC,EACtB,KAAK,MAAM,EAAU,qBAAsB,EAAe,KAAK,gBAAiB,KAAK,eAAe,CAAC,EAEzG,CAAE,IAAK,EAAS,IAAK,OAEhC,EAAO,UAAU,uBAAyB,SAAU,EAAmB,EAAoB,CACvF,GAAI,GAAO,EACP,EAAmB,KAAK,gBAC5B,CAAI,IAAK,OAAO,GAAG,GAEV,KAAK,OAAO,GAAG,GACpB,GAAO,IAIX,OAFI,GAAY,GACZ,EAAU,EACP,CAAC,KAAK,SAAS,CAClB,GAAI,GAAK,KAAK,OACd,GAAI,GAAM,IAAgB,GAAM,GAC5B,EAAY,GACZ,EAAU,EAAU,GAAM,GAAK,IAC/B,KAAK,WAGL,OAGR,GAAI,GAAW,EAAe,EAAkB,KAAK,eAAe,EACpE,MAAK,GAGL,IAAW,EACP,CAAC,EAAc,CAAO,EAGnB,CAAE,IAAK,EAAS,IAAK,MAFjB,KAAK,MAAM,EAAoB,CAAQ,GAJvC,KAAK,MAAM,EAAmB,CAAQ,GAQrD,EAAO,UAAU,OAAS,UAAY,CAClC,MAAO,MAAK,SAAS,QAEzB,EAAO,UAAU,MAAQ,UAAY,CACjC,MAAO,MAAK,WAAa,KAAK,QAAQ,QAE1C,EAAO,UAAU,cAAgB,UAAY,CAEzC,MAAO,CACH,OAAQ,KAAK,SAAS,OACtB,KAAM,KAAK,SAAS,KACpB,OAAQ,KAAK,SAAS,SAO9B,EAAO,UAAU,KAAO,UAAY,CAChC,GAAI,GAAS,KAAK,SAAS,OAC3B,GAAI,GAAU,KAAK,QAAQ,OACvB,KAAM,OAAM,cAAc,EAE9B,GAAI,GAAO,GAAY,KAAK,QAAS,CAAM,EAC3C,GAAI,IAAS,OACT,KAAM,OAAM,UAAU,OAAO,EAAQ,0CAA0C,CAAC,EAEpF,MAAO,IAEX,EAAO,UAAU,MAAQ,SAAU,EAAM,EAAU,CAC/C,MAAO,CACH,IAAK,KACL,IAAK,CACD,KAAM,EACN,QAAS,KAAK,QACd,SAAU,KAKtB,EAAO,UAAU,KAAO,UAAY,CAChC,GAAI,MAAK,QAGT,IAAI,GAAO,KAAK,OAChB,CAAI,GAAS,GACT,MAAK,SAAS,MAAQ,EACtB,KAAK,SAAS,OAAS,EACvB,KAAK,SAAS,QAAU,GAGxB,MAAK,SAAS,QAAU,EAExB,KAAK,SAAS,QAAU,EAAO,MAAU,EAAI,KASrD,EAAO,UAAU,OAAS,SAAU,EAAQ,CACxC,GAAI,GAAW,KAAK,QAAS,EAAQ,KAAK,QAAQ,EAAG,CACjD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IAC/B,KAAK,OAET,MAAO,GAEX,MAAO,IAMX,EAAO,UAAU,UAAY,SAAU,EAAS,CAC5C,GAAI,GAAgB,KAAK,SACrB,EAAQ,KAAK,QAAQ,QAAQ,EAAS,CAAa,EACvD,MAAI,IAAS,EACT,MAAK,OAAO,CAAK,EACV,IAGP,MAAK,OAAO,KAAK,QAAQ,MAAM,EACxB,KAOf,EAAO,UAAU,OAAS,SAAU,EAAc,CAC9C,GAAI,KAAK,SAAW,EAChB,KAAM,OAAM,gBAAgB,OAAO,EAAc,uDAAuD,EAAE,OAAO,KAAK,QAAQ,CAAC,EAGnI,IADA,EAAe,KAAK,IAAI,EAAc,KAAK,QAAQ,MAAM,IAC5C,CACT,GAAI,GAAS,KAAK,SAClB,GAAI,IAAW,EACX,MAEJ,GAAI,EAAS,EACT,KAAM,OAAM,gBAAgB,OAAO,EAAc,0CAA0C,CAAC,EAGhG,GADA,KAAK,OACD,KAAK,QACL,QAKZ,EAAO,UAAU,UAAY,UAAY,CACrC,KAAO,CAAC,KAAK,SAAW,GAAc,KAAK,MAAM,GAC7C,KAAK,QAOb,EAAO,UAAU,KAAO,UAAY,CAChC,GAAI,KAAK,QACL,MAAO,MAEX,GAAI,GAAO,KAAK,OACZ,EAAS,KAAK,SACd,EAAW,KAAK,QAAQ,WAAW,EAAU,IAAQ,MAAU,EAAI,EAAE,EACzE,MAAO,IAAsD,MAE1D,CACX,IAOA,YAAkB,EAAW,CACzB,MAAS,IAAa,IAAM,GAAa,KACpC,GAAa,IAAM,GAAa,EACzC,CACA,YAAyB,EAAW,CAChC,MAAO,IAAS,CAAS,GAAK,IAAc,EAChD,CAEA,YAAqC,EAAG,CACpC,MAAQ,KAAM,IACV,IAAM,IACL,GAAK,IAAM,GAAK,IACjB,IAAM,IACL,GAAK,IAAM,GAAK,KAChB,GAAK,IAAM,GAAK,IACjB,GAAK,KACJ,GAAK,KAAQ,GAAK,KAClB,GAAK,KAAQ,GAAK,KAClB,GAAK,KAAQ,GAAK,KAClB,GAAK,KAAS,GAAK,MACnB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAW,GAAK,MAC9B,CAKA,YAAuB,EAAG,CACtB,MAAS,IAAK,GAAU,GAAK,IACzB,IAAM,IACN,IAAM,KACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,IACd,CAKA,YAA0B,EAAG,CACzB,MAAS,IAAK,IAAU,GAAK,IACzB,IAAM,IACL,GAAK,IAAU,GAAK,IACrB,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACL,GAAK,IAAU,GAAK,IACpB,GAAK,IAAU,GAAK,IACpB,GAAK,IAAU,GAAK,IACpB,GAAK,IAAU,GAAK,IACrB,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACL,GAAK,KAAU,GAAK,KACrB,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACN,IAAM,KACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,KACrB,IAAM,MACN,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACrB,IAAM,MACL,GAAK,MAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACL,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACL,GAAK,OAAU,GAAK,OACrB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAA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","names":["e","t","n","getLocaleFromNavigator","api_logo"],"sources":["../../../../ui/node_modules/.pnpm/deepmerge@4.2.2/node_modules/deepmerge/dist/cjs.js","../../../../ui/node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.5/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.5/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.5/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","../../../../ui/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.0.18/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","../../../../ui/node_modules/.pnpm/@formatjs+fast-memoize@1.2.1/node_modules/@formatjs/fast-memoize/lib/index.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/src/error.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/src/formatters.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/src/core.js","../../../../ui/node_modules/.pnpm/intl-messageformat@9.11.4/node_modules/intl-messageformat/lib/index.js","../../../../ui/node_modules/.pnpm/svelte-i18n@3.3.13_svelte@3.49.0/node_modules/svelte-i18n/dist/runtime.esm.js","../../../../ui/packages/app/src/components/directory.ts","../../../../ui/packages/app/src/i18n.ts","../../../../ui/packages/app/src/Render.svelte","../../../../ui/packages/app/src/api_docs/img/clear.svelte","../../../../ui/packages/app/src/api_docs/NoApi.svelte","../../../../ui/packages/app/src/api_docs/utils.ts","../../../../ui/packages/app/src/api_docs/img/api-logo.svg","../../../../ui/packages/app/src/api_docs/ApiBanner.svelte","../../../../ui/packages/app/src/api_docs/EndpointDetail.svelte","../../../../ui/packages/app/src/api_docs/InputPayload.svelte","../../../../ui/packages/app/src/api_docs/ResponseObject.svelte","../../../../ui/packages/app/src/api_docs/CopyButton.svelte","../../../../ui/packages/app/src/api_docs/img/python.svg","../../../../ui/packages/app/src/api_docs/img/javascript.svg","../../../../ui/packages/app/src/api_docs/CodeSnippets.svelte","../../../../ui/packages/app/src/api_docs/ApiDocs.svelte","../../../../ui/packages/app/src/images/logo.svg","../../../../../../../../../static/img/api-logo.svg","../../../../ui/packages/app/src/Blocks.svelte"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: skeleton,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(skeleton)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n","//\n// Main\n//\nexport default function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\".concat(value)];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale =\n new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0,\n },\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","import{writable as e,derived as n}from\"svelte/store\";import t from\"deepmerge\";import o from\"intl-messageformat\";const r={},i=(e,n,t)=>t?(n in r||(r[n]={}),e in r[n]||(r[n][e]=t),t):t,l=(e,n)=>{if(null==n)return;if(n in r&&e in r[n])return r[n][e];const t=E(n);for(let o=0;o0){const n=t.slice(e,t.length).join(\".\");if(n in o){o=o[n];break}}o=o[t[e]]}else o=void 0;return o}(function(e){return a[e]||null}(e),n)}function m(e,...n){delete r[e],s.update((o=>(o[e]=t.all([o[e]||{},...n]),o)))}const f=n([s],(([e])=>Object.keys(e)));s.subscribe((e=>a=e));const d={};function g(e){return d[e]}function w(e){return null!=e&&E(e).some((e=>{var n;return null===(n=g(e))||void 0===n?void 0:n.size}))}function h(e,n){return Promise.all(n.map((n=>(function(e,n){d[e].delete(n),0===d[e].size&&delete d[e]}(e,n),n().then((e=>e.default||e)))))).then((n=>m(e,...n)))}const p={};function b(e){if(!w(e))return e in p?p[e]:Promise.resolve();const n=function(e){return E(e).map((e=>{const n=g(e);return[e,n?[...n]:[]]})).filter((([,e])=>e.length>0))}(e);return p[e]=Promise.all(n.map((([e,n])=>h(e,n)))).then((()=>{if(w(e))return b(e);delete p[e]})),p[e]}function y(e,n){g(e)||function(e){d[e]=new Set}(e);const t=g(e);g(e).has(n)||(u(e)||s.update((n=>(n[e]={},n))),t.add(n))}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */function v(e,n){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&n.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);rt.slice(0,n+1).join(\"-\"))).reverse()}function E(e,n=j().fallbackLocale){const t=x(e);return n?[...new Set([...t,...x(n)])]:t}function D(){return null!=L?L:void 0}T.subscribe((e=>{L=null!=e?e:void 0,\"undefined\"!=typeof window&&null!=e&&document.documentElement.setAttribute(\"lang\",e)}));const M=Object.assign(Object.assign({},T),{set:e=>{if(e&&function(e){if(null==e)return;const n=E(e);for(let e=0;ek.set(!0)),n):k.set(!0),b(e).then((()=>{T.set(e)})).finally((()=>{clearTimeout(t),k.set(!1)}))}return T.set(e)}}),P=(e,n)=>{const t=e.split(\"&\").find((e=>0===e.indexOf(`${n}=`)));return t?t.split(\"=\").pop():null},S=(e,n)=>{const t=n.exec(e);return t&&t[1]||null},N=e=>\"undefined\"==typeof window?null:S(window.location.hostname,e),A=e=>\"undefined\"==typeof window?null:S(window.location.pathname,e),I=()=>\"undefined\"==typeof window?null:window.navigator.language||window.navigator.languages[0],F=e=>\"undefined\"==typeof window?null:P(window.location.search.substr(1),e),z=e=>\"undefined\"==typeof window?null:P(window.location.hash.substr(1),e),Z=e=>{const n=Object.create(null);return t=>{const o=JSON.stringify(t);return o in n?n[o]:n[o]=e(t)}},C=(e,n)=>{const{formats:t}=j();if(e in t&&n in t[e])return t[e][n];throw new Error(`[svelte-i18n] Unknown \"${n}\" ${e} format.`)},G=Z((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format numbers');return t&&(o=C(\"number\",t)),new Intl.NumberFormat(n,o)})),J=Z((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format dates');return t?o=C(\"date\",t):0===Object.keys(o).length&&(o=C(\"date\",\"short\")),new Intl.DateTimeFormat(n,o)})),U=Z((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format time values');return t?o=C(\"time\",t):0===Object.keys(o).length&&(o=C(\"time\",\"short\")),new Intl.DateTimeFormat(n,o)})),_=(e={})=>{var{locale:n=D()}=e,t=v(e,[\"locale\"]);return G(Object.assign({locale:n},t))},q=(e={})=>{var{locale:n=D()}=e,t=v(e,[\"locale\"]);return J(Object.assign({locale:n},t))},B=(e={})=>{var{locale:n=D()}=e,t=v(e,[\"locale\"]);return U(Object.assign({locale:n},t))},H=Z(((e,n=D())=>new o(e,n,j().formats,{ignoreTag:j().ignoreTag}))),K=(e,n={})=>{let t=n;\"object\"==typeof e&&(t=e,e=t.id);const{values:o,locale:r=D(),default:i}=t;if(null==r)throw new Error(\"[svelte-i18n] Cannot format a message without first setting the initial locale.\");let a=l(e,r);if(a){if(\"string\"!=typeof a)return console.warn(`[svelte-i18n] Message with id \"${e}\" must be of type \"string\", found: \"${typeof a}\". Gettin its value through the \"$format\" method is deprecated; use the \"json\" method instead.`),a}else j().warnOnMissingMessages&&console.warn(`[svelte-i18n] The message \"${e}\" was not found in \"${E(r).join('\", \"')}\".${w(D())?\"\\n\\nNote: there are at least one loader still registered to this locale that wasn't executed.\":\"\"}`),a=null!=i?i:e;if(!o)return a;let s=a;try{s=H(a,r).format(o)}catch(n){console.warn(`[svelte-i18n] Message \"${e}\" has syntax error:`,n.message)}return s},Q=(e,n)=>B(n).format(e),R=(e,n)=>q(n).format(e),V=(e,n)=>_(n).format(e),W=(e,n=D())=>l(e,n),X=n([M,s],(()=>K)),Y=n([M],(()=>Q)),ee=n([M],(()=>R)),ne=n([M],(()=>V)),te=n([M,s],(()=>W));function oe(e){return e}function re(e){return b(e||D()||j().initialLocale)}export{X as _,m as addMessages,ee as date,oe as defineMessages,s as dictionary,X as format,q as getDateFormatter,z as getLocaleFromHash,N as getLocaleFromHostname,I as getLocaleFromNavigator,A as getLocaleFromPathname,F as getLocaleFromQueryString,H as getMessageFormatter,_ as getNumberFormatter,B as getTimeFormatter,$ as init,k as isLoading,te as json,M as locale,f as locales,ne as number,y as register,X as t,Y as time,re as waitLocale};\n","export const component_map = {\n\taccordion: () => import(\"./Accordion\"),\n\taudio: () => import(\"./Audio\"),\n\tbox: () => import(\"./Box\"),\n\tbutton: () => import(\"./Button\"),\n\tchatbot: () => import(\"./Chatbot\"),\n\tcheckbox: () => import(\"./Checkbox\"),\n\tcheckboxgroup: () => import(\"./CheckboxGroup\"),\n\tcode: () => import(\"./Code\"),\n\tcolorpicker: () => import(\"./ColorPicker\"),\n\tcolumn: () => import(\"./Column\"),\n\tdataframe: () => import(\"./DataFrame\"),\n\tdataset: () => import(\"./Dataset\"),\n\tdropdown: () => import(\"./Dropdown\"),\n\tfile: () => import(\"./File\"),\n\tform: () => import(\"./Form\"),\n\tgallery: () => import(\"./Gallery\"),\n\tgroup: () => import(\"./Group\"),\n\thighlightedtext: () => import(\"./HighlightedText\"),\n\thtml: () => import(\"./HTML\"),\n\timage: () => import(\"./Image\"),\n\tinterpretation: () => import(\"./Interpretation\"),\n\tjson: () => import(\"./Json\"),\n\tlabel: () => import(\"./Label\"),\n\tmarkdown: () => import(\"./Markdown\"),\n\tmodel3d: () => import(\"./Model3D\"),\n\tnumber: () => import(\"./Number\"),\n\tplot: () => import(\"./Plot\"),\n\tradio: () => import(\"./Radio\"),\n\trow: () => import(\"./Row\"),\n\tslider: () => import(\"./Slider\"),\n\tstate: () => import(\"./State\"),\n\tstatustracker: () => import(\"./StatusTracker\"),\n\ttabs: () => import(\"./Tabs\"),\n\ttabitem: () => import(\"./TabItem\"),\n\ttextbox: () => import(\"./Textbox\"),\n\ttimeseries: () => import(\"./TimeSeries\"),\n\tuploadbutton: () => import(\"./UploadButton\"),\n\tvideo: () => import(\"./Video\")\n};\n","/// \n\nimport { addMessages, init, getLocaleFromNavigator } from \"svelte-i18n\";\n\nconst langs = import.meta.globEager(\"./lang/*.json\");\n\nexport function process_langs() {\n\tlet _langs: Record<\n\t\tstring,\n\t\t{\n\t\t\t[key: string]: any;\n\t\t}\n\t> = {};\n\n\tfor (const lang in langs) {\n\t\tconst code = (lang.split(\"/\").pop() as string).split(\".\").shift() as string;\n\t\t_langs[code] = langs[lang].default;\n\t}\n\n\treturn _langs;\n}\n\nconst processed_langs = process_langs();\n\nfor (const lang in processed_langs) {\n\taddMessages(lang, processed_langs[lang]);\n}\n\nexport function setupi18n() {\n\tinit({\n\t\tfallbackLocale: \"en\",\n\t\tinitialLocale: getLocaleFromNavigator()\n\t});\n}\n","\n\n\n\t{#if children && children.length}\n\t\t{#each children as { component, id: each_id, props, children: _children, has_modes } (each_id)}\n\t\t\t\n\t\t{/each}\n\t{/if}\n\n","\n\t\n\t\t\n\t\t\n\t\n\n","\n\n
\n\t

API Docs

\n\t

\n\t\tNo named API Routes found for\n\t\t\n\t\t\t{root}\n\t\t\n\t

\n\t

\n\t\tTo expose an API endpoint of your app in this page, set the \n\t\t\tapi_name\n\t\t\n\t\tparameter of the event listener.\n\t\t
\n\t\tFor more information, visit the\n\t\t\n\t\t\tAPI Page guide\n\t\t\n\t\t. To hide the API documentation button and this page, set\n\t\tshow_api=False\n\t\tin the\n\t\tBlocks.launch()\n\t\tmethod.\n\t

\n
\n\n\n\n\n","export function represent_value(\n\tvalue: string,\n\ttype: string | undefined,\n\tlang: \"js\" | \"py\" | null = null\n) {\n\tif (type === undefined) {\n\t\treturn lang === \"py\" ? \"None\" : null;\n\t}\n\tif (type === \"string\") {\n\t\treturn lang === null ? value : '\"' + value + '\"';\n\t} else if (type === \"number\") {\n\t\treturn lang === null ? parseFloat(value) : value;\n\t} else if (type === \"boolean\") {\n\t\tif (lang === \"py\") {\n\t\t\treturn value === \"true\" ? \"True\" : \"False\";\n\t\t} else if (lang === \"js\") {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn value === \"true\";\n\t\t}\n\t} else {\n\t\t// assume object type\n\t\tif (lang === null) {\n\t\t\treturn value === \"\" ? null : JSON.parse(value);\n\t\t} else if (typeof value === \"string\") {\n\t\t\tif (value === \"\") {\n\t\t\t\treturn lang === \"py\" ? \"None\" : \"null\";\n\t\t\t}\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn JSON.stringify(value);\n\t\t}\n\t}\n}\n","export default \"__VITE_ASSET__5346f193__\"","\n\n

\n\t\"\"\n\tAPI documentation for \n\t\n\t\t{root}\n\t\n

\n{#if active_api_count > 1}\n\t
\n\t\t{active_api_count} API endpoints:\n\t
\n{/if}\n\n\n\n\n","\n\n

\n\tPOST\n\t/run/{api_name}\n

\n
\n\t
\n\t\t{root}run/{api_name}\n\t\t\n\t
\n
\n\n\n","\n\n

\n\t
\n\t\t
\n\t
\n\tInput Payload\n

\n\n\t
\n\t\t{\n\t\t
\"data\": [
\n\t\t{#each dependency.inputs as component_id, component_index}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{#if dependency_failures[dependency_index][component_index]}\n\t\t\t\t\tERROR\n\t\t\t\t{/if}\n\n\t\t\t\t\n\t\t\t\t\t: {instance_map[component_id].documentation?.type?.input_payload ||\n\t\t\t\t\t\tinstance_map[component_id].documentation?.type?.payload},\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t// represents {instance_map[component_id].documentation?.description\n\t\t\t\t\t\t?.input_payload ||\n\t\t\t\t\t\tinstance_map[component_id].documentation?.description?.payload} of\n\t\t\t\t\t{format_label(instance_map[component_id].props.label)}\n\t\t\t\t\t\n\t\t\t\t\t\t{instance_map[component_id].props.name}\n\t\t\t\t\t\n\t\t\t\t\tcomponent\n\t\t\t\t\n\t\t\t
\n\t\t{/each}\n\t\t
]
\n\t\t}\n\t
\n
\n\n\n\n\tTry It Out\n\n\n\n","\n\n

\n\t
\n\t\t
\n\t
\n\tResponse Object\n

\n\n\t
\n\t\t
\n\t\t\t{\n\t\t\t
\"data\": [
\n\t\t\t{#each dependency.outputs as component_id, component_index}\n\t\t\t\t
\n\t\t\t\t\t{#if dependency_outputs[dependency_index][component_index] !== undefined}\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\t{/if}\n\t\t\t\t\t\n\t\t\t\t\t\t{instance_map[component_id].documentation?.type?.response_object ||\n\t\t\t\t\t\t\tinstance_map[component_id].documentation?.type?.payload},\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t// represents {format_url(\n\t\t\t\t\t\t\tinstance_map[component_id].documentation?.description\n\t\t\t\t\t\t\t\t?.response_object ||\n\t\t\t\t\t\t\t\tinstance_map[component_id].documentation?.description?.payload,\n\t\t\t\t\t\t\tdependency_outputs[dependency_index][component_index]\n\t\t\t\t\t\t)} of\n\t\t\t\t\t\t{((label) => {\n\t\t\t\t\t\t\treturn label ? \"'\" + label + \"'\" : \"the\";\n\t\t\t\t\t\t})(instance_map[component_id].props.label)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{instance_map[component_id].props.name}\n\t\t\t\t\t\t\n\t\t\t\t\t\tcomponent\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t{/each}\n\t\t\t
],
\n\t\t\t
\n\t\t\t\t\"duration\": (float)\n\t\t\t\t// number of seconds to run function call\n\t\t\t
\n\t\t\t}\n\t\t
\n\t\t{#if is_running}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t{/if}\n\t
\n
\n\n\n","\n\n\n","export default \"__VITE_ASSET__20e39c92__\"","export default \"__VITE_ASSET__850cf94b__\"","\n\n

\n\t\n\t\t\n\t\n\tCode snippets\n

\n
\n\t{#each langs as [language, img]}\n\t\t (current_language = language)}\n\t\t>\n\t\t\t\"\"\n\t\t\t{language}\n\t\t\n\t{/each}\n
\n\n\n\t\n\t\t{#if current_language === \"python\"}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
import requests\n\nresponse = requests.post(\"{root + \"run/\" + dependency.api_name}\", json={\n\t\"data\": [{#each dependency_inputs[dependency_index] as component_value, component_index}\t\t{represent_value(\n\t\t\t\t\t\t\t\tcomponent_value,\n\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t].documentation?.type?.input_payload ||\n\t\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t\t].documentation?.type?.payload,\n\t\t\t\t\t\t\t\t\"py\"\n\t\t\t\t\t\t\t)},{/each}\n\t]\n}).json()\n\ndata = response[\"data\"]
\n\t\t\t
\n\t\t{:else if current_language === \"javascript\"}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
const response = await fetch(\"{root + \"run/\" + dependency.api_name}\", {\n\tmethod: \"POST\",\n\theaders: { \"Content-Type\": \"application/json\" },\n\tbody: JSON.stringify({\n\t\tdata: [{#each dependency_inputs[dependency_index] as component_value, component_index}\t\t\t{represent_value(\n\t\t\t\t\t\t\t\tcomponent_value,\n\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t].documentation?.type?.input_payload ||\n\t\t\t\t\t\t\t\t\tinstance_map[\n\t\t\t\t\t\t\t\t\t\tdependencies[dependency_index].inputs[component_index]\n\t\t\t\t\t\t\t\t\t].documentation?.type?.payload,\n\t\t\t\t\t\t\t\t\"js\"\n\t\t\t\t\t\t\t)},{/each}\n\t\t]\n\t})\n});\n\nconst data = await response.json();\n
\n\t\t\t
\n\t\t{:else if current_language === \"gradio client\"}\n\t\t\t
Hello World
\n\t\t{/if}\n\t
\n
\n\n\n","\n\n{#if active_api_count}\n\t
\n\t\t\n\t
\n\t
\n\t\t{#each dependencies as dependency, dependency_index}\n\t\t\t{#if dependency.api_name}\n\t\t\t\t
\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t{/if}\n\t\t{/each}\n\t
\n{:else}\n\t\n{/if}\n\n\n","export default \"__VITE_ASSET__0a070fcf__\"","export default \"./static/img/api-logo.svg\"","\n\n\n\t{#if control_page_title}\n\t\t{title}\n\t{/if}\n\t{#if analytics_enabled}\n\t\t\n\t{/if}\n\n\n
\n\t
\n\t\t{#if ready}\n\t\t\t handle_destroy(detail)}\n\t\t\t/>\n\t\t{/if}\n\t
\n\n\t{#if show_footer}\n\t\t
\n\t\t\t{#if show_api}\n\t\t\t\t {\n\t\t\t\t\t\tset_api_docs_visible(!api_docs_visible);\n\t\t\t\t\t}}\n\t\t\t\t\tclass=\"show-api\"\n\t\t\t\t>\n\t\t\t\t\tUse via API \"\"\n\t\t\t\t\n\t\t\t\t
·
\n\t\t\t{/if}\n\t\t\t\n\t\t\t\tBuilt with Gradio\n\t\t\t\t\"logo\"\n\t\t\t\n\t\t
\n\t{/if}\n
\n\n{#if api_docs_visible && ready}\n\t
\n\t\t {\n\t\t\t\tset_api_docs_visible(false);\n\t\t\t}}\n\t\t/>\n\t\t
\n\t\t\t {\n\t\t\t\t\tset_api_docs_visible(false);\n\t\t\t\t}}\n\t\t\t\t{instance_map}\n\t\t\t\t{dependencies}\n\t\t\t\t{root}\n\t\t\t/>\n\t\t
\n\t
\n{/if}\n\n\n"],"file":"assets/Blocks.5efe22d4.js"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css b/gradio/templates/frontend/assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css new file mode 100644 index 0000000000000000000000000000000000000000..e51e137574fa640199388db40f7111760b175f10 --- /dev/null +++ b/gradio/templates/frontend/assets/ColorPicker.svelte_svelte_type_style_lang.adee3b52.css @@ -0,0 +1 @@ +label.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70{display:flex;align-items:center;cursor:pointer;color:var(--body-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}label.svelte-1ojmf70>.svelte-1ojmf70+.svelte-1ojmf70{margin-left:var(--size-2)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70{--ring-color:transparent;position:relative;box-shadow:var(--input-shadow);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-background-color);line-height:var(--line-sm)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:checked,input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:checked:hover,input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:checked:focus{border-color:var(--checkbox-border-color-selected);background-image:var(--checkbox-check);background-color:var(--checkbox-background-color-selected)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:hover{border-color:var(--checkbox-border-color-hover);background-color:var(--checkbox-background-color-hover)}input.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70:focus{border-color:var(--checkbox-border-color-focus);background-color:var(--checkbox-background-color-focus)}input[disabled].svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70,.disabled.svelte-1ojmf70.svelte-1ojmf70.svelte-1ojmf70{cursor:not-allowed}.wrap.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{display:flex;flex-wrap:wrap;gap:var(--checkbox-label-gap)}label.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{display:flex;align-items:center;transition:var(--button-transition);cursor:pointer;box-shadow:var(--checkbox-label-shadow);border:var(--checkbox-label-border-width) solid var(--checkbox-label-border-color);border-radius:var(--button-small-radius);background:var(--checkbox-label-background-fill);padding:var(--checkbox-label-padding);color:var(--checkbox-label-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}label.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:hover{background:var(--checkbox-label-background-fill-hover)}label.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:focus{background:var(--checkbox-label-background-fill-focus)}label.selected.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{background:var(--checkbox-label-background-fill-selected);color:var(--checkbox-label-text-color-selected)}label.svelte-1qxcj04>.svelte-1qxcj04+.svelte-1qxcj04{margin-left:var(--size-2)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{--ring-color:transparent;position:relative;box-shadow:var(--checkbox-shadow);border:var(--checkbox-border-width) solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-background-color);line-height:var(--line-sm)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:checked,input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:checked:hover,input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:checked:focus{border-color:var(--checkbox-border-color-selected);background-image:var(--checkbox-check);background-color:var(--checkbox-background-color-selected)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:hover{border-color:var(--checkbox-border-color-hover);background-color:var(--checkbox-background-color-hover)}input.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04:focus{border-color:var(--checkbox-border-color-focus);background-color:var(--checkbox-background-color-focus)}input[disabled].svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04,.disabled.svelte-1qxcj04.svelte-1qxcj04.svelte-1qxcj04{cursor:not-allowed}.options.svelte-1oas11n{--window-padding:var(--size-8);position:absolute;z-index:var(--layer-5);margin-left:0;box-shadow:var(--shadow-drop-lg);border-radius:var(--container-radius);background:var(--background-fill-primary);width:var(--size-full);overflow:auto;color:var(--body-text-color);list-style:none}.item.svelte-1oas11n{display:flex;cursor:pointer;padding:var(--size-2)}.item.svelte-1oas11n:hover,.active.svelte-1oas11n{background:var(--background-fill-secondary)}.inner-item.svelte-1oas11n{padding-right:var(--size-1)}.hide.svelte-1oas11n{visibility:hidden}.wrap.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{position:relative;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--border-color-primary);border-radius:var(--input-radius);background:var(--input-background-fill)}.wrap.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r:focus-within{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}.wrap-inner.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{display:flex;position:relative;flex-wrap:wrap;align-items:center;gap:var(--checkbox-label-gap);padding:var(--checkbox-label-gap)}.token.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{display:flex;align-items:center;transition:var(--button-transition);cursor:pointer;box-shadow:var(--checkbox-label-shadow);border:var(--checkbox-label-border-width) solid var(--checkbox-label-border-color);border-radius:var(--button-small-radius);background:var(--checkbox-label-background-fill);padding:var(--checkbox-label-padding);color:var(--checkbox-label-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}.token.svelte-a6vu2r>.svelte-a6vu2r+.svelte-a6vu2r{margin-left:var(--size-2)}.token-remove.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{fill:var(--body-text-color);display:flex;justify-content:center;align-items:center;cursor:pointer;border:var(--checkbox-border-width) solid var(--border-color-primary);border-radius:var(--radius-full);background:var(--background-fill-primary);padding:var(--size-0-5);width:18px;height:18px}.single-select.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{margin:var(--spacing-sm);color:var(--body-text-color)}.secondary-wrap.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{display:flex;flex:1 1 0%;align-items:center;border:none;min-width:min-content}input.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{margin:var(--spacing-sm);outline:none;border:none;background:inherit;width:var(--size-full);color:var(--body-text-color);font-size:var(--input-text-size)}input.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r:disabled{cursor:not-allowed}.remove-all.svelte-a6vu2r.svelte-a6vu2r.svelte-a6vu2r{margin-left:var(--size-1);width:20px;height:20px}input[type=number].svelte-1nnxs9b{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius);background:var(--input-background-fill);padding:var(--input-padding);width:100%;color:var(--body-text-color);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-1nnxs9b:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-1nnxs9b::placeholder{color:var(--input-placeholder-color)}.wrap.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{display:flex;flex-wrap:wrap;gap:var(--checkbox-label-gap)}label.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{display:flex;align-items:center;transition:var(--button-transition);cursor:pointer;box-shadow:var(--checkbox-label-shadow);border:var(--checkbox-label-border-width) solid var(--checkbox-label-border-color);border-radius:var(--button-small-radius);background:var(--checkbox-label-background-fill);padding:var(--checkbox-label-padding);color:var(--checkbox-label-text-color);font-weight:var(--checkbox-label-text-weight);font-size:var(--checkbox-label-text-size);line-height:var(--line-md)}label.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:hover{background:var(--checkbox-label-background-fill-hover)}label.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:focus{background:var(--checkbox-label-background-fill-focus)}label.selected.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{background:var(--checkbox-label-background-fill-selected);color:var(--checkbox-label-text-color-selected)}label.svelte-1p9xokt>.svelte-1p9xokt+.svelte-1p9xokt{margin-left:var(--size-2)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{--ring-color:transparent;position:relative;box-shadow:var(--checkbox-shadow);border:var(--checkbox-border-width) solid var(--checkbox-border-color);border-radius:var(--radius-full);background-color:var(--checkbox-background-color);line-height:var(--line-sm)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:checked,input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:checked:hover,input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:checked:focus{border-color:var(--checkbox-border-color-selected);background-image:var(--radio-circle);background-color:var(--checkbox-background-color-selected)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:hover{border-color:var(--checkbox-border-color-hover);background-color:var(--checkbox-background-color-hover)}input.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt:focus{border-color:var(--checkbox-border-color-focus);background-color:var(--checkbox-background-color-focus)}input[disabled].svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt,.disabled.svelte-1p9xokt.svelte-1p9xokt.svelte-1p9xokt{cursor:not-allowed}label.svelte-4xt1ch{display:block;width:100%}input[type=text].svelte-4xt1ch,input[type=password].svelte-4xt1ch,input[type=email].svelte-4xt1ch,textarea.svelte-4xt1ch{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius);background:var(--input-background-fill);padding:var(--input-padding);width:100%;color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm)}input.svelte-4xt1ch:focus,textarea.svelte-4xt1ch:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-4xt1ch::placeholder,textarea.svelte-4xt1ch::placeholder{color:var(--input-placeholder-color)}button.svelte-4xt1ch{display:flex;position:absolute;top:var(--block-label-margin);right:var(--block-label-margin);align-items:center;box-shadow:var(--shadow-drop);border:1px solid var(--color-border-primary);border-top:none;border-right:none;border-radius:var(--block-label-right-radius);background:var(--block-label-background-fill);padding:5px;width:22px;height:22px;overflow:hidden;color:var(--block-label-color);font:var(--font-sans);font-size:var(--button-small-text-size)}.wrap.svelte-jigama{display:flex;flex-direction:column;width:100%}.head.svelte-jigama{display:flex;justify-content:space-between}input[type=number].svelte-jigama{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius);background:var(--input-background-fill);padding:var(--size-2) var(--size-2);height:var(--size-6);color:var(--body-text-color);font-size:var(--input-text-size);line-height:var(--line-sm);text-align:center}input[type=number].svelte-jigama:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-jigama::placeholder{color:var(--input-placeholder-color)}input[type=range].svelte-jigama{width:100%;accent-color:var(--slider-color)}input[disabled].svelte-jigama{cursor:not-allowed}input.svelte-56zyyb{display:block;position:relative;background:var(--background-fill-primary);line-height:var(--line-sm)} diff --git a/gradio/templates/frontend/assets/Column.899c996b.js b/gradio/templates/frontend/assets/Column.899c996b.js new file mode 100644 index 0000000000000000000000000000000000000000..539fb7e388e6c2d48be7612315cd93f6ef0b63bf --- /dev/null +++ b/gradio/templates/frontend/assets/Column.899c996b.js @@ -0,0 +1,2 @@ +import{S as h,i as w,s as b,W as r,F as C,B as o,a8 as g,O as _,f as j,X as S,Y as q,Z as y,o as B,t as F,p as O}from"./index.37b24c07.js";/* empty css */function W(i){let e,n,m,f;const u=i[8].default,a=r(u,i,i[7],null);return{c(){e=C("div"),a&&a.c(),o(e,"id",i[2]),o(e,"class",n=g(i[3].join(" "))+" svelte-vt1mxs"),o(e,"style",m=`min-width: min(${i[1]}px, 100%); flex-grow: ${i[0]}`),_(e,"gap",i[6].gap!==!1),_(e,"compact",i[5]==="compact"),_(e,"panel",i[5]==="panel"),_(e,"hide",!i[4])},m(l,t){j(l,e,t),a&&a.m(e,null),f=!0},p(l,[t]){a&&a.p&&(!f||t&128)&&S(a,u,l,l[7],f?y(u,l[7],t,null):q(l[7]),null),(!f||t&4)&&o(e,"id",l[2]),(!f||t&8&&n!==(n=g(l[3].join(" "))+" svelte-vt1mxs"))&&o(e,"class",n),(!f||t&3&&m!==(m=`min-width: min(${l[1]}px, 100%); flex-grow: ${l[0]}`))&&o(e,"style",m),t&72&&_(e,"gap",l[6].gap!==!1),t&40&&_(e,"compact",l[5]==="compact"),t&40&&_(e,"panel",l[5]==="panel"),t&24&&_(e,"hide",!l[4])},i(l){f||(B(a,l),f=!0)},o(l){F(a,l),f=!1},d(l){l&&O(e),a&&a.d(l)}}}function X(i,e,n){let{$$slots:m={},$$scope:f}=e,{scale:u=1}=e,{min_width:a=0}=e,{elem_id:l=""}=e,{elem_classes:t=[]}=e,{visible:c=!0}=e,{variant:d="default"}=e,{style:v={}}=e;return i.$$set=s=>{"scale"in s&&n(0,u=s.scale),"min_width"in s&&n(1,a=s.min_width),"elem_id"in s&&n(2,l=s.elem_id),"elem_classes"in s&&n(3,t=s.elem_classes),"visible"in s&&n(4,c=s.visible),"variant"in s&&n(5,d=s.variant),"style"in s&&n(6,v=s.style),"$$scope"in s&&n(7,f=s.$$scope)},[u,a,l,t,c,d,v,f,m]}class k extends h{constructor(e){super(),w(this,e,X,W,b,{scale:0,min_width:1,elem_id:2,elem_classes:3,visible:4,variant:5,style:6})}}export{k as C}; +//# sourceMappingURL=Column.899c996b.js.map diff --git a/gradio/templates/frontend/assets/Column.899c996b.js.map b/gradio/templates/frontend/assets/Column.899c996b.js.map new file mode 100644 index 0000000000000000000000000000000000000000..e1b50ba955399c3eed94863434edccdb4b23e29d --- /dev/null +++ b/gradio/templates/frontend/assets/Column.899c996b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Column.899c996b.js","sources":["../../../../ui/packages/app/src/components/Column/Column.svelte"],"sourcesContent":["\n\n\n\t\n\n\n\n"],"names":[],"mappings":"gTAcK,sBACG,KAAa,KAAK,GAAG,qDAKH,6BAAkC,kBAJhD,KAAM,MAAQ,EAAK,gBACf,OAAY,SAAS,cACvB,OAAY,OAAO,cACnB,cANd,8HACK,yBACG,KAAa,KAAK,GAAG,yEAKH,6BAAkC,yCAJhD,KAAM,MAAQ,EAAK,sBACf,OAAY,SAAS,oBACvB,OAAY,OAAO,oBACnB,0HAfF,QAAgB,MAChB,YAAoB,MACpB,UAAkB,OAClB,sBACA,UAAmB,OACnB,UAA2C,cAC3C"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css b/gradio/templates/frontend/assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css new file mode 100644 index 0000000000000000000000000000000000000000..8657e4c7112cc9a8232f875b00f9cf9aaac5e9f6 --- /dev/null +++ b/gradio/templates/frontend/assets/Column.svelte_svelte_type_style_lang.c4c23b6e.css @@ -0,0 +1 @@ +div.svelte-vt1mxs{display:flex;position:relative;flex-direction:column}div.svelte-vt1mxs>*,div.svelte-vt1mxs>.form>*{width:var(--size-full)}.gap.svelte-vt1mxs{gap:var(--layout-gap)}.hide.svelte-vt1mxs{display:none}.compact.svelte-vt1mxs>*,.compact.svelte-vt1mxs .box{border-radius:0}.compact.svelte-vt1mxs,.panel.svelte-vt1mxs{border:solid var(--panel-border-width) var(--panel-border-color);border-radius:var(--container-radius);background:var(--panel-background-fill);padding:var(--spacing-lg)} diff --git a/gradio/templates/frontend/assets/Copy.d6bfc6ec.js b/gradio/templates/frontend/assets/Copy.d6bfc6ec.js new file mode 100644 index 0000000000000000000000000000000000000000..72a5cb4461430aa0c7a5121360392d64b1f58898 --- /dev/null +++ b/gradio/templates/frontend/assets/Copy.d6bfc6ec.js @@ -0,0 +1,2 @@ +import{S as p,i as c,s as h,A as a,B as e,f as u,D as i,E as n,p as d}from"./index.37b24c07.js";function v(l){let t,s;return{c(){t=a("svg"),s=a("polyline"),e(s,"points","20 6 9 17 4 12"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 24 24"),e(t,"fill","none"),e(t,"stroke","currentColor"),e(t,"stroke-width","3"),e(t,"stroke-linecap","round"),e(t,"stroke-linejoin","round")},m(o,r){u(o,t,r),i(t,s)},p:n,i:n,o:n,d(o){o&&d(t)}}}class m extends p{constructor(t){super(),c(this,t,null,v,h,{})}}function w(l){let t,s,o;return{c(){t=a("svg"),s=a("path"),o=a("path"),e(s,"fill","currentColor"),e(s,"d","M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z"),e(o,"fill","currentColor"),e(o,"d","M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 32 32")},m(r,g){u(r,t,g),i(t,s),i(t,o)},p:n,i:n,o:n,d(r){r&&d(t)}}}class x extends p{constructor(t){super(),c(this,t,null,w,h,{})}}export{x as C,m as a}; +//# sourceMappingURL=Copy.d6bfc6ec.js.map diff --git a/gradio/templates/frontend/assets/Copy.d6bfc6ec.js.map b/gradio/templates/frontend/assets/Copy.d6bfc6ec.js.map new file mode 100644 index 0000000000000000000000000000000000000000..ab6e72c7fe15492ed092fb43413f7c0d94c97833 --- /dev/null +++ b/gradio/templates/frontend/assets/Copy.d6bfc6ec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Copy.d6bfc6ec.js","sources":["../../../../ui/packages/icons/src/Check.svelte","../../../../ui/packages/icons/src/Copy.svelte"],"sourcesContent":["\n","\n"],"names":[],"mappings":"sbAAA,SASyB,ueCTzB,SAKE,OAGC"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Download.5a6e5fa3.js b/gradio/templates/frontend/assets/Download.5a6e5fa3.js new file mode 100644 index 0000000000000000000000000000000000000000..1b36387d1d2274a8e3a35b71f9e6974317a7d1f4 --- /dev/null +++ b/gradio/templates/frontend/assets/Download.5a6e5fa3.js @@ -0,0 +1,2 @@ +import{S as i,i as p,s as v,A as o,B as e,f as h,D as c,E as n,p as m}from"./index.37b24c07.js";function d(l){let t,s;return{c(){t=o("svg"),s=o("path"),e(s,"fill","currentColor"),e(s,"d","M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10l10-10z"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 32 32")},m(a,r){h(a,t,r),c(t,s)},p:n,i:n,o:n,d(a){a&&m(t)}}}class g extends i{constructor(t){super(),p(this,t,null,d,v,{})}}export{g as D}; +//# sourceMappingURL=Download.5a6e5fa3.js.map diff --git a/gradio/templates/frontend/assets/Download.5a6e5fa3.js.map b/gradio/templates/frontend/assets/Download.5a6e5fa3.js.map new file mode 100644 index 0000000000000000000000000000000000000000..297d5209966d6ad3ef0e5dfa7e9d39022cfe1f90 --- /dev/null +++ b/gradio/templates/frontend/assets/Download.5a6e5fa3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Download.5a6e5fa3.js","sources":["../../../../ui/packages/icons/src/Download.svelte"],"sourcesContent":["\n"],"names":[],"mappings":"0aAAA,SAKE"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css b/gradio/templates/frontend/assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css new file mode 100644 index 0000000000000000000000000000000000000000..c47d6f6f010f0626b0036068fe41d683b37b2954 --- /dev/null +++ b/gradio/templates/frontend/assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css @@ -0,0 +1 @@ +.dropdown-arrow.svelte-p5edak{fill:var(--body-text-color);margin-right:var(--size-2);width:var(--size-5)} diff --git a/gradio/templates/frontend/assets/Empty.ae5c2506.js b/gradio/templates/frontend/assets/Empty.ae5c2506.js new file mode 100644 index 0000000000000000000000000000000000000000..779bd765bfe51c4bb116bda0e46a415f5c16cb43 --- /dev/null +++ b/gradio/templates/frontend/assets/Empty.ae5c2506.js @@ -0,0 +1,2 @@ +import{S as _,i as r,s as m,W as c,F as d,B as f,O as u,f as g,D as p,X as b,Y as v,Z as z,o as h,t as j,p as E}from"./index.37b24c07.js";import"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";function S(t){let s,n,i;const o=t[3].default,a=c(o,t,t[2],null);return{c(){s=d("div"),n=d("div"),a&&a.c(),f(n,"class","icon svelte-1u5vjgs"),f(s,"class","empty svelte-1u5vjgs"),u(s,"small",t[0]==="small"),u(s,"large",t[0]==="large"),u(s,"unpadded_box",t[1])},m(e,l){g(e,s,l),p(s,n),a&&a.m(n,null),i=!0},p(e,[l]){a&&a.p&&(!i||l&4)&&b(a,o,e,e[2],i?z(o,e[2],l,null):v(e[2]),null),l&1&&u(s,"small",e[0]==="small"),l&1&&u(s,"large",e[0]==="large"),l&2&&u(s,"unpadded_box",e[1])},i(e){i||(h(a,e),i=!0)},o(e){j(a,e),i=!1},d(e){e&&E(s),a&&a.d(e)}}}function q(t,s,n){let{$$slots:i={},$$scope:o}=s,{size:a="small"}=s,{unpadded_box:e=!1}=s;return t.$$set=l=>{"size"in l&&n(0,a=l.size),"unpadded_box"in l&&n(1,e=l.unpadded_box),"$$scope"in l&&n(2,o=l.$$scope)},[a,e,o,i]}class D extends _{constructor(s){super(),r(this,s,q,S,m,{size:0,unpadded_box:1})}}export{D as E}; +//# sourceMappingURL=Empty.ae5c2506.js.map diff --git a/gradio/templates/frontend/assets/Empty.ae5c2506.js.map b/gradio/templates/frontend/assets/Empty.ae5c2506.js.map new file mode 100644 index 0000000000000000000000000000000000000000..bb6dd557d372a2b4ad9d630b9e05c0789beff6ab --- /dev/null +++ b/gradio/templates/frontend/assets/Empty.ae5c2506.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Empty.ae5c2506.js","sources":["../../../../ui/packages/atoms/src/Empty.svelte"],"sourcesContent":["\n\n\n\t
\n\t\t\n\t
\n\n\n\n"],"names":[],"mappings":"iYAOc,OAAS,OAAO,cAChB,OAAS,OAAO,mCAH9B,SAMC,uHAJa,OAAS,OAAO,mBAChB,OAAS,OAAO,oJAPlB,OAA0B,YAC1B,eAAe"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.04656a45.css b/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.04656a45.css new file mode 100644 index 0000000000000000000000000000000000000000..7eccfe5b6ac9a0b65a64c4007b294d0f4df457cd --- /dev/null +++ b/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.04656a45.css @@ -0,0 +1 @@ +button.svelte-1ipelgc{display:inline-flex;justify-content:center;align-items:center;transition:var(--button-transition);box-shadow:var(--button-shadow);padding:var(--size-0-5) var(--size-2);text-align:center}button.svelte-1ipelgc:hover,button[disabled].svelte-1ipelgc{box-shadow:var(--button-shadow-hover)}button.svelte-1ipelgc:active{box-shadow:var(--button-shadow-active)}button[disabled].svelte-1ipelgc{opacity:.5;filter:grayscale(30%);cursor:not-allowed}.hide.svelte-1ipelgc{display:none}.primary.svelte-1ipelgc{border:var(--button-border-width) solid var(--button-primary-border-color);background:var(--button-primary-background-fill);color:var(--button-primary-text-color)}.primary.svelte-1ipelgc:hover,.primary[disabled].svelte-1ipelgc{border-color:var(--button-primary-border-color-hover);background:var(--button-primary-background-fill-hover);color:var(--button-primary-text-color-hover)}.secondary.svelte-1ipelgc{border:var(--button-border-width) solid var(--button-secondary-border-color);background:var(--button-secondary-background-fill);color:var(--button-secondary-text-color)}.secondary.svelte-1ipelgc:hover,.secondary[disabled].svelte-1ipelgc{border-color:var(--button-secondary-border-color-hover);background:var(--button-secondary-background-fill-hover);color:var(--button-secondary-text-color-hover)}.stop.svelte-1ipelgc{border:var(--button-border-width) solid var(--button-cancel-border-color);background:var(--button-cancel-background-fill);color:var(--button-cancel-text-color)}.stop.svelte-1ipelgc:hover,.stop[disabled].svelte-1ipelgc{border-color:var(--button-cancel-border-color-hover);background:var(--button-cancel-background-fill-hover);color:var(--button-cancel-text-color-hover)}.sm.svelte-1ipelgc{border-radius:var(--button-small-radius);padding:var(--button-small-padding);font-weight:var(--button-small-text-weight);font-size:var(--button-small-text-size)}.lg.svelte-1ipelgc{border-radius:var(--button-large-radius);padding:var(--button-large-padding);font-weight:var(--button-large-text-weight);font-size:var(--button-large-text-size)}.block.svelte-mppz8v{position:relative;margin:0;box-shadow:var(--block-shadow);border-width:var(--block-border-width);border-color:var(--block-border-color);border-radius:var(--block-radius);background:var(--block-background-fill);width:100%;line-height:var(--line-sm)}.block.border_focus.svelte-mppz8v{border-color:var(--color-accent)}.padded.svelte-mppz8v{padding:var(--block-padding)}.hidden.svelte-mppz8v{display:none}div.svelte-e8n7p6{margin-bottom:var(--spacing-lg);color:var(--block-info-text-color);font-weight:var(--block-info-text-weight);font-size:var(--block-info-text-size);line-height:var(--line-sm)}span.has-info.svelte-1gfkn6j{margin-bottom:var(--spacing-xs)}span.svelte-1gfkn6j:not(.has-info){margin-bottom:var(--spacing-lg)}span.svelte-1gfkn6j{display:inline-block;position:relative;z-index:var(--layer-4);border:solid var(--block-title-border-width) var(--block-title-border-color);border-radius:var(--block-title-radius);background:var(--block-title-background-fill);padding:var(--block-title-padding);color:var(--block-title-text-color);font-weight:var(--block-title-text-weight);font-size:var(--block-title-text-size);line-height:var(--line-sm)}.hide.svelte-1gfkn6j{margin:0;height:0}div.svelte-1frtwj3{display:inline-flex;align-items:center;z-index:var(--layer-2);box-shadow:var(--block-shadow);border:var(--block-label-border-width) solid var(--border-color-primary);border-top:none;border-left:none;border-radius:var(--block-label-radius);background:var(--block-label-background-fill);padding:var(--block-label-padding);pointer-events:none;color:var(--block-label-text-color);font-weight:var(--block-label-text-weight);font-size:var(--block-label-text-size);line-height:var(--line-sm)}div.float.svelte-1frtwj3{position:absolute;top:var(--block-label-margin);left:var(--block-label-margin)}div.svelte-1frtwj3:not(.float){position:static;margin-top:var(--block-label-margin);margin-left:var(--block-label-margin)}.hide.svelte-1frtwj3{height:0}span.svelte-1frtwj3{opacity:.8;margin-right:var(--size-2);width:calc(var(--block-label-text-size) - 1px);height:calc(var(--block-label-text-size) - 1px)}button.svelte-184m5ec{display:flex;justify-content:center;align-items:center;z-index:var(--layer-1);box-shadow:var(--shadow-drop);border:1px solid var(--button-secondary-border-color);border-radius:var(--radius-sm);background:var(--background-fill-primary);width:var(--size-5);height:var(--size-5);color:var(--block-label-text-color)}button.svelte-184m5ec:hover{border:1px solid var(--button-secondary-border-color-hover);color:var(--block-label-text-color)}div.svelte-184m5ec{width:60%;height:60%}.empty.svelte-1u5vjgs{display:flex;justify-content:center;align-items:center;height:var(--size-full)}.icon.svelte-1u5vjgs{opacity:.5;height:var(--size-5);color:var(--body-text-color)}.small.svelte-1u5vjgs{height:calc(var(--size-32) - 20px)}.large.svelte-1u5vjgs{height:calc(var(--size-64) - 20px)}.unpadded_box.small.svelte-1u5vjgs{min-height:var(--size-32)}.unpadded_box.large.svelte-1u5vjgs{min-height:var(--size-64)} diff --git a/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js b/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js new file mode 100644 index 0000000000000000000000000000000000000000..2bf9e674e2eff0f3a188595eea38bc1f01eb19d3 --- /dev/null +++ b/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js @@ -0,0 +1,2 @@ +import{S as K,i as L,s as z,W as N,F as S,B as b,O as m,f as j,I as Z,X as Y,Y as F,Z as T,o as C,t as I,p as O,x as D,$ as E,C as y,g as G,e as H,a0 as J,v as M}from"./index.37b24c07.js";const P=(l,e)=>W[e](l[e]);function k(l,e){const t=e.reduce((n,s)=>(l[s]===void 0||!W[s]?n[s]=" ":n[s]=` ${P(l,s)} `,n),{});return t.styles=` ${Object.values(t).join(" ").replace(/\s+/g," ").trim()} `,t}const W={container(l){return l?"":"padding: 0; margin: 0; border-width: 0; box-shadow: none; overflow: visible; background: transparent;"},label_container(l){return l?"":"border-width: 0; box-shadow: none; overflow: visible; background: transparent;"},grid(l){let e=["","sm-","md-","lg-","xl-","2xl-"],t=Array.isArray(l)?l:[l];return[0,0,0,0,0,0].map((n,s)=>`--${e[s]}grid-cols: var(--grid-${t?.[s]||t?.[t?.length-1]});`).join(" ")},height(l){return l==="auto"?"height: auto;":""},full_width(l){return l?"width: var(--size-full); flex-grow: 1;":"flex-grow: 0; width: fit-content;"},equal_height(l){return l?"align-items: stretch;":"align-items: flex-start;"},visible(l){return l?"":"display:hidden;"},item_container(l){return l?"":"border-width:0;"}};function Q(l){let e,t,n,s,f;const _=l[9].default,d=N(_,l,l[8],null);return{c(){e=S("button"),d&&d.c(),b(e,"class",t=l[4]+" "+l[3]+" "+l[1].join(" ")+" svelte-1ipelgc"),b(e,"style",l[6]),b(e,"id",l[0]),e.disabled=l[5],m(e,"hide",!l[2])},m(a,i){j(a,e,i),d&&d.m(e,null),n=!0,s||(f=Z(e,"click",l[10]),s=!0)},p(a,[i]){d&&d.p&&(!n||i&256)&&Y(d,_,a,a[8],n?T(_,a[8],i,null):F(a[8]),null),(!n||i&26&&t!==(t=a[4]+" "+a[3]+" "+a[1].join(" ")+" svelte-1ipelgc"))&&b(e,"class",t),(!n||i&64)&&b(e,"style",a[6]),(!n||i&1)&&b(e,"id",a[0]),(!n||i&32)&&(e.disabled=a[5]),i&30&&m(e,"hide",!a[2])},i(a){n||(C(d,a),n=!0)},o(a){I(d,a),n=!1},d(a){a&&O(e),d&&d.d(a),s=!1,f()}}}function R(l,e,t){let n,{$$slots:s={},$$scope:f}=e,{style:_={}}=e,{elem_id:d=""}=e,{elem_classes:a=[]}=e,{visible:i=!0}=e,{variant:o="secondary"}=e,{size:v=_.size||"lg"}=e,{disabled:g=!1}=e;function c(r){D.call(this,l,r)}return l.$$set=r=>{"style"in r&&t(7,_=r.style),"elem_id"in r&&t(0,d=r.elem_id),"elem_classes"in r&&t(1,a=r.elem_classes),"visible"in r&&t(2,i=r.visible),"variant"in r&&t(3,o=r.variant),"size"in r&&t(4,v=r.size),"disabled"in r&&t(5,g=r.disabled),"$$scope"in r&&t(8,f=r.$$scope)},l.$$.update=()=>{l.$$.dirty&128&&t(6,{styles:n}=k(_,["full_width"]),n)},[d,a,i,o,v,g,n,_,f,s,c]}class p extends K{constructor(e){super(),L(this,e,R,Q,z,{style:7,elem_id:0,elem_classes:1,visible:2,variant:3,size:4,disabled:5})}}function B(l){let e,t,n,s;const f=l[16].default,_=N(f,l,l[15],null);let d=[{"data-testid":l[5]},{id:l[0]},{class:t="block "+l[1].join(" ")+" svelte-mppz8v"},{style:n=l[9]+" "+(l[8]||null)}],a={};for(let i=0;i{"style"in u&&t(11,d=u.style),"elem_id"in u&&t(0,a=u.elem_id),"elem_classes"in u&&t(1,i=u.elem_classes),"variant"in u&&t(2,o=u.variant),"border_mode"in u&&t(3,v=u.border_mode),"padding"in u&&t(4,g=u.padding),"type"in u&&t(12,c=u.type),"test_id"in u&&t(5,r=u.test_id),"disable"in u&&t(13,h=u.disable),"explicit_call"in u&&t(14,w=u.explicit_call),"visible"in u&&t(6,q=u.visible),"allow_overflow"in u&&t(7,A=u.allow_overflow),"$$scope"in u&&t(15,_=u.$$scope)},l.$$.update=()=>{l.$$.dirty&26624&&t(9,{styles:n}=w?k(d,[]):h?k({container:!1},["container"]):{styles:""},n),l.$$.dirty&2048&&t(8,s=(typeof d.height=="number"?`height: ${d.height}px; `:"")+(typeof d.width=="number"?`width: ${d.width}px;`:""))},[a,i,o,v,g,r,q,A,s,n,X,d,c,h,w,_,f]}class $ extends K{constructor(e){super(),L(this,e,V,U,z,{style:11,elem_id:0,elem_classes:1,variant:2,border_mode:3,padding:4,type:12,test_id:5,disable:13,explicit_call:14,visible:6,allow_overflow:7})}}export{p as B,$ as a,k as g}; +//# sourceMappingURL=Empty.svelte_svelte_type_style_lang.94e7c7a3.js.map diff --git a/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js.map b/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js.map new file mode 100644 index 0000000000000000000000000000000000000000..ee9aff737b8b9111c244180004ba9d05e4374165 --- /dev/null +++ b/gradio/templates/frontend/assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Empty.svelte_svelte_type_style_lang.94e7c7a3.js","sources":["../../../../ui/packages/utils/src/styles.ts","../../../../ui/packages/button/src/Button.svelte","../../../../ui/packages/atoms/src/Block.svelte"],"sourcesContent":["export interface Styles {\n\tcontainer?: boolean;\n\tgrid?: number | Array;\n\theight?: \"auto\" | string | number;\n\twidth?: \"auto\" | string | number;\n\tfull_width?: boolean;\n\tequal_height?: boolean;\n\tvisible?: boolean;\n\titem_container?: boolean;\n\tcolor_map?: Record;\n\tlabel_container?: boolean;\n\tgap?: boolean;\n\tsize?: \"sm\" | \"lg\";\n\tpreview?: boolean;\n\tshow_copy_button?: boolean;\n}\n\ntype PartialRecord = {\n\t[P in K]?: T;\n};\n\ntype ProcessedStyles = PartialRecord & {\n\tstyles: string;\n};\n\nconst get_style = (styles: Styles, key: T) => {\n\treturn style_handlers[key](styles[key]!);\n};\n\nexport function get_styles(\n\tstyles: Styles,\n\tallowed_styles: Array\n): ProcessedStyles {\n\tconst processed_styles = allowed_styles.reduce((acc, next) => {\n\t\tif (styles[next] === undefined || !style_handlers[next]) acc[next] = \" \";\n\t\telse {\n\t\t\tacc[next] = ` ${get_style(styles, next)} `;\n\t\t}\n\t\treturn acc;\n\t}, {} as ProcessedStyles);\n\n\tprocessed_styles.styles = ` ${Object.values(processed_styles)\n\t\t.join(\" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim()} `;\n\n\treturn processed_styles;\n}\n\ntype StyleHandlers = {\n\t[K in keyof Styles]: (style: Exclude) => string;\n};\n\nconst style_handlers: StyleHandlers = {\n\tcontainer(container_visible) {\n\t\treturn container_visible\n\t\t\t? \"\"\n\t\t\t: `padding: 0; margin: 0; border-width: 0; box-shadow: none; overflow: visible; background: transparent;`;\n\t},\n\tlabel_container(visible) {\n\t\treturn visible\n\t\t\t? \"\"\n\t\t\t: `border-width: 0; box-shadow: none; overflow: visible; background: transparent;`;\n\t},\n\tgrid(grid) {\n\t\tlet grid_map = [\"\", \"sm-\", \"md-\", \"lg-\", \"xl-\", \"2xl-\"];\n\t\tlet _grid = Array.isArray(grid) ? grid : [grid];\n\n\t\treturn [0, 0, 0, 0, 0, 0]\n\t\t\t.map(\n\t\t\t\t(_, i) =>\n\t\t\t\t\t`--${grid_map[i]}grid-cols: var(--grid-${\n\t\t\t\t\t\t_grid?.[i] || _grid?.[_grid?.length - 1]\n\t\t\t\t\t});`\n\t\t\t)\n\t\t\t.join(\" \");\n\t},\n\theight(height) {\n\t\treturn height === \"auto\" ? \"height: auto;\" : \"\";\n\t},\n\tfull_width(full_width) {\n\t\treturn full_width\n\t\t\t? \"width: var(--size-full); flex-grow: 1;\"\n\t\t\t: \"flex-grow: 0; width: fit-content;\";\n\t},\n\tequal_height(equal_height) {\n\t\treturn equal_height ? \"align-items: stretch;\" : \"align-items: flex-start;\";\n\t},\n\tvisible(visible) {\n\t\treturn visible ? \"\" : \"display:hidden;\";\n\t},\n\titem_container(visible) {\n\t\treturn visible ? \"\" : \"border-width:0;\";\n\t}\n} as const;\n\nexport const create_classes = (\n\tstyles: Record,\n\tprefix: string = \"\"\n): string => {\n\tlet classes: Array = [];\n\tlet target_styles: Record = {};\n\tif (prefix === \"\") {\n\t\ttarget_styles = styles;\n\t} else {\n\t\tfor (const prop in styles) {\n\t\t\tif (prop.startsWith(prefix + \"_\")) {\n\t\t\t\tconst propname = prop.substring(prop.indexOf(\"_\") + 1);\n\t\t\t\ttarget_styles[propname] = styles[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (target_styles.hasOwnProperty(\"margin\")) {\n\t\tif (!Array.isArray(target_styles.margin)) {\n\t\t\ttarget_styles.margin = !!target_styles.margin\n\t\t\t\t? [true, true, true, true]\n\t\t\t\t: [false, false, false, false];\n\t\t}\n\n\t\tlet margin_map = [\"t\", \"r\", \"b\", \"l\"];\n\n\t\t(target_styles.margin as boolean[]).forEach((margin, i) => {\n\t\t\tif (!margin) {\n\t\t\t\tclasses.push(`!m${margin_map[i]}-0`);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (target_styles.hasOwnProperty(\"border\")) {\n\t\tif (!Array.isArray(target_styles.border)) {\n\t\t\ttarget_styles.border = !!target_styles.border\n\t\t\t\t? [true, true, true, true]\n\t\t\t\t: [false, false, false, false];\n\t\t}\n\n\t\tlet border_map = [\"t\", \"r\", \"b\", \"l\"];\n\n\t\t(target_styles.border as boolean[]).forEach((border, i) => {\n\t\t\tif (!border) {\n\t\t\t\tclasses.push(`!border-${border_map[i]}-0`);\n\t\t\t}\n\t\t});\n\t}\n\n\tswitch (target_styles.rounded) {\n\t\tcase true:\n\t\t\tclasses.push(\"!rounded-lg\");\n\t\t\tbreak;\n\t\tcase false:\n\t\t\tclasses.push(\"!rounded-none\");\n\t\t\tbreak;\n\t}\n\n\tswitch (target_styles.full_width) {\n\t\tcase true:\n\t\t\tclasses.push(\"w-full\");\n\t\t\tbreak;\n\t\tcase false:\n\t\t\tclasses.push(\"!grow-0\");\n\t\t\tbreak;\n\t}\n\n\tswitch (target_styles.text_color) {\n\t\tcase \"red\":\n\t\t\tclasses.push(\"!text-red-500\", \"dark:text-red-100\");\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tclasses.push(\"!text-yellow-500\", \"dark:text-yellow-100\");\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tclasses.push(\"!text-green-500\", \"dark:text-green-100\");\n\t\t\tbreak;\n\t\tcase \"blue\":\n\t\t\tclasses.push(\"!text-blue-500\", \"dark:text-blue-100\");\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tclasses.push(\"!text-purple-500\", \"dark:text-purple-100\");\n\t\t\tbreak;\n\t\tcase \"black\":\n\t\t\tclasses.push(\"!text-gray-700\", \"dark:text-gray-50\");\n\t\t\tbreak;\n\t}\n\tswitch (target_styles.bg_color) {\n\t\tcase \"red\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-red-100 !from-red-100 !to-red-200 !border-red-300\",\n\t\t\t\t\"dark:!bg-red-700 dark:!from-red-700 dark:!to-red-800 dark:!border-red-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-yellow-100 !from-yellow-100 !to-yellow-200 !border-yellow-300\",\n\t\t\t\t\"dark:!bg-yellow-700 dark:!from-yellow-700 dark:!to-yellow-800 dark:!border-yellow-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-green-100 !from-green-100 !to-green-200 !border-green-300\",\n\t\t\t\t\"dark:!bg-green-700 dark:!from-green-700 dark:!to-green-800 dark:!border-green-900 !text-gray-800\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"blue\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-blue-100 !from-blue-100 !to-blue-200 !border-blue-300\",\n\t\t\t\t\"dark:!bg-blue-700 dark:!from-blue-700 dark:!to-blue-800 dark:!border-blue-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-purple-100 !from-purple-100 !to-purple-200 !border-purple-300\",\n\t\t\t\t\"dark:!bg-purple-700 dark:!from-purple-700 dark:!to-purple-800 dark:!border-purple-900\"\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"black\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-gray-100 !from-gray-100 !to-gray-200 !border-gray-300\",\n\t\t\t\t\"dark:!bg-gray-700 dark:!from-gray-700 dark:!to-gray-800 dark:!border-gray-900\"\n\t\t\t);\n\t\tcase \"pink\":\n\t\t\tclasses.push(\n\t\t\t\t\"!bg-pink-100 !from-pink-100 !to-pink-200 !border-pink-300\",\n\t\t\t\t\"dark:!bg-pink-700 dark:!from-pink-700 dark:!to-pink-800 dark:!border-pink-900 !text-gray-800\"\n\t\t\t);\n\t\t\tbreak;\n\t}\n\treturn \" \" + classes.join(\" \");\n};\n","\n\n\n\t\n\n\n\n","\n\n\n\t\n\n\n\n"],"names":[],"mappings":"4LAyBA,KAAM,GAAY,CAAyB,EAAgB,IACnD,EAAe,GAAK,EAAO,EAAK,aAIvC,EACA,EACkB,MACZ,GAAmB,EAAe,OAAO,CAAC,EAAK,KAChD,EAAO,KAAU,QAAa,CAAC,EAAe,KAAW,GAAQ,MAEhE,GAAQ,IAAI,EAAU,EAAQ,CAAI,KAEhC,GACL,EAAqB,WAEP,OAAS,IAAI,OAAO,OAAO,CAAgB,EAC1D,KAAK,GAAG,EACR,QAAQ,OAAQ,GAAG,EACnB,UAEK,CACR,CAMA,KAAM,GAAgC,CACrC,UAAU,EAAmB,OACrB,GACJ,GACA,yGAEJ,gBAAgB,EAAS,OACjB,GACJ,GACA,kFAEJ,KAAK,EAAM,IACN,GAAW,CAAC,GAAI,MAAO,MAAO,MAAO,MAAO,MAAM,EAClD,EAAQ,MAAM,QAAQ,CAAI,EAAI,EAAO,CAAC,CAAI,QAEvC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtB,IACA,CAAC,EAAG,IACH,KAAK,EAAS,2BACb,IAAQ,IAAM,IAAQ,GAAO,OAAS,MAEzC,EACC,KAAK,GAAG,GAEX,OAAO,EAAQ,OACP,KAAW,OAAS,gBAAkB,IAE9C,WAAW,EAAY,OACf,GACJ,yCACA,qCAEJ,aAAa,EAAc,OACnB,GAAe,wBAA0B,4BAEjD,QAAQ,EAAS,OACT,GAAU,GAAK,mBAEvB,eAAe,EAAS,OAChB,GAAU,GAAK,kBAExB,sHC5ES,SAAO,SAAU,KAAa,KAAK,GAAG,iCACvC,eACH,kCAHS,cAFd,2JAGS,SAAO,SAAU,KAAa,KAAK,GAAG,8DACvC,0BACH,sDAHS,sIAbF,eACA,UAAkB,OAClB,sBACA,UAAmB,OACnB,UAA4C,gBAC5C,OAAoB,EAAM,MAAQ,SAClC,WAAoB,iWAEzB,UAAW,EAAW,GAAQ,YAAY,4PC0BnC,UACT,wBAEU,KAAa,KAAK,GAAG,6BAG3B,SAAS,OAAc,oEAPzB,oCAGQ,OAAY,EAAK,eAEjB,yBACM,OAAgB,OAAO,qBAEvB,wBACJ,KAAiB,UAAY,qBAV9C,mJAEc,qBACT,gCAEU,KAAa,KAAK,GAAG,mDAG3B,SAAS,OAAc,mCAJjB,OAAY,EAAK,eAEjB,yBACM,OAAgB,OAAO,0BAEvB,+BACJ,KAAiB,UAAY,oGATvC,YAAA,kFAAA,YAAA,kHAAA,2HA/BK,eACA,UAAkB,OAClB,sBACA,UAAuC,YACvC,cAAgC,WAChC,UAAmB,OACnB,OAA8B,aAC9B,UAA8B,WAC9B,UAAmB,OACnB,gBAAyB,OACzB,UAAU,OACV,iBAAiB,MAExB,EAAM,IAAS,WAAa,WAAa,MAE9B,SAA0B,WAAW,8fAI9C,UAAW,EACd,EAAW,MACX,EACA,GAAa,UAAW,KAAU,WAAW,IAC3C,OAAQ,4BACV,EACF,OACQ,GAAM,QAAW,oBAAsB,EAAM,aAAe,WAC5D,GAAM,OAAU,mBAAqB,EAAM,WAAa"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/File.92a85ebc.js b/gradio/templates/frontend/assets/File.92a85ebc.js new file mode 100644 index 0000000000000000000000000000000000000000..d7f964405e7f5374eaa93358effb6a4ebfe488fb --- /dev/null +++ b/gradio/templates/frontend/assets/File.92a85ebc.js @@ -0,0 +1,2 @@ +import{S as h,i as c,s as f,A as o,B as t,f as d,D as i,E as r,p as u}from"./index.37b24c07.js";function g(l){let e,s,a;return{c(){e=o("svg"),s=o("path"),a=o("polyline"),t(s,"d","M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"),t(a,"points","13 2 13 9 20 9"),t(e,"xmlns","http://www.w3.org/2000/svg"),t(e,"width","100%"),t(e,"height","100%"),t(e,"viewBox","0 0 24 24"),t(e,"fill","none"),t(e,"stroke","currentColor"),t(e,"stroke-width","1.5"),t(e,"stroke-linecap","round"),t(e,"stroke-linejoin","round"),t(e,"class","feather feather-file")},m(n,p){d(n,e,p),i(e,s),i(e,a)},p:r,i:r,o:r,d(n){n&&u(e)}}}class v extends h{constructor(e){super(),c(this,e,null,g,f,{})}}export{v as F}; +//# sourceMappingURL=File.92a85ebc.js.map diff --git a/gradio/templates/frontend/assets/File.92a85ebc.js.map b/gradio/templates/frontend/assets/File.92a85ebc.js.map new file mode 100644 index 0000000000000000000000000000000000000000..a2ef8e4b32366eaf07afd5d93a61554e82cb509b --- /dev/null +++ b/gradio/templates/frontend/assets/File.92a85ebc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"File.92a85ebc.js","sources":["../../../../ui/packages/icons/src/File.svelte"],"sourcesContent":["\n\t\n\t\n\n"],"names":[],"mappings":"gjBAAA,SAYC,OACA"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Form.0a7d9dad.css b/gradio/templates/frontend/assets/Form.0a7d9dad.css new file mode 100644 index 0000000000000000000000000000000000000000..4f21cff8eebea060d05e431443a878eec064de57 --- /dev/null +++ b/gradio/templates/frontend/assets/Form.0a7d9dad.css @@ -0,0 +1 @@ +div.svelte-awbtu4{display:flex;flex-direction:inherit;flex-wrap:wrap;gap:var(--form-gap-width);box-shadow:var(--block-shadow);border:var(--block-border-width) solid var(--border-color-primary);border-radius:var(--radius-lg);background:var(--border-color-primary);overflow:hidden}div.svelte-awbtu4 .block{box-shadow:none!important;border-width:0px!important;border-radius:0!important}.hidden.svelte-awbtu4{display:none} diff --git a/gradio/templates/frontend/assets/Form.829e1388.js b/gradio/templates/frontend/assets/Form.829e1388.js new file mode 100644 index 0000000000000000000000000000000000000000..734eb603f02f36e524fde085aa4cb5b1963fe182 --- /dev/null +++ b/gradio/templates/frontend/assets/Form.829e1388.js @@ -0,0 +1,2 @@ +import{S as r,i as _,s as f,W as u,F as c,B as m,O as o,f as d,X as v,Y as b,Z as g,o as p,t as h,p as F}from"./index.37b24c07.js";function S(i){let t,a;const n=i[2].default,s=u(n,i,i[1],null);return{c(){t=c("div"),s&&s.c(),m(t,"class","form svelte-awbtu4"),o(t,"hidden",!i[0])},m(e,l){d(e,t,l),s&&s.m(t,null),a=!0},p(e,[l]){s&&s.p&&(!a||l&2)&&v(s,n,e,e[1],a?g(n,e[1],l,null):b(e[1]),null),l&1&&o(t,"hidden",!e[0])},i(e){a||(p(s,e),a=!0)},o(e){h(s,e),a=!1},d(e){e&&F(t),s&&s.d(e)}}}function q(i,t,a){let{$$slots:n={},$$scope:s}=t,{visible:e=!0}=t;return i.$$set=l=>{"visible"in l&&a(0,e=l.visible),"$$scope"in l&&a(1,s=l.$$scope)},[e,s,n]}class y extends r{constructor(t){super(),_(this,t,q,S,f,{visible:0})}}export{y as F}; +//# sourceMappingURL=Form.829e1388.js.map diff --git a/gradio/templates/frontend/assets/Form.829e1388.js.map b/gradio/templates/frontend/assets/Form.829e1388.js.map new file mode 100644 index 0000000000000000000000000000000000000000..dbd7a744c31e4fa3dee32a398f7f683a0e37e5ca --- /dev/null +++ b/gradio/templates/frontend/assets/Form.829e1388.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Form.829e1388.js","sources":["../../../../ui/packages/app/src/components/Form/Form.svelte"],"sourcesContent":["\n\n
\n\t\n
\n\n\n"],"names":[],"mappings":"gRAIiC,cAAjC,2HAAiC,0HAHrB,UAAU"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Image.3a14ca24.css b/gradio/templates/frontend/assets/Image.3a14ca24.css new file mode 100644 index 0000000000000000000000000000000000000000..60f45635043d082881d8d8a529c1142ee028a68b --- /dev/null +++ b/gradio/templates/frontend/assets/Image.3a14ca24.css @@ -0,0 +1 @@ +img.svelte-gqt00k{border-radius:var(--radius-lg);max-width:none}img.selected.svelte-gqt00k{border-color:var(--border-color-accent)}.table.svelte-gqt00k{margin:0 auto;border:2px solid var(--border-color-primary);border-radius:var(--radius-lg);width:var(--size-20);height:var(--size-20);object-fit:cover}.gallery.svelte-gqt00k{border:2px solid var(--border-color-primary);max-height:var(--size-20);object-fit:cover} diff --git a/gradio/templates/frontend/assets/Image.3b7bf79b.js b/gradio/templates/frontend/assets/Image.3b7bf79b.js new file mode 100644 index 0000000000000000000000000000000000000000..40774f1dca8ccca74ddad4bc4728816d84c37429 --- /dev/null +++ b/gradio/templates/frontend/assets/Image.3b7bf79b.js @@ -0,0 +1,2 @@ +import{S as g,i as u,s as v,F as d,K as _,B as r,O as n,f as y,E as c,p as b}from"./index.37b24c07.js";function o(t){let e,a;return{c(){e=d("img"),_(e.src,a=t[1]+t[0])||r(e,"src",a),r(e,"class","svelte-gqt00k"),n(e,"table",t[2]==="table"),n(e,"gallery",t[2]==="gallery"),n(e,"selected",t[3])},m(l,s){y(l,e,s)},p(l,[s]){s&3&&!_(e.src,a=l[1]+l[0])&&r(e,"src",a),s&4&&n(e,"table",l[2]==="table"),s&4&&n(e,"gallery",l[2]==="gallery"),s&8&&n(e,"selected",l[3])},i:c,o:c,d(l){l&&b(e)}}}function q(t,e,a){let{value:l}=e,{samples_dir:s}=e,{type:f}=e,{selected:m=!1}=e;return t.$$set=i=>{"value"in i&&a(0,l=i.value),"samples_dir"in i&&a(1,s=i.samples_dir),"type"in i&&a(2,f=i.type),"selected"in i&&a(3,m=i.selected)},[l,s,f,m]}class E extends g{constructor(e){super(),u(this,e,q,o,v,{value:0,samples_dir:1,type:2,selected:3})}}var h=E;export{h as E}; +//# sourceMappingURL=Image.3b7bf79b.js.map diff --git a/gradio/templates/frontend/assets/Image.3b7bf79b.js.map b/gradio/templates/frontend/assets/Image.3b7bf79b.js.map new file mode 100644 index 0000000000000000000000000000000000000000..e374662ecb983aaeade400ffb723b2145d48a14a --- /dev/null +++ b/gradio/templates/frontend/assets/Image.3b7bf79b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Image.3b7bf79b.js","sources":["../../../../ui/packages/app/src/components/Dataset/ExampleComponents/Image.svelte"],"sourcesContent":["\n\n\n\n\n\n"],"names":[],"mappings":"6JASM,KAAc,6DACN,OAAS,OAAO,gBACd,OAAS,SAAS,+BAHlC,mCACM,KAAc,qCACN,OAAS,OAAO,qBACd,OAAS,SAAS,0EAVtB,YACA,kBACA,WACA,WAAoB"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/Image.5624fd80.js b/gradio/templates/frontend/assets/Image.5624fd80.js new file mode 100644 index 0000000000000000000000000000000000000000..a448c097b04f7feb6cb88a82356c4dec46a890b8 --- /dev/null +++ b/gradio/templates/frontend/assets/Image.5624fd80.js @@ -0,0 +1,2 @@ +import{S as h,i as g,s as d,A as n,B as e,f,D as a,E as l,p as m}from"./index.37b24c07.js";function u(c){let t,r,s,o;return{c(){t=n("svg"),r=n("rect"),s=n("circle"),o=n("polyline"),e(r,"x","3"),e(r,"y","3"),e(r,"width","18"),e(r,"height","18"),e(r,"rx","2"),e(r,"ry","2"),e(s,"cx","8.5"),e(s,"cy","8.5"),e(s,"r","1.5"),e(o,"points","21 15 16 10 5 21"),e(t,"xmlns","http://www.w3.org/2000/svg"),e(t,"width","100%"),e(t,"height","100%"),e(t,"viewBox","0 0 24 24"),e(t,"fill","none"),e(t,"stroke","currentColor"),e(t,"stroke-width","1.5"),e(t,"stroke-linecap","round"),e(t,"stroke-linejoin","round"),e(t,"class","feather feather-image")},m(i,p){f(i,t,p),a(t,r),a(t,s),a(t,o)},p:l,i:l,o:l,d(i){i&&m(t)}}}class x extends h{constructor(t){super(),g(this,t,null,u,d,{})}}export{x as I}; +//# sourceMappingURL=Image.5624fd80.js.map diff --git a/gradio/templates/frontend/assets/Image.5624fd80.js.map b/gradio/templates/frontend/assets/Image.5624fd80.js.map new file mode 100644 index 0000000000000000000000000000000000000000..17c0e76d982f82242b175b9e1538c0c98ff297dd --- /dev/null +++ b/gradio/templates/frontend/assets/Image.5624fd80.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Image.5624fd80.js","sources":["../../../../ui/packages/icons/src/Image.svelte"],"sourcesContent":["\n\t\n\t\n\t\n\n"],"names":[],"mappings":"koBAAA,SAYC,OACA,OACA"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/api-logo.5346f193.svg b/gradio/templates/frontend/assets/api-logo.5346f193.svg new file mode 100644 index 0000000000000000000000000000000000000000..bce49a58f0e8a89980e96b8f3bb99f7da48e6254 --- /dev/null +++ b/gradio/templates/frontend/assets/api-logo.5346f193.svg @@ -0,0 +1,4 @@ + + + + diff --git a/gradio/templates/frontend/assets/color.b4725534.js b/gradio/templates/frontend/assets/color.b4725534.js new file mode 100644 index 0000000000000000000000000000000000000000..02b56f182166078b2dc1c6c9acced939359aa7f7 --- /dev/null +++ b/gradio/templates/frontend/assets/color.b4725534.js @@ -0,0 +1,2 @@ +import{am as o}from"./index.37b24c07.js";const t=r=>o[r%o.length];export{t as g}; +//# sourceMappingURL=color.b4725534.js.map diff --git a/gradio/templates/frontend/assets/color.b4725534.js.map b/gradio/templates/frontend/assets/color.b4725534.js.map new file mode 100644 index 0000000000000000000000000000000000000000..37963d3a07826e5e7873f05b002dd0efa87c1cbb --- /dev/null +++ b/gradio/templates/frontend/assets/color.b4725534.js.map @@ -0,0 +1 @@ +{"version":3,"file":"color.b4725534.js","sources":["../../../../ui/packages/utils/src/color.ts"],"sourcesContent":["import { colors, ordered_colors } from \"@gradio/theme\";\n\nexport const get_next_color = (index: number): keyof typeof colors => {\n\treturn ordered_colors[index % ordered_colors.length];\n};\n"],"names":[],"mappings":"8CAEa,GAAiB,AAAC,GACvB,EAAe,EAAQ,EAAe"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/csv.27f5436c.js b/gradio/templates/frontend/assets/csv.27f5436c.js new file mode 100644 index 0000000000000000000000000000000000000000..7ee090c69a9158e1331c5630c3dff9699534ab58 --- /dev/null +++ b/gradio/templates/frontend/assets/csv.27f5436c.js @@ -0,0 +1,2 @@ +import{d as a}from"./dsv.7fe76a93.js";var s=a(","),v=s.parse,o=s.parseRows;export{v as a,o as c}; +//# sourceMappingURL=csv.27f5436c.js.map diff --git a/gradio/templates/frontend/assets/csv.27f5436c.js.map b/gradio/templates/frontend/assets/csv.27f5436c.js.map new file mode 100644 index 0000000000000000000000000000000000000000..a2fc13e7d828302e2d638bb4c4ef261c7c9670ec --- /dev/null +++ b/gradio/templates/frontend/assets/csv.27f5436c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csv.27f5436c.js","sources":["../../../../ui/node_modules/.pnpm/d3-dsv@3.0.1/node_modules/d3-dsv/src/csv.js"],"sourcesContent":["import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n"],"names":["dsv"],"mappings":"sCAEA,GAAI,GAAMA,EAAI,GAAG,EAEN,EAAW,EAAI,MACf,EAAe,EAAI"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/dockerfile.088eba71.js b/gradio/templates/frontend/assets/dockerfile.088eba71.js new file mode 100644 index 0000000000000000000000000000000000000000..1c4466ab9a87e5fe8865875adf758592dbfa167c --- /dev/null +++ b/gradio/templates/frontend/assets/dockerfile.088eba71.js @@ -0,0 +1,2 @@ +function c(n){a(n,"start");var t={},e=n.languageData||{},s=!1;for(var l in n)if(l!=e&&n.hasOwnProperty(l))for(var u=t[l]=[],o=n[l],r=0;r2&&o.token&&typeof o.token!="string"){e.pending=[];for(var g=2;g-1)return null;var l=e.indent.length-1,u=n[e.state];n:for(;;){for(var o=0;o 2 && rule.token && typeof rule.token != \"string\") {\n state.pending = [];\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n state.pending.push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n}\n\nfunction indentFunction(states, meta) {\n return function(state, textAfter) {\n if (state.indent == null || meta.dontIndentStates && meta.doneIndentState.indexOf(state.state) > -1)\n return null\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n}\n","import {simpleMode} from \"./simple-mode.js\"\n\nvar from = \"from\";\nvar fromRegex = new RegExp(\"^(\\\\s*)\\\\b(\" + from + \")\\\\b\", \"i\");\n\nvar shells = [\"run\", \"cmd\", \"entrypoint\", \"shell\"];\nvar shellsAsArrayRegex = new RegExp(\"^(\\\\s*)(\" + shells.join('|') + \")(\\\\s+\\\\[)\", \"i\");\n\nvar expose = \"expose\";\nvar exposeRegex = new RegExp(\"^(\\\\s*)(\" + expose + \")(\\\\s+)\", \"i\");\n\nvar others = [\n \"arg\", \"from\", \"maintainer\", \"label\", \"env\",\n \"add\", \"copy\", \"volume\", \"user\",\n \"workdir\", \"onbuild\", \"stopsignal\", \"healthcheck\", \"shell\"\n];\n\n// Collect all Dockerfile directives\nvar instructions = [from, expose].concat(shells).concat(others),\n instructionRegex = \"(\" + instructions.join('|') + \")\",\n instructionOnlyLine = new RegExp(\"^(\\\\s*)\" + instructionRegex + \"(\\\\s*)(#.*)?$\", \"i\"),\n instructionWithArguments = new RegExp(\"^(\\\\s*)\" + instructionRegex + \"(\\\\s+)\", \"i\");\n\nexport const dockerFile = simpleMode({\n start: [\n // Block comment: This is a line starting with a comment\n {\n regex: /^\\s*#.*$/,\n sol: true,\n token: \"comment\"\n },\n {\n regex: fromRegex,\n token: [null, \"keyword\"],\n sol: true,\n next: \"from\"\n },\n // Highlight an instruction without any arguments (for convenience)\n {\n regex: instructionOnlyLine,\n token: [null, \"keyword\", null, \"error\"],\n sol: true\n },\n {\n regex: shellsAsArrayRegex,\n token: [null, \"keyword\", null],\n sol: true,\n next: \"array\"\n },\n {\n regex: exposeRegex,\n token: [null, \"keyword\", null],\n sol: true,\n next: \"expose\"\n },\n // Highlight an instruction followed by arguments\n {\n regex: instructionWithArguments,\n token: [null, \"keyword\", null],\n sol: true,\n next: \"arguments\"\n },\n {\n regex: /./,\n token: null\n }\n ],\n from: [\n {\n regex: /\\s*$/,\n token: null,\n next: \"start\"\n },\n {\n // Line comment without instruction arguments is an error\n regex: /(\\s*)(#.*)$/,\n token: [null, \"error\"],\n next: \"start\"\n },\n {\n regex: /(\\s*\\S+\\s+)(as)/i,\n token: [null, \"keyword\"],\n next: \"start\"\n },\n // Fail safe return to start\n {\n token: null,\n next: \"start\"\n }\n ],\n single: [\n {\n regex: /(?:[^\\\\']|\\\\.)/,\n token: \"string\"\n },\n {\n regex: /'/,\n token: \"string\",\n pop: true\n }\n ],\n double: [\n {\n regex: /(?:[^\\\\\"]|\\\\.)/,\n token: \"string\"\n },\n {\n regex: /\"/,\n token: \"string\",\n pop: true\n }\n ],\n array: [\n {\n regex: /\\]/,\n token: null,\n next: \"start\"\n },\n {\n regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/,\n token: \"string\"\n }\n ],\n expose: [\n {\n regex: /\\d+$/,\n token: \"number\",\n next: \"start\"\n },\n {\n regex: /[^\\d]+$/,\n token: null,\n next: \"start\"\n },\n {\n regex: /\\d+/,\n token: \"number\"\n },\n {\n regex: /[^\\d]+/,\n token: null\n },\n // Fail safe return to start\n {\n token: null,\n next: \"start\"\n }\n ],\n arguments: [\n {\n regex: /^\\s*#.*$/,\n sol: true,\n token: \"comment\"\n },\n {\n regex: /\"(?:[^\\\\\"]|\\\\.)*\"?$/,\n token: \"string\",\n next: \"start\"\n },\n {\n regex: /\"/,\n token: \"string\",\n push: \"double\"\n },\n {\n regex: /'(?:[^\\\\']|\\\\.)*'?$/,\n token: \"string\",\n next: \"start\"\n },\n {\n regex: /'/,\n token: \"string\",\n push: \"single\"\n },\n {\n regex: /[^#\"']+[\\\\`]$/,\n token: null\n },\n {\n regex: /[^#\"']+$/,\n token: null,\n next: \"start\"\n },\n {\n regex: /[^#\"']+/,\n token: null\n },\n // Fail safe return to start\n {\n token: null,\n next: \"start\"\n }\n ],\n languageData: {\n commentTokens: {line: \"#\"}\n }\n});\n\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/dsv.7fe76a93.js b/gradio/templates/frontend/assets/dsv.7fe76a93.js new file mode 100644 index 0000000000000000000000000000000000000000..fd7a34bfb56dda82dfbc84dbca32dfe81c5c5b4d --- /dev/null +++ b/gradio/templates/frontend/assets/dsv.7fe76a93.js @@ -0,0 +1,6 @@ +var D={},A={},E=34,m=10,R=13;function I(r){return new Function("d","return {"+r.map(function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'}).join(",")+"}")}function B(r,t){var e=I(r);return function(a,c){return t(e(a),c,r)}}function F(r){var t=Object.create(null),e=[];return r.forEach(function(a){for(var c in a)c in t||e.push(t[c]=c)}),e}function f(r,t){var e=r+"",a=e.length;return a9999?"+"+f(r,6):f(r,4)}function S(r){var t=r.getUTCHours(),e=r.getUTCMinutes(),a=r.getUTCSeconds(),c=r.getUTCMilliseconds();return isNaN(r)?"Invalid Date":L(r.getUTCFullYear())+"-"+f(r.getUTCMonth()+1,2)+"-"+f(r.getUTCDate(),2)+(c?"T"+f(t,2)+":"+f(e,2)+":"+f(a,2)+"."+f(c,3)+"Z":a?"T"+f(t,2)+":"+f(e,2)+":"+f(a,2)+"Z":e||t?"T"+f(t,2)+":"+f(e,2)+"Z":"")}function Z(r){var t=new RegExp('["'+r+` +\r]`),e=r.charCodeAt(0);function a(n,o){var s,i,u=c(n,function(h,l){if(s)return s(h,l-1);i=h,s=o?B(h,o):I(h)});return u.columns=i||[],u}function c(n,o){var s=[],i=n.length,u=0,h=0,l,v=i<=0,C=!1;n.charCodeAt(i-1)===m&&--i,n.charCodeAt(i-1)===R&&--i;function w(){if(v)return A;if(C)return C=!1,D;var j,d=u,p;if(n.charCodeAt(d)===E){for(;u++=i?v=!0:(p=n.charCodeAt(u++))===m?C=!0:p===R&&(C=!0,n.charCodeAt(u)===m&&++u),n.slice(d+1,j-1).replace(/""/g,'"')}for(;u 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/frontmatter.7c06757b.js b/gradio/templates/frontend/assets/frontmatter.7c06757b.js new file mode 100644 index 0000000000000000000000000000000000000000..c8a042a87bd03f9feb3741149e228a417a2d9222 --- /dev/null +++ b/gradio/templates/frontend/assets/frontmatter.7c06757b.js @@ -0,0 +1,2 @@ +import{s as m,t as a,f as s,a as i,p,S as l}from"./index.8f4ac20d.js";import{yaml as f}from"./yaml.44f733df.js";import"./index.37b24c07.js";import"./Blocks.5efe22d4.js";import"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import"./BlockLabel.7ce695d8.js";import"./Empty.ae5c2506.js";/* empty css */import"./Copy.d6bfc6ec.js";import"./Download.5a6e5fa3.js";const n=/^---\s*$/m,b={defineNodes:[{name:"Frontmatter",block:!0},"FrontmatterMark"],props:[m({Frontmatter:[a.documentMeta,a.monospace],FrontmatterMark:a.processingInstruction}),s.add({Frontmatter:i,FrontmatterMark:()=>null})],wrap:p(t=>{const{parser:e}=l.define(f);return t.type.name==="Frontmatter"?{parser:e,overlay:[{from:t.from+4,to:t.to-4}]}:null}),parseBlock:[{name:"Frontmatter",before:"HorizontalRule",parse:(t,e)=>{let r;const o=new Array;if(t.lineStart===0&&n.test(e.text)){for(o.push(t.elt("FrontmatterMark",0,4));t.nextLine();)if(n.test(e.text)){r=t.lineStart+4;break}return r!==void 0&&(o.push(t.elt("FrontmatterMark",r-4,r)),t.addElement(t.elt("Frontmatter",0,r,o))),!0}else return!1}}]};export{b as frontmatter}; +//# sourceMappingURL=frontmatter.7c06757b.js.map diff --git a/gradio/templates/frontend/assets/frontmatter.7c06757b.js.map b/gradio/templates/frontend/assets/frontmatter.7c06757b.js.map new file mode 100644 index 0000000000000000000000000000000000000000..84bdb229f9f6e9e92578a5ece2f2efb7806b4add --- /dev/null +++ b/gradio/templates/frontend/assets/frontmatter.7c06757b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"frontmatter.7c06757b.js","sources":["../../../../ui/packages/code/interactive/frontmatter.ts"],"sourcesContent":["import type {\n\tElement,\n\tMarkdownExtension,\n\tBlockContext,\n\tLine\n} from \"@lezer/markdown\";\nimport { parseMixed } from \"@lezer/common\";\nimport { yaml } from \"@codemirror/legacy-modes/mode/yaml\";\nimport { foldInside, foldNodeProp, StreamLanguage } from \"@codemirror/language\";\nimport { styleTags, tags } from \"@lezer/highlight\";\n\nconst frontMatterFence = /^---\\s*$/m;\n\nexport const frontmatter: MarkdownExtension = {\n\tdefineNodes: [{ name: \"Frontmatter\", block: true }, \"FrontmatterMark\"],\n\tprops: [\n\t\tstyleTags({\n\t\t\tFrontmatter: [tags.documentMeta, tags.monospace],\n\t\t\tFrontmatterMark: tags.processingInstruction\n\t\t}),\n\t\tfoldNodeProp.add({\n\t\t\tFrontmatter: foldInside,\n\t\t\tFrontmatterMark: () => null\n\t\t})\n\t],\n\twrap: parseMixed((node) => {\n\t\tconst { parser } = StreamLanguage.define(yaml);\n\t\tif (node.type.name === \"Frontmatter\") {\n\t\t\treturn {\n\t\t\t\tparser,\n\t\t\t\toverlay: [{ from: node.from + 4, to: node.to - 4 }]\n\t\t\t};\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}),\n\tparseBlock: [\n\t\t{\n\t\t\tname: \"Frontmatter\",\n\t\t\tbefore: \"HorizontalRule\",\n\t\t\tparse: (cx: BlockContext, line: Line): boolean => {\n\t\t\t\tlet end: number | undefined = undefined;\n\t\t\t\tconst children = new Array();\n\t\t\t\tif (cx.lineStart === 0 && frontMatterFence.test(line.text)) {\n\t\t\t\t\tchildren.push(cx.elt(\"FrontmatterMark\", 0, 4));\n\t\t\t\t\twhile (cx.nextLine()) {\n\t\t\t\t\t\tif (frontMatterFence.test(line.text)) {\n\t\t\t\t\t\t\tend = cx.lineStart + 4;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (end !== undefined) {\n\t\t\t\t\t\tchildren.push(cx.elt(\"FrontmatterMark\", end - 4, end));\n\t\t\t\t\t\tcx.addElement(cx.elt(\"Frontmatter\", 0, end, children));\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n};\n"],"names":[],"mappings":"4ZAWA,KAAM,GAAmB,YAEZ,EAAiC,CAC7C,YAAa,CAAC,CAAE,KAAM,cAAe,MAAO,IAAQ,iBAAiB,EACrE,MAAO,CACN,EAAU,CACT,YAAa,CAAC,EAAK,aAAc,EAAK,SAAS,EAC/C,gBAAiB,EAAK,sBACtB,EACD,EAAa,IAAI,CAChB,YAAa,EACb,gBAAiB,IAAM,KACvB,GAEF,KAAM,EAAW,AAAC,GAAS,MACpB,CAAE,UAAW,EAAe,OAAO,CAAI,QACzC,GAAK,KAAK,OAAS,cACf,CACN,SACA,QAAS,CAAC,CAAE,KAAM,EAAK,KAAO,EAAG,GAAI,EAAK,GAAK,EAAG,GAG5C,KAER,EACD,WAAY,CACX,CACC,KAAM,cACN,OAAQ,iBACR,MAAO,CAAC,EAAkB,IAAwB,IAC7C,QACE,GAAW,GAAI,UACjB,EAAG,YAAc,GAAK,EAAiB,KAAK,EAAK,IAAI,EAAG,OAClD,KAAK,EAAG,IAAI,kBAAmB,EAAG,CAAC,CAAC,EACtC,EAAG,eACL,EAAiB,KAAK,EAAK,IAAI,EAAG,GAC/B,EAAG,UAAY,cAInB,KAAQ,WACF,KAAK,EAAG,IAAI,kBAAmB,EAAM,EAAG,CAAG,CAAC,IAClD,WAAW,EAAG,IAAI,cAAe,EAAG,EAAK,CAAQ,CAAC,GAE/C,cAEA,KAKZ"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.00ec9920.css b/gradio/templates/frontend/assets/index.00ec9920.css new file mode 100644 index 0000000000000000000000000000000000000000..15c9d289c09b6f2581d92648fe1acdaebd8776fd --- /dev/null +++ b/gradio/templates/frontend/assets/index.00ec9920.css @@ -0,0 +1 @@ +.model3D.svelte-14ct53h{display:flex;position:relative;width:var(--size-full);height:var(--size-full)}canvas.svelte-14ct53h{width:var(--size-full);height:var(--size-full);object-fit:contain}.download.svelte-14ct53h{position:absolute;top:6px;right:6px}.input-model.svelte-wn75i6{display:flex;position:relative;justify-content:center;align-items:center;width:var(--size-full);height:var(--size-64)}canvas.svelte-wn75i6{width:var(--size-full);height:var(--size-full);object-fit:contain} diff --git a/gradio/templates/frontend/assets/index.0c78303c.js b/gradio/templates/frontend/assets/index.0c78303c.js new file mode 100644 index 0000000000000000000000000000000000000000..b964da298677e5f3b5cfa9d87c5faaf76d3e2ef7 --- /dev/null +++ b/gradio/templates/frontend/assets/index.0c78303c.js @@ -0,0 +1,2 @@ +import{S as C,i as E,s as T,F as j,c as d,G as F,B as w,f as D,m as h,D as q,M as y,I as N,an as G,o as g,t as k,p as S,l as v,a2 as M,q as V,H as z,J as A,V as K,v as L,a7 as O,b as P,a as Q,g as R,h as U,j as W,x as B}from"./index.37b24c07.js";/* empty css */import{a as X}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";/* empty css */import{B as Y}from"./BlockTitle.78628404.js";import"./Info.1218d587.js";function Z(l){let e;return{c(){e=z(l[2])},m(n,a){D(n,e,a)},p(n,a){a&4&&A(e,n[2])},d(n){n&&S(e)}}}function p(l){let e,n,a,s,f,m,r;return n=new Y({props:{show_label:l[4],info:l[3],$$slots:{default:[Z]},$$scope:{ctx:l}}}),{c(){e=j("label"),d(n.$$.fragment),a=F(),s=j("input"),w(s,"type","number"),s.disabled=l[1],w(s,"class","svelte-1nnxs9b"),w(e,"class","block")},m(o,b){D(o,e,b),h(n,e,null),q(e,a),q(e,s),y(s,l[0]),f=!0,m||(r=[N(s,"input",l[7]),N(s,"keypress",l[5]),N(s,"blur",l[6])],m=!0)},p(o,[b]){const t={};b&16&&(t.show_label=o[4]),b&8&&(t.info=o[3]),b&1028&&(t.$$scope={dirty:b,ctx:o}),n.$set(t),(!f||b&2)&&(s.disabled=o[1]),b&1&&G(s.value)!==o[0]&&y(s,o[0])},i(o){f||(g(n.$$.fragment,o),f=!0)},o(o){k(n.$$.fragment,o),f=!1},d(o){o&&S(e),v(n),m=!1,M(r)}}}function x(l,e,n){let{value:a=0}=e,{disabled:s=!1}=e,{label:f}=e,{info:m=void 0}=e,{show_label:r=!0}=e;const o=V();function b(u){!isNaN(u)&&u!==null&&o("change",u)}async function t(u){await K(),u.key==="Enter"&&(u.preventDefault(),o("submit"))}function _(u){o("blur")}function c(){a=G(this.value),n(0,a)}return l.$$set=u=>{"value"in u&&n(0,a=u.value),"disabled"in u&&n(1,s=u.disabled),"label"in u&&n(2,f=u.label),"info"in u&&n(3,m=u.info),"show_label"in u&&n(4,r=u.show_label)},l.$$.update=()=>{l.$$.dirty&1&&b(a)},[a,s,f,m,r,t,_,c]}class $ extends C{constructor(e){super(),E(this,e,x,p,T,{value:0,disabled:1,label:2,info:3,show_label:4})}}function ee(l){let e,n,a,s,f;const m=[l[8]];let r={};for(let t=0;tQ(a,"value",o)),a.$on("change",l[11]),a.$on("submit",l[12]),a.$on("blur",l[13]),{c(){d(e.$$.fragment),n=F(),d(a.$$.fragment)},m(t,_){h(e,t,_),D(t,n,_),h(a,t,_),f=!0},p(t,_){const c=_&256?R(m,[U(t[8])]):{};e.$set(c);const u={};_&2&&(u.label=t[1]),_&4&&(u.info=t[2]),_&128&&(u.show_label=t[7]),_&512&&(u.disabled=t[9]==="static"),!s&&_&1&&(s=!0,u.value=t[0],W(()=>s=!1)),a.$set(u)},i(t){f||(g(e.$$.fragment,t),g(a.$$.fragment,t),f=!0)},o(t){k(e.$$.fragment,t),k(a.$$.fragment,t),f=!1},d(t){v(e,t),t&&S(n),v(a,t)}}}function le(l){let e,n;return e=new X({props:{visible:l[5],elem_id:l[3],elem_classes:l[4],disable:typeof l[6].container=="boolean"&&!l[6].container,$$slots:{default:[ee]},$$scope:{ctx:l}}}),{c(){d(e.$$.fragment)},m(a,s){h(e,a,s),n=!0},p(a,[s]){const f={};s&32&&(f.visible=a[5]),s&8&&(f.elem_id=a[3]),s&16&&(f.elem_classes=a[4]),s&64&&(f.disable=typeof a[6].container=="boolean"&&!a[6].container),s&17287&&(f.$$scope={dirty:s,ctx:a}),e.$set(f)},i(a){n||(g(e.$$.fragment,a),n=!0)},o(a){k(e.$$.fragment,a),n=!1},d(a){v(e,a)}}}function ae(l,e,n){let{label:a="Number"}=e,{info:s=void 0}=e,{elem_id:f=""}=e,{elem_classes:m=[]}=e,{visible:r=!0}=e,{style:o={}}=e,{value:b=0}=e,{show_label:t}=e,{loading_status:_}=e,{mode:c}=e;function u(i){b=i,n(0,b)}function H(i){B.call(this,l,i)}function I(i){B.call(this,l,i)}function J(i){B.call(this,l,i)}return l.$$set=i=>{"label"in i&&n(1,a=i.label),"info"in i&&n(2,s=i.info),"elem_id"in i&&n(3,f=i.elem_id),"elem_classes"in i&&n(4,m=i.elem_classes),"visible"in i&&n(5,r=i.visible),"style"in i&&n(6,o=i.style),"value"in i&&n(0,b=i.value),"show_label"in i&&n(7,t=i.show_label),"loading_status"in i&&n(8,_=i.loading_status),"mode"in i&&n(9,c=i.mode)},[b,a,s,f,m,r,o,t,_,c,u,H,I,J]}class ne extends C{constructor(e){super(),E(this,e,ae,le,T,{label:1,info:2,elem_id:3,elem_classes:4,visible:5,style:6,value:0,show_label:7,loading_status:8,mode:9})}}var be=ne;const _e=["static","dynamic"],me=l=>({type:{payload:"number"},description:{payload:"numeric value"},example_data:l.value??1});export{be as Component,me as document,_e as modes}; +//# sourceMappingURL=index.0c78303c.js.map diff --git a/gradio/templates/frontend/assets/index.0c78303c.js.map b/gradio/templates/frontend/assets/index.0c78303c.js.map new file mode 100644 index 0000000000000000000000000000000000000000..bc0d313120dbc42c73c34626ae47ce48a104c4ce --- /dev/null +++ b/gradio/templates/frontend/assets/index.0c78303c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.0c78303c.js","sources":["../../../../ui/packages/form/src/Number.svelte","../../../../ui/packages/app/src/components/Number/Number.svelte","../../../../ui/packages/app/src/components/Number/index.ts"],"sourcesContent":["\n\n\n\n\n\n","\n\n\n\t\n\n\t\n\n","export { default as Component } from \"./Number.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"number\"\n\t},\n\tdescription: {\n\t\tpayload: \"numeric value\"\n\t},\n\texample_data: config.value ?? 1\n});\n"],"names":[],"mappings":"yiBAwCkC,wCAAA,sSADlC,4BAEC,8DAGc,iBACJ,kTAzCC,QAAgB,MAChB,WAAoB,OACpB,YACA,OAA2B,WAC3B,aAAsB,WAE3B,GAAW,eAMM,IACjB,MAAM,CAAC,GAAK,IAAM,MACtB,EAAS,SAAU,CAAC,mBAIS,QACxB,KAEF,EAAE,MAAQ,SACb,GAAE,iBACF,EAAS,QAAQ,cAME,GACpB,EAAS,MAAM,mPAHb,EAAc,CAAK,sKCLH,sJAOR,OAAS,+QAPD,qHAOR,OAAS,0SATJ,MAAM,WAAc,YAAc,KAAM,qNAAxC,MAAM,WAAc,YAAc,KAAM,iKAjB7C,QAAgB,aAChB,OAA2B,WAC3B,UAAkB,OAClB,sBACA,UAAmB,OACnB,eACA,QAAgB,MAChB,iBAEA,qBACA,6qBChBC,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,iBAEV,aAAc,EAAO,OAAS,CAC/B"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.0df6cff0.js b/gradio/templates/frontend/assets/index.0df6cff0.js new file mode 100644 index 0000000000000000000000000000000000000000..b58c7b1dd942917e13b5885f58d5cf6907a2a583 --- /dev/null +++ b/gradio/templates/frontend/assets/index.0df6cff0.js @@ -0,0 +1,2 @@ +import{T as c}from"./Textbox.08748353.js";import"./index.37b24c07.js";/* empty css */import"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";/* empty css */import"./BlockTitle.78628404.js";import"./Info.1218d587.js";import"./Copy.d6bfc6ec.js";const n=["static","dynamic"],d=t=>({type:{payload:"string"},description:{payload:"text string"},example_data:t.value||"hello world"});export{c as Component,d as document,n as modes}; +//# sourceMappingURL=index.0df6cff0.js.map diff --git a/gradio/templates/frontend/assets/index.0df6cff0.js.map b/gradio/templates/frontend/assets/index.0df6cff0.js.map new file mode 100644 index 0000000000000000000000000000000000000000..9a26f75880a816596bbcd2f1aa19c9abb79c1ee2 --- /dev/null +++ b/gradio/templates/frontend/assets/index.0df6cff0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.0df6cff0.js","sources":["../../../../ui/packages/app/src/components/Textbox/index.ts"],"sourcesContent":["export { default as Component } from \"./Textbox.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"string\"\n\t},\n\tdescription: {\n\t\tpayload: \"text string\"\n\t},\n\texample_data: config.value || \"hello world\"\n});\n"],"names":[],"mappings":"8VACa,GAAQ,CAAC,SAAU,SAAS,EAE5B,EAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,eAEV,aAAc,EAAO,OAAS,aAC/B"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.11c5f2d6.js b/gradio/templates/frontend/assets/index.11c5f2d6.js new file mode 100644 index 0000000000000000000000000000000000000000..457486eedc612b748414dea7fed278e4dade2b6a --- /dev/null +++ b/gradio/templates/frontend/assets/index.11c5f2d6.js @@ -0,0 +1,5 @@ +import{S as de,i as he,s as ge,F as q,B as g,O as E,f as B,I,p as M,a2 as me,G as J,E as le,x as oe,b as G,H as $,J as be,ag as sl,e as rl,D as L,a as te,o as T,c as P,m as Z,t as R,l as Q,k as W,n as X,j as ne,q as ze,A as x,V as U,y as ce,z as _e,v as il,a7 as ul,a8 as Ae,g as fl,h as ol}from"./index.37b24c07.js";import{U as cl}from"./Upload.233e3186.js";import{B as He}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";/* empty css */import"./ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js";import{d as _l}from"./dsv.7fe76a93.js";var je=Object.prototype.hasOwnProperty;function ae(a,e){var l,n;if(a===e)return!0;if(a&&e&&(l=a.constructor)===e.constructor){if(l===Date)return a.getTime()===e.getTime();if(l===RegExp)return a.toString()===e.toString();if(l===Array){if((n=a.length)===e.length)for(;n--&&ae(a[n],e[n]););return n===-1}if(!l||typeof a=="object"){n=0;for(l in a)if(je.call(a,l)&&++n&&!je.call(e,l)||!(l in e)||!ae(a[l],e[l]))return!1;return Object.keys(e).length===n}}return a!==a&&e!==e}function De(a){let e,l,n;return{c(){e=q("input"),g(e,"tabindex","-1"),e.value=a[0],g(e,"class","svelte-q8uklq"),E(e,"header",a[3])},m(t,r){B(t,e,r),a[7](e),l||(n=[I(e,"keydown",a[6]),I(e,"blur",a[8])],l=!0)},p(t,r){r&1&&e.value!==t[0]&&(e.value=t[0]),r&8&&E(e,"header",t[3])},d(t){t&&M(e),a[7](null),l=!1,me(n)}}}function dl(a){let e;return{c(){e=$(a[0])},m(l,n){B(l,e,n)},p(l,n){n&1&&be(e,l[0])},d(l){l&&M(e)}}}function hl(a){let e,l;return{c(){e=new sl(!1),l=rl(),e.a=l},m(n,t){e.m(a[0],n,t),B(n,l,t)},p(n,t){t&1&&e.p(n[0])},d(n){n&&M(l),n&&e.d()}}}function gl(a){let e,l,n,t,r=a[2]&&De(a);function c(i,f){return i[4]==="markdown"||i[4]==="html"?hl:dl}let d=c(a),b=d(a);return{c(){r&&r.c(),e=J(),l=q("span"),b.c(),g(l,"tabindex","-1"),g(l,"role","button"),g(l,"class","svelte-q8uklq"),E(l,"edit",a[2])},m(i,f){r&&r.m(i,f),B(i,e,f),B(i,l,f),b.m(l,null),n||(t=I(l,"dblclick",a[5]),n=!0)},p(i,[f]){i[2]?r?r.p(i,f):(r=De(i),r.c(),r.m(e.parentNode,e)):r&&(r.d(1),r=null),d===(d=c(i))&&b?b.p(i,f):(b.d(1),b=d(i),b&&(b.c(),b.m(l,null))),f&4&&E(l,"edit",i[2])},i:le,o:le,d(i){r&&r.d(i),i&&M(e),i&&M(l),b.d(),n=!1,t()}}}function ml(a,e,l){let{edit:n}=e,{value:t=""}=e,{el:r}=e,{header:c=!1}=e,{datatype:d="str"}=e;function b(u){oe.call(this,a,u)}function i(u){oe.call(this,a,u)}function f(u){G[u?"unshift":"push"](()=>{r=u,l(1,r)})}const j=({currentTarget:u})=>{l(0,t=u.value),u.setAttribute("tabindex","-1")};return a.$$set=u=>{"edit"in u&&l(2,n=u.edit),"value"in u&&l(0,t=u.value),"el"in u&&l(1,r=u.el),"header"in u&&l(3,c=u.header),"datatype"in u&&l(4,d=u.datatype)},[t,r,n,c,d,b,i,f,j]}class Ne extends de{constructor(e){super(),he(this,e,ml,gl,ge,{edit:2,value:0,el:1,header:3,datatype:4})}}function Ee(a,e,l){const n=a.slice();return n[52]=e[l],n[54]=l,n}function Le(a,e,l){const n=a.slice();return n[55]=e[l].value,n[56]=e[l].id,n[57]=e,n[58]=l,n}function qe(a,e,l){const n=a.slice();return n[55]=e[l].value,n[56]=e[l].id,n[59]=e,n[54]=l,n}function Be(a){let e,l;return{c(){e=q("p"),l=$(a[1]),g(e,"class","svelte-8hrj8a")},m(n,t){B(n,e,t),L(e,l)},p(n,t){t[0]&2&&be(l,n[1])},d(n){n&&M(e)}}}function Me(a){let e,l;return{c(){e=q("caption"),l=$(a[1]),g(e,"class","sr-only")},m(n,t){B(n,e,t),L(e,l)},p(n,t){t[0]&2&&be(l,n[1])},d(n){n&&M(e)}}}function Te(a,e){let l,n,t,r,c,d,b,i,f,j,u,h=e[56],o,A,F;function m(S){e[30](S,e[56])}function k(){return e[31](e[56])}let p={value:e[55],edit:e[13]===e[56],header:!0};e[10][e[56]].input!==void 0&&(p.el=e[10][e[56]].input),t=new Ne({props:p}),G.push(()=>te(t,"el",m)),t.$on("keydown",e[21]),t.$on("dblclick",k);function w(){return e[32](e[54])}const C=()=>e[33](l,h),N=()=>e[33](null,h);return{key:a,first:null,c(){l=q("th"),n=q("div"),P(t.$$.fragment),c=J(),d=q("div"),b=x("svg"),i=x("path"),j=J(),g(i,"d","M4.49999 0L8.3971 6.75H0.602875L4.49999 0Z"),g(b,"width","1em"),g(b,"height","1em"),g(b,"viewBox","0 0 9 7"),g(b,"fill","none"),g(b,"xmlns","http://www.w3.org/2000/svg"),g(b,"class","svelte-8hrj8a"),g(d,"class",f="sort-button "+e[11]+" svelte-8hrj8a"),E(d,"sorted",e[12]===e[54]),E(d,"des",e[12]===e[54]&&e[11]==="des"),g(n,"class","cell-wrap svelte-8hrj8a"),g(l,"aria-sort",u=e[15](e[55],e[12],e[11])),g(l,"class","svelte-8hrj8a"),E(l,"editing",e[13]===e[56]),this.first=l},m(S,O){B(S,l,O),L(l,n),Z(t,n,null),L(n,c),L(n,d),L(d,b),L(b,i),L(l,j),C(),o=!0,A||(F=I(d,"click",w),A=!0)},p(S,O){e=S;const V={};O[0]&256&&(V.value=e[55]),O[0]&8448&&(V.edit=e[13]===e[56]),!r&&O[0]&1280&&(r=!0,V.el=e[10][e[56]].input,ne(()=>r=!1)),t.$set(V),(!o||O[0]&2048&&f!==(f="sort-button "+e[11]+" svelte-8hrj8a"))&&g(d,"class",f),O[0]&6400&&E(d,"sorted",e[12]===e[54]),O[0]&6400&&E(d,"des",e[12]===e[54]&&e[11]==="des"),(!o||O[0]&6400&&u!==(u=e[15](e[55],e[12],e[11])))&&g(l,"aria-sort",u),h!==e[56]&&(N(),h=e[56],C()),O[0]&8448&&E(l,"editing",e[13]===e[56])},i(S){o||(T(t.$$.fragment,S),o=!0)},o(S){R(t.$$.fragment,S),o=!1},d(S){S&&M(l),Q(t),N(),A=!1,F()}}}function Ce(a,e){let l,n,t,r,c,d=e[56],b,i,f;function j(w){e[34](w,e[55],e[57],e[58])}function u(w){e[35](w,e[56])}let h={edit:e[6]===e[56],datatype:Array.isArray(e[0])?e[0][e[58]]:e[0]};e[55]!==void 0&&(h.value=e[55]),e[10][e[56]].input!==void 0&&(h.el=e[10][e[56]].input),t=new Ne({props:h}),G.push(()=>te(t,"value",j)),G.push(()=>te(t,"el",u));const o=()=>e[36](l,d),A=()=>e[36](null,d);function F(){return e[37](e[56])}function m(){return e[38](e[56])}function k(){return e[39](e[56])}function p(...w){return e[40](e[54],e[58],e[56],...w)}return{key:a,first:null,c(){l=q("td"),n=q("div"),P(t.$$.fragment),g(n,"class","cell-wrap svelte-8hrj8a"),E(n,"border-transparent",e[7]!==e[56]),g(l,"tabindex","0"),g(l,"class","svelte-8hrj8a"),this.first=l},m(w,C){B(w,l,C),L(l,n),Z(t,n,null),o(),b=!0,i||(f=[I(l,"touchstart",F,{passive:!0}),I(l,"click",m),I(l,"dblclick",k),I(l,"keydown",p)],i=!0)},p(w,C){e=w;const N={};C[0]&576&&(N.edit=e[6]===e[56]),C[0]&513&&(N.datatype=Array.isArray(e[0])?e[0][e[58]]:e[0]),!r&&C[0]&512&&(r=!0,N.value=e[55],ne(()=>r=!1)),!c&&C[0]&1536&&(c=!0,N.el=e[10][e[56]].input,ne(()=>c=!1)),t.$set(N),C[0]&640&&E(n,"border-transparent",e[7]!==e[56]),d!==e[56]&&(A(),d=e[56],o())},i(w){b||(T(t.$$.fragment,w),b=!0)},o(w){R(t.$$.fragment,w),b=!1},d(w){w&&M(l),Q(t),A(),i=!1,me(f)}}}function Fe(a,e){let l,n=[],t=new Map,r,c,d=e[52];const b=i=>i[56];for(let i=0;im[56];for(let m=0;mm[52];for(let m=0;m{t=null}),X()),c[2][1]==="dynamic"?r?(r.p(c,d),d[0]&4&&T(r,1)):(r=Se(c),r.c(),T(r,1),r.m(e,null)):r&&(W(),R(r,1,1,()=>{r=null}),X())},i(c){n||(T(t),T(r),n=!0)},o(c){R(t),R(r),n=!1},d(c){c&&M(e),t&&t.d(),r&&r.d()}}}function Re(a){let e,l,n;return l=new He({props:{variant:"secondary",size:"sm",$$slots:{default:[pl]},$$scope:{ctx:a}}}),l.$on("click",a[43]),{c(){e=q("span"),P(l.$$.fragment),g(e,"class","button-wrap svelte-8hrj8a")},m(t,r){B(t,e,r),Z(l,e,null),n=!0},p(t,r){const c={};r[1]&536870912&&(c.$$scope={dirty:r,ctx:t}),l.$set(c)},i(t){n||(T(l.$$.fragment,t),n=!0)},o(t){R(l.$$.fragment,t),n=!1},d(t){t&&M(e),Q(l)}}}function pl(a){let e,l,n;return{c(){e=x("svg"),l=x("path"),n=$(` + New row`),g(l,"fill","currentColor"),g(l,"d","M24.59 16.59L17 24.17V4h-2v20.17l-7.59-7.58L6 18l10 10l10-10l-1.41-1.41z"),g(e,"xmlns","http://www.w3.org/2000/svg"),g(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),g(e,"aria-hidden","true"),g(e,"role","img"),g(e,"width","1em"),g(e,"height","1em"),g(e,"preserveAspectRatio","xMidYMid meet"),g(e,"viewBox","0 0 32 32"),g(e,"class","svelte-8hrj8a")},m(t,r){B(t,e,r),L(e,l),B(t,n,r)},p:le,d(t){t&&M(e),t&&M(n)}}}function Se(a){let e,l,n;return l=new He({props:{variant:"secondary",size:"sm",$$slots:{default:[wl]},$$scope:{ctx:a}}}),l.$on("click",a[23]),{c(){e=q("span"),P(l.$$.fragment),g(e,"class","button-wrap svelte-8hrj8a")},m(t,r){B(t,e,r),Z(l,e,null),n=!0},p(t,r){const c={};r[1]&536870912&&(c.$$scope={dirty:r,ctx:t}),l.$set(c)},i(t){n||(T(l.$$.fragment,t),n=!0)},o(t){R(l.$$.fragment,t),n=!1},d(t){t&&M(e),Q(l)}}}function wl(a){let e,l,n;return{c(){e=x("svg"),l=x("path"),n=$(` + New column`),g(l,"fill","currentColor"),g(l,"d","m18 6l-1.43 1.393L24.15 15H4v2h20.15l-7.58 7.573L18 26l10-10L18 6z"),g(e,"xmlns","http://www.w3.org/2000/svg"),g(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),g(e,"aria-hidden","true"),g(e,"role","img"),g(e,"width","1em"),g(e,"height","1em"),g(e,"preserveAspectRatio","xMidYMid meet"),g(e,"viewBox","0 0 32 32"),g(e,"class","svelte-8hrj8a")},m(t,r){B(t,e,r),L(e,l),B(t,n,r)},p:le,d(t){t&&M(e),t&&M(n)}}}function kl(a){let e,l,n,t,r,c,d,b,i,f=a[1]&&a[1].length!==0&&Be(a);function j(o){a[41](o)}let u={flex:!1,center:!1,boundedheight:!1,disable_click:!0,$$slots:{default:[bl]},$$scope:{ctx:a}};a[14]!==void 0&&(u.dragging=a[14]),t=new cl({props:u}),G.push(()=>te(t,"dragging",j)),t.$on("load",a[42]);let h=a[4]&&Oe(a);return{c(){e=q("div"),f&&f.c(),l=J(),n=q("div"),P(t.$$.fragment),c=J(),h&&h.c(),g(n,"class","table-wrap scroll-hide svelte-8hrj8a"),E(n,"dragging",a[14]),E(n,"no-wrap",!a[5]),g(e,"class","svelte-8hrj8a"),E(e,"label",a[1]&&a[1].length!==0)},m(o,A){B(o,e,A),f&&f.m(e,null),L(e,l),L(e,n),Z(t,n,null),L(e,c),h&&h.m(e,null),d=!0,b||(i=[I(window,"click",a[24]),I(window,"touchstart",a[24])],b=!0)},p(o,A){o[1]&&o[1].length!==0?f?f.p(o,A):(f=Be(o),f.c(),f.m(e,l)):f&&(f.d(1),f=null);const F={};A[0]&32707|A[1]&536870912&&(F.$$scope={dirty:A,ctx:o}),!r&&A[0]&16384&&(r=!0,F.dragging=o[14],ne(()=>r=!1)),t.$set(F),A[0]&16384&&E(n,"dragging",o[14]),A[0]&32&&E(n,"no-wrap",!o[5]),o[4]?h?(h.p(o,A),A[0]&16&&T(h,1)):(h=Oe(o),h.c(),T(h,1),h.m(e,null)):h&&(W(),R(h,1,1,()=>{h=null}),X()),A[0]&2&&E(e,"label",o[1]&&o[1].length!==0)},i(o){d||(T(t.$$.fragment,o),T(h),d=!0)},o(o){R(t.$$.fragment,o),R(h),d=!1},d(o){o&&M(e),f&&f.d(),Q(t),h&&h.d(),b=!1,me(i)}}}function yl(a,e){return e.filter(l);function l(n){var t=-1;return a.split(` +`).every(r);function r(c){if(!c)return!0;var d=c.split(n).length;return t<0&&(t=d),t===d&&d>1}}}function vl(a){const e=atob(a.split(",")[1]),l=a.split(",")[0].split(":")[1].split(";")[0],n=new ArrayBuffer(e.length),t=new Uint8Array(n);for(let r=0;r`${D+_.length}`);_=_.concat(y)}return!_||_.length===0?Array(d[0]).fill(0).map((y,v)=>{const D=`h-${v}`;return l(10,o[D]={cell:null,input:null},o),{id:D,value:JSON.stringify(v+1)}}):_.map((y,v)=>{const D=`h-${v}`;return l(10,o[D]={cell:null,input:null},o),{id:D,value:y??""}})}function F(s){const _=s.length>0?s.length:b[0];return Array(b[1]==="fixed"||_Array(d[1]==="fixed"?d[0]:s[0].length).fill(0).map((D,H)=>{const K=`${v}-${H}`;return l(10,o[K]={input:null,cell:null},o),{value:s?.[v]?.[H]??"",id:K}}))}let m=A(r),k;async function p(){typeof u=="string"?(await U(),o[u]?.input?.focus()):typeof h=="string"&&(await U(),o[h]?.input?.focus())}let w=[[]],C;function N(s,_,y){if(!_)return"none";if(r[_]===s){if(y==="asc")return"ascending";if(y==="des")return"descending"}}function S(s){return w.reduce((_,y,v)=>{const D=y.reduce((H,K,ue)=>s===K.id?ue:H,-1);return D===-1?_:[v,D]},[-1,-1])}async function O(s,_){if(!i||u===s)return;if(_){const[v,D]=S(s);l(9,w[v][D].value="",w)}l(6,u=s),await U();const{input:y}=o[s];y?.focus()}async function V(s,_,y,v){let D;switch(s.key){case"ArrowRight":if(u)break;s.preventDefault(),D=w[_][y+1],l(7,h=D?D.id:h);break;case"ArrowLeft":if(u)break;s.preventDefault(),D=w[_][y-1],l(7,h=D?D.id:h);break;case"ArrowDown":if(u)break;s.preventDefault(),D=w[_+1],l(7,h=D?D[y].id:h);break;case"ArrowUp":if(u)break;s.preventDefault(),D=w[_-1],l(7,h=D?D[y].id:h);break;case"Escape":if(!i)break;s.preventDefault(),l(7,h=u),l(6,u=!1);break;case"Enter":if(!i)break;if(s.preventDefault(),s.shiftKey){re(_),await U();const[al]=S(v);l(7,h=w[al+1][y].id)}else u===v?l(6,u=!1):O(v);break;case"Backspace":if(!i)break;u||(s.preventDefault(),l(9,w[_][y].value="",w));break;case"Delete":if(!i)break;u||(s.preventDefault(),l(9,w[_][y].value="",w));break;case"Tab":let H=s.shiftKey?-1:1,K=w[_][y+H],ue=w?.[_+H]?.[H>0?0:m.length-1],fe=K||ue;fe&&(s.preventDefault(),l(7,h=fe?fe.id:h)),l(6,u=!1);break;default:(!u||u&&u!==v)&&s.key.length===1&&O(v,!0);break}}async function pe(s){u!==s&&h!==s&&(l(6,u=!1),l(7,h=s))}async function we(s,_){if(_==="edit"&&typeof s=="string"&&(await U(),o[s].input?.focus()),_==="edit"&&typeof s=="boolean"&&typeof h=="string"){let y=o[h]?.cell;await U(),y?.focus()}if(_==="select"&&typeof s=="string"){const{cell:y}=o[s];await U(),y?.focus()}}let Y,ee;function Ue(s,_){_==="asc"?l(9,w=w.sort((y,v)=>y[s].valuey[s].value>v[s].value?-1:1))}function ke(s){typeof ee!="number"||ee!==s?(l(11,Y="asc"),l(12,ee=s)):Y==="asc"?l(11,Y="des"):Y==="des"&&l(11,Y="asc"),Ue(s,Y)}let z;function ye(){if(typeof h=="string"){const s=o[h].input?.value;if(m.find(_=>_.id===h)){let _=m.find(y=>y.id===h);s&&(_.value=s)}else s&&m.push({id:h,value:s})}}async function se(s,_){!i||d[1]!=="dynamic"||u===s||(l(13,z=s),await U(),o[s].input?.focus(),_&&o[s].input?.select())}function Ie(s){if(!!i)switch(s.key){case"Escape":case"Enter":case"Tab":s.preventDefault(),l(7,h=z),l(13,z=!1),ye();break}}function re(s){b[1]==="dynamic"&&(w.splice(s?s+1:w.length,0,Array(w[0].length).fill(0).map((_,y)=>{const v=`${w.length}-${y}`;return l(10,o[v]={cell:null,input:null},o),{id:v,value:""}})),l(9,w),l(27,c),l(29,C),l(26,r))}async function Je(){if(d[1]!=="dynamic")return;for(let _=0;_se(s),Ge=s=>ke(s);function Pe(s,_){G[s?"unshift":"push"](()=>{o[_].cell=s,l(10,o)})}function Ze(s,_,y,v){y[v].value=s,l(9,w),l(27,c),l(29,C),l(26,r)}function Qe(s,_){a.$$.not_equal(o[_].input,s)&&(o[_].input=s,l(10,o))}function We(s,_){G[s?"unshift":"push"](()=>{o[_].cell=s,l(10,o)})}const Xe=s=>O(s),xe=s=>pe(s),$e=s=>O(s),el=(s,_,y,v)=>V(v,s,_,y);function ll(s){ie=s,l(14,ie)}const tl=s=>ve(vl(s.detail.data)),nl=()=>re();return a.$$set=s=>{"datatype"in s&&l(0,n=s.datatype),"label"in s&&l(1,t=s.label),"headers"in s&&l(26,r=s.headers),"values"in s&&l(27,c=s.values),"col_count"in s&&l(2,d=s.col_count),"row_count"in s&&l(3,b=s.row_count),"editable"in s&&l(4,i=s.editable),"wrap"in s&&l(5,f=s.wrap)},a.$$.update=()=>{if(a.$$.dirty[0]&201326592&&(c&&!Array.isArray(c)?(l(26,r=c.headers),l(27,c=c.data.length===0?[Array(r.length).fill("")]:c.data)):c===null?l(27,c=[Array(r.length).fill("")]):(l(27,c),l(26,r))),a.$$.dirty[0]&671088640&&(ae(c,C)||(l(9,w=F(c)),l(29,C=c),p())),a.$$.dirty[0]&640&&h!==!1){const s=h.split("-"),_=parseInt(s[0]),y=parseInt(s[1]);j("select",{index:[_,y],value:w[_][y].value})}a.$$.dirty[0]&335544320&&(ae(r,k)||(l(8,m=A(r)),l(28,k=r),p())),a.$$.dirty[0]&768&&m&&j("change",{data:w.map(s=>s.map(({value:_})=>_)),headers:m.map(s=>s.value)}),a.$$.dirty[0]&64&&we(u,"edit"),a.$$.dirty[0]&128&&we(h,"select")},[n,t,d,b,i,f,u,h,m,w,o,Y,ee,z,ie,N,O,V,pe,ke,se,Ie,re,Je,Ke,ve,r,c,k,C,Ve,Ye,Ge,Pe,Ze,Qe,We,Xe,xe,$e,el,ll,tl,nl]}class jl extends de{constructor(e){super(),he(this,e,Al,kl,ge,{datatype:0,label:1,headers:26,values:27,col_count:2,row_count:3,editable:4,wrap:5},null,[-1,-1])}}function Dl(a){let e,l,n,t,r,c;const d=[a[11]];let b={};for(let i=0;iF(p);function k(p){oe.call(this,a,p)}return a.$$set=p=>{"headers"in p&&l(1,n=p.headers),"elem_id"in p&&l(2,t=p.elem_id),"elem_classes"in p&&l(3,r=p.elem_classes),"visible"in p&&l(4,c=p.visible),"value"in p&&l(0,d=p.value),"mode"in p&&l(5,b=p.mode),"col_count"in p&&l(6,i=p.col_count),"row_count"in p&&l(7,f=p.row_count),"label"in p&&l(8,j=p.label),"wrap"in p&&l(9,u=p.wrap),"datatype"in p&&l(10,h=p.datatype),"loading_status"in p&&l(11,A=p.loading_status)},[d,n,t,r,c,b,i,f,j,u,h,A,F,m,k]}class Ll extends de{constructor(e){super(),he(this,e,El,Dl,ge,{headers:1,elem_id:2,elem_classes:3,visible:4,value:0,mode:5,col_count:6,row_count:7,label:8,wrap:9,datatype:10,loading_status:11})}}var Ol=Ll;const Rl=["static","dynamic"],Sl=a=>({type:{payload:"{ data: Array>; headers: Array }"},description:{payload:"an object with an array of data and an array of headers"},example_data:a.value});export{Ol as Component,Sl as document,Rl as modes}; +//# sourceMappingURL=index.11c5f2d6.js.map diff --git a/gradio/templates/frontend/assets/index.11c5f2d6.js.map b/gradio/templates/frontend/assets/index.11c5f2d6.js.map new file mode 100644 index 0000000000000000000000000000000000000000..cb7030787b4b90729460873f2d4b2012484deb64 --- /dev/null +++ b/gradio/templates/frontend/assets/index.11c5f2d6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.11c5f2d6.js","sources":["../../../../ui/node_modules/.pnpm/dequal@2.0.2/node_modules/dequal/lite/index.mjs","../../../../ui/packages/table/src/EditableCell.svelte","../../../../ui/packages/table/src/Table.svelte","../../../../ui/packages/app/src/components/DataFrame/DataFrame.svelte","../../../../ui/packages/app/src/components/DataFrame/index.ts"],"sourcesContent":["var has = Object.prototype.hasOwnProperty;\n\nexport function dequal(foo, bar) {\n\tvar ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","\n\n{#if edit}\n\t {\n\t\t\tvalue = currentTarget.value;\n\t\t\tcurrentTarget.setAttribute(\"tabindex\", \"-1\");\n\t\t}}\n\t/>\n{/if}\n\n\t{#if datatype === \"markdown\" || datatype === \"html\"}\n\t\t{@html value}\n\t{:else}\n\t\t{value}\n\t{/if}\n\n\n\n","\n\n\n\n
\n\t{#if label && label.length !== 0}\n\t\t

\n\t\t\t{label}\n\t\t

\n\t{/if}\n\t
\n\t\t blob_to_string(data_uri_to_blob(e.detail.data))}\n\t\t\tbind:dragging\n\t\t>\n\t\t\t\n\t\t\t\t{#if label && label.length !== 0}\n\t\t\t\t\t\n\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{#each _headers as { value, id }, i (id)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t edit_header(id)}\n\t\t\t\t\t\t\t\t\t\theader\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t handle_sort(i)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t
\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{#each data as row, i (row)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{#each row as { value, id }, j (id)}\n\t\t\t\t\t\t\t\t start_edit(id)}\n\t\t\t\t\t\t\t\t\ton:click={() => handle_cell_click(id)}\n\t\t\t\t\t\t\t\t\ton:dblclick={() => start_edit(id)}\n\t\t\t\t\t\t\t\t\ton:keydown={(e) => handle_keydown(e, i, j, id)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\n\t\t\t\t\t{/each}\n\t\t\t\t\n\t\t\t
{label}
\n\t\t\n\t
\n\t{#if editable}\n\t\t
\n\t\t\t{#if row_count[1] === \"dynamic\"}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{/if}\n\t\t\t{#if col_count[1] === \"dynamic\"}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{/if}\n\t\t
\n\t{/if}\n
\n\n\n","\n\n
\n\t\n\t handle_change(detail)}\n\t\ton:select\n\t\teditable={mode === \"dynamic\"}\n\t\t{wrap}\n\t\t{datatype}\n\t/>\n
\n\n\n","export { default as Component } from \"./DataFrame.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"{ data: Array>; headers: Array }\"\n\t},\n\tdescription: {\n\t\tpayload: \"an object with an array of data and an array of headers\"\n\t},\n\texample_data: config.value\n});\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.148fc4b9.js b/gradio/templates/frontend/assets/index.148fc4b9.js new file mode 100644 index 0000000000000000000000000000000000000000..35838d6895136dfa4fbbdafc48cd69e4d3a1e274 --- /dev/null +++ b/gradio/templates/frontend/assets/index.148fc4b9.js @@ -0,0 +1,2 @@ +import{S as x,i as ee,s as G,A as Q,B as d,f as C,D as H,E as W,p as v,a6 as It,F as q,K as Y,q as me,b as R,a3 as Xe,ah as Ke,a5 as $e,C as yt,O as N,I as P,ad as Ct,a2 as bt,G as U,ak as kt,o as p,k as Z,t as A,n as K,N as vt,r as pt,V as ge,ac as zt,x as ce,c as T,m as B,l as S,M as Le,an as Mt,e as oe,j as V,a as X,W as Tt,X as Bt,Y as St,Z as Dt,v as Et,a7 as Rt,g as jt,h as Lt}from"./index.37b24c07.js";import{a as Ut}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{B as wt}from"./BlockLabel.7ce695d8.js";/* empty css */import{I as Ue}from"./Image.5624fd80.js";import{C as qt,i as Nt,U as Ft,W as Wt}from"./StaticImage.svelte_svelte_type_style_lang.c3c14c87.js";import{I as pe,C as Ot,M as qe}from"./ModifyUpload.6b6d2d33.js";import{U as Ht}from"./Upload.233e3186.js";import{E as Yt}from"./Empty.ae5c2506.js";import{D as Jt}from"./Download.5a6e5fa3.js";import"./Blocks.5efe22d4.js";import{U as Pt}from"./UploadText.dca45b41.js";import{E as ns}from"./Image.3b7bf79b.js";import"./ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js";function Vt(t){let e,n,s;return{c(){e=Q("svg"),n=Q("path"),s=Q("path"),d(n,"d","M28.828 3.172a4.094 4.094 0 0 0-5.656 0L4.05 22.292A6.954 6.954 0 0 0 2 27.242V30h2.756a6.952 6.952 0 0 0 4.95-2.05L28.828 8.829a3.999 3.999 0 0 0 0-5.657zM10.91 18.26l2.829 2.829l-2.122 2.121l-2.828-2.828zm-2.619 8.276A4.966 4.966 0 0 1 4.756 28H4v-.759a4.967 4.967 0 0 1 1.464-3.535l1.91-1.91l2.829 2.828zM27.415 7.414l-12.261 12.26l-2.829-2.828l12.262-12.26a2.047 2.047 0 0 1 2.828 0a2 2 0 0 1 0 2.828z"),d(n,"fill","currentColor"),d(s,"d","M6.5 15a3.5 3.5 0 0 1-2.475-5.974l3.5-3.5a1.502 1.502 0 0 0 0-2.121a1.537 1.537 0 0 0-2.121 0L3.415 5.394L2 3.98l1.99-1.988a3.585 3.585 0 0 1 4.95 0a3.504 3.504 0 0 1 0 4.949L5.439 10.44a1.502 1.502 0 0 0 0 2.121a1.537 1.537 0 0 0 2.122 0l4.024-4.024L13 9.95l-4.025 4.024A3.475 3.475 0 0 1 6.5 15z"),d(s,"fill","currentColor"),d(e,"width","100%"),d(e,"height","100%"),d(e,"viewBox","0 0 32 32")},m(i,u){C(i,e,u),H(e,n),H(e,s)},p:W,i:W,o:W,d(i){i&&v(e)}}}class Xt extends x{constructor(e){super(),ee(this,e,null,Vt,G,{})}}function Qt(t){let e,n,s,i,u,r,o;return{c(){e=Q("svg"),n=Q("circle"),s=Q("circle"),i=Q("circle"),u=Q("circle"),r=Q("circle"),o=Q("path"),d(n,"cx","10"),d(n,"cy","12"),d(n,"r","2"),d(n,"fill","currentColor"),d(s,"cx","16"),d(s,"cy","9"),d(s,"r","2"),d(s,"fill","currentColor"),d(i,"cx","22"),d(i,"cy","12"),d(i,"r","2"),d(i,"fill","currentColor"),d(u,"cx","23"),d(u,"cy","18"),d(u,"r","2"),d(u,"fill","currentColor"),d(r,"cx","19"),d(r,"cy","23"),d(r,"r","2"),d(r,"fill","currentColor"),d(o,"fill","currentColor"),d(o,"d","M16.54 2A14 14 0 0 0 2 16a4.82 4.82 0 0 0 6.09 4.65l1.12-.31a3 3 0 0 1 3.79 2.9V27a3 3 0 0 0 3 3a14 14 0 0 0 14-14.54A14.05 14.05 0 0 0 16.54 2Zm8.11 22.31A11.93 11.93 0 0 1 16 28a1 1 0 0 1-1-1v-3.76a5 5 0 0 0-5-5a5.07 5.07 0 0 0-1.33.18l-1.12.31A2.82 2.82 0 0 1 4 16A12 12 0 0 1 16.47 4A12.18 12.18 0 0 1 28 15.53a11.89 11.89 0 0 1-3.35 8.79Z"),d(e,"width","100%"),d(e,"height","100%"),d(e,"viewBox","0 0 32 32")},m(l,h){C(l,e,h),H(e,n),H(e,s),H(e,i),H(e,u),H(e,r),H(e,o)},p:W,i:W,o:W,d(l){l&&v(e)}}}class Gt extends x{constructor(e){super(),ee(this,e,null,Qt,G,{})}}function Zt(t){let e,n;return{c(){e=Q("svg"),n=Q("path"),d(n,"d","M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"),d(e,"xmlns","http://www.w3.org/2000/svg"),d(e,"width","100%"),d(e,"height","100%"),d(e,"viewBox","0 0 24 24"),d(e,"fill","none"),d(e,"stroke","currentColor"),d(e,"stroke-width","1.5"),d(e,"stroke-linecap","round"),d(e,"stroke-linejoin","round"),d(e,"class","feather feather-edit-2")},m(s,i){C(s,e,i),H(e,n)},p:W,i:W,o:W,d(s){s&&v(e)}}}class xe extends x{constructor(e){super(),ee(this,e,null,Zt,G,{})}}function Kt(t){let e,n;return{c(){e=q("img"),Y(e.src,n=t[0])||d(e,"src",n),d(e,"alt","")},m(s,i){C(s,e,i),t[4](e)},p(s,[i]){i&1&&!Y(e.src,n=s[0])&&d(e,"src",n)},i:W,o:W,d(s){s&&v(e),t[4](null)}}}function $t(t,e,n){let{image:s}=e,i;const u=me();let r;function o(){r.destroy()}function l(){r&&o(),r=new qt(i,{autoCropArea:1,cropend(){const f=r.getCroppedCanvas().toDataURL();u("crop",f)}}),u("crop",s)}function h(f){R[f?"unshift":"push"](()=>{i=f,n(1,i)})}return t.$$set=f=>{"image"in f&&n(0,s=f.image)},[s,i,o,l,h]}class At extends x{constructor(e){super(),ee(this,e,$t,Kt,G,{image:0,destroy:2,create:3})}get image(){return this.$$.ctx[0]}set image(e){this.$$set({image:e}),It()}get destroy(){return this.$$.ctx[2]}get create(){return this.$$.ctx[3]}}class et{constructor(e,n){this.x=e,this.y=n}}class tt extends et{update(e){this.x=e.x,this.y=e.y}moveByAngle(e,n){const s=e+Math.PI/2;this.x=this.x+Math.sin(s)*n,this.y=this.y-Math.cos(s)*n}equalsTo(e){return this.x===e.x&&this.y===e.y}getDifferenceTo(e){return new et(this.x-e.x,this.y-e.y)}getDistanceTo(e){const n=this.getDifferenceTo(e);return Math.sqrt(Math.pow(n.x,2)+Math.pow(n.y,2))}getAngleTo(e){const n=this.getDifferenceTo(e);return Math.atan2(n.y,n.x)}toObject(){return{x:this.x,y:this.y}}}const xt=30;class en{constructor({radius:e=xt,enabled:n=!0,initialPoint:s={x:0,y:0}}={}){this.radius=e,this._isEnabled=n,this.pointer=new tt(s.x,s.y),this.brush=new tt(s.x,s.y),this.angle=0,this.distance=0,this._hasMoved=!1}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}isEnabled(){return this._isEnabled}setRadius(e){this.radius=e}getRadius(){return this.radius}getBrushCoordinates(){return this.brush.toObject()}getPointerCoordinates(){return this.pointer.toObject()}getBrush(){return this.brush}getPointer(){return this.pointer}getAngle(){return this.angle}getDistance(){return this.distance}brushHasMoved(){return this._hasMoved}update(e,{both:n=!1}={}){return this._hasMoved=!1,this.pointer.equalsTo(e)&&!n?!1:(this.pointer.update(e),n?(this._hasMoved=!0,this.brush.update(e),!0):(this._isEnabled?(this.distance=this.pointer.getDistanceTo(this.brush),this.angle=this.pointer.getAngleTo(this.brush),this.distance>this.radius&&(this.brush.moveByAngle(this.angle,this.distance-this.radius),this._hasMoved=!0)):(this.distance=0,this.angle=0,this.brush.update(e),this._hasMoved=!0),!0))}}function nt(t,e,n){const s=t.slice();return s[59]=e[n].name,s[60]=e[n].zIndex,s[61]=e,s[62]=n,s}function st(t){let e,n,s;return{c(){e=q("div"),e.textContent="Start drawing",d(e,"class","start-prompt svelte-yigbas")},m(i,u){C(i,e,u),s=!0},i(i){s||(Xe(()=>{n||(n=Ke(e,$e,{duration:50},!0)),n.run(1)}),s=!0)},o(i){n||(n=Ke(e,$e,{duration:50},!1)),n.run(0),s=!1},d(i){i&&v(e),i&&n&&n.end()}}}function rt(t){let e,n,s=t[59],i,u;const r=()=>t[29](e,s),o=()=>t[29](null,s);return{c(){e=q("canvas"),d(e,"key",n=t[59]),yt(e,"z-index",t[60]),d(e,"class","svelte-yigbas"),N(e,"lr",t[5]),N(e,"tb",!t[5])},m(l,h){C(l,e,h),r(),i||(u=[P(e,"mousedown",t[59]==="interface"?t[7]:void 0),P(e,"mousemove",t[59]==="interface"?t[8]:void 0),P(e,"mouseup",t[59]==="interface"?t[9]:void 0),P(e,"mouseout",t[59]==="interface"?t[9]:void 0),P(e,"blur",t[59]==="interface"?t[9]:void 0),P(e,"touchstart",t[59]==="interface"?t[7]:void 0),P(e,"touchmove",t[59]==="interface"?t[8]:void 0),P(e,"touchend",t[59]==="interface"?t[9]:void 0),P(e,"touchcancel",t[59]==="interface"?t[9]:void 0),P(e,"click",Ct(t[28]))],i=!0)},p(l,h){t=l,s!==t[59]&&(o(),s=t[59],r()),h[0]&32&&N(e,"lr",t[5]),h[0]&32&&N(e,"tb",!t[5])},d(l){l&&v(e),o(),i=!1,bt(u)}}}function tn(t){let e,n,s,i,u=t[4]===0&&st(),r=t[6],o=[];for(let l=0;lt[31].call(e))},m(l,h){C(l,e,h),u&&u.m(e,null),H(e,n);for(let f=0;f{u=null}),K()),h[0]&993){r=l[6];let f;for(f=0;fz?(m=b[0],y=b[0]/z,J=(b[1]-y)/2):(L=0,J=0,m=b[0],y=b[1]),k.temp.drawImage(r,L,J,m,y)}pt(async()=>{Object.keys(E).forEach(m=>{n(25,k[m]=E[m].getContext("2d"),k)}),await ge(),r&&(r.addEventListener("load",m=>{f==="webcam"?(k.temp.save(),k.temp.translate(g,0),k.temp.scale(-1,1),k.temp.drawImage(r,0,0),k.temp.restore()):$(),k.drawing.drawImage(E.temp,0,0,g,a),ue()}),setTimeout(()=>{f==="webcam"?(k.temp.save(),k.temp.translate(g,0),k.temp.scale(-1,1),k.temp.drawImage(r,0,0),k.temp.restore()):$(),k.drawing.drawImage(E.temp,0,0,g,a),de({lines:O.slice()}),ue()},100)),n(27,D=new en({radius:h*.05,enabled:!0,initialPoint:{x:g/2,y:a/2}})),fe=new Nt((m,y,...c)=>{ze(m,y)}),fe.observe(w),be(),n(23,I=!0),requestAnimationFrame(()=>{we(),requestAnimationFrame(()=>{he()})})});function we(){const m=g/2,y=a/2;D.update({x:m,y},{both:!0}),D.update({x:m,y},{both:!1}),ie=!0,ne=!0}zt(()=>{n(23,I=!1),fe.unobserve(w)});function Ne(){const m=O.slice(0,-1);Re(),r&&(f==="webcam"?(k.temp.save(),k.temp.translate(g,0),k.temp.scale(-1,1),k.temp.drawImage(r,0,0),k.temp.restore()):$(),(!O||!O.length)&&k.drawing.drawImage(E.temp,0,0,g,a)),de({lines:m}),n(4,le=m.length),O.length&&n(26,O=m),O.length==0&&i("clear"),ue()}let de=({lines:m})=>{m.forEach(y=>{const{points:c,brush_color:z,brush_radius:L}=y;Be({points:c,brush_color:z,brush_radius:L}),o==="mask"&&Se({points:c,brush_color:z,brush_radius:L}),F=c}),Ee({brush_color:l,brush_radius:h}),o==="mask"&&De()},Fe=m=>{m.preventDefault(),re=!0;const{x:y,y:c}=Me(m);m.touches&&m.touches.length>0&&D.update({x:y,y:c},{both:!0}),Te(y,c),n(4,le+=1)},Ae=m=>{m.preventDefault();const{x:y,y:c}=Me(m);Te(y,c)},We=m=>{m.preventDefault(),Ae(m),se=!1,re=!1,Ee(),o==="mask"&&De()},Ie=0,ye=0,Ce=0,ve=!1,ze=async()=>{if(b&&w){const c=w?.getBoundingClientRect(),z=b[0]/b[1],L=c.width/c.height;n(5,ve=z{ye=a,Ie=g,Ce=_},10),await ge(),he()},_e=async(m,y,c,z=!0)=>{if(!I)return;await ge();const L=window.devicePixelRatio||1;m.width=y.width*(z?L:1),m.height=y.height*(z?L:1);const J=m.getContext("2d");z&&J.scale(L,L),m.style.width=`${c.width}px`,m.style.height=`${c.height}px`},Me=m=>{const y=E.interface.getBoundingClientRect();let c=m.clientX,z=m.clientY;return m.changedTouches&&m.changedTouches.length>0&&(c=m.changedTouches[0].clientX,z=m.changedTouches[0].clientY),{x:(c-y.left)/y.width*g,y:(z-y.top)/y.height*a}},Te=(m,y)=>{D.update({x:m,y});const c=!D.isEnabled();(re&&!se||c&&re)&&(se=!0,F.push(D.brush.toObject())),se&&(F.push(D.brush.toObject()),Be({points:F,brush_color:l,brush_radius:h}),o==="mask"&&Se({points:F,brush_color:l,brush_radius:h})),ie=!0},Be=({points:m,brush_color:y,brush_radius:c})=>{if(!m||m.length<2||(n(25,k.temp.lineJoin="round",k),n(25,k.temp.lineCap="round",k),n(25,k.temp.strokeStyle=y,k),n(25,k.temp.lineWidth=c,k),!m||m.length<2))return;let z=m[0],L=m[1];k.temp.moveTo(L.x,L.y),k.temp.beginPath();for(var J=1,Ve=m.length;J{if(!m||m.length<2)return;n(25,k.temp_fake.lineJoin="round",k),n(25,k.temp_fake.lineCap="round",k),n(25,k.temp_fake.strokeStyle="#fff",k),n(25,k.temp_fake.lineWidth=c,k);let z=m[0],L=m[1];k.temp_fake.moveTo(L.x,L.y),k.temp_fake.beginPath();for(var J=1,Ve=m.length;J{F.length<1||(F.length=0,k.mask.drawImage(E.temp_fake,0,0,g,a),ue())},Ee=()=>{F.length<1||(O.push({points:F.slice(),brush_color:l,brush_radius:h}),o!=="mask"&&(F.length=0),k.drawing.drawImage(E.temp,0,0,g,a),ue())},ue=()=>{const m=je();i("change",m)};function he(){return n(26,O=[]),Re(),n(4,le=0),!0}function Re(){ne=!0,k.temp.clearRect(0,0,g,a),n(25,k.temp.fillStyle=o==="mask"?"transparent":"#FFFFFF",k),k.temp.fillRect(0,0,g,a),o==="mask"&&(k.temp_fake.clearRect(0,0,E.temp_fake.width,E.temp_fake.height),k.mask.clearRect(0,0,g,a),n(25,k.mask.fillStyle="#000",k),k.mask.fillRect(0,0,g,a))}let be=({once:m=!1}={})=>{if(ie||ne){const y=D.getPointerCoordinates(),c=D.getBrushCoordinates();Oe(k.interface,y,c),ie=!1,ne=!1}m||window.requestAnimationFrame(()=>{be()})},Oe=(m,y,c)=>{m.clearRect(0,0,g,a),m.beginPath(),m.fillStyle=l,m.arc(c.x,c.y,h/2,0,Math.PI*2,!0),m.fill(),m.beginPath(),m.fillStyle=nn,m.arc(c.x,c.y,s,0,Math.PI*2,!0),m.fill()};function je(){return o==="mask"?E.mask.toDataURL("image/jpg"):E.drawing.toDataURL("image/jpg")}function He(m){ce.call(this,t,m)}function Ye(m,y){R[m?"unshift":"push"](()=>{E[y]=m,n(0,E)})}function Je(m){R[m?"unshift":"push"](()=>{w=m,n(3,w)})}function Pe(){M=this.offsetWidth,j=this.offsetHeight,n(1,M),n(2,j)}return t.$$set=m=>{"value"in m&&n(13,u=m.value),"value_img"in m&&n(14,r=m.value_img),"mode"in m&&n(15,o=m.mode),"brush_color"in m&&n(16,l=m.brush_color),"brush_radius"in m&&n(10,h=m.brush_radius),"source"in m&&n(17,f=m.source),"width"in m&&n(11,g=m.width),"height"in m&&n(12,a=m.height),"container_height"in m&&n(18,_=m.container_height),"shape"in m&&n(19,b=m.shape)},t.$$.update=()=>{t.$$.dirty[0]&530432&&b&&(g||a)&&(n(11,g=b[0]),n(12,a=b[1])),t.$$.dirty[0]&8396800&&I&&!u&&he(),t.$$.dirty[0]&125982721&&I&&r!==te&&(n(24,te=r),he(),setTimeout(()=>{f==="webcam"?(k.temp.save(),k.temp.translate(g,0),k.temp.scale(-1,1),k.temp.drawImage(r,0,0),k.temp.restore()):$(),k.drawing.drawImage(E.temp,0,0,g,a),de({lines:O.slice()}),ue()},50)),t.$$.dirty[0]&134218752&&D&&(we(),D.setRadius(h*.05)),t.$$.dirty[0]&6144&&(g||a)&&ze(),t.$$.dirty[0]&1024&&(s=h*.075)},[E,M,j,w,le,ve,ae,Fe,Ae,We,h,g,a,u,r,o,l,f,_,b,Ne,he,je,I,te,k,O,D,He,Ye,Je,Pe]}class Qe extends x{constructor(e){super(),ee(this,e,sn,tn,G,{value:13,value_img:14,mode:15,brush_color:16,brush_radius:10,source:17,width:11,height:12,container_height:18,shape:19,undo:20,clear:21,get_image_data:22},null,[-1,-1,-1])}get undo(){return this.$$.ctx[20]}get clear(){return this.$$.ctx[21]}get get_image_data(){return this.$$.ctx[22]}}function rn(t){let e,n,s,i,u;return n=new pe({props:{Icon:Ft,label:"Undo"}}),n.$on("click",t[1]),i=new pe({props:{Icon:Ot,label:"Clear"}}),i.$on("click",t[2]),{c(){e=q("div"),T(n.$$.fragment),s=U(),T(i.$$.fragment),d(e,"class","svelte-s6ybro")},m(r,o){C(r,e,o),B(n,e,null),H(e,s),B(i,e,null),u=!0},p:W,i(r){u||(p(n.$$.fragment,r),p(i.$$.fragment,r),u=!0)},o(r){A(n.$$.fragment,r),A(i.$$.fragment,r),u=!1},d(r){r&&v(e),S(n),S(i)}}}function ln(t){const e=me();return[e,()=>e("undo"),i=>{e("clear"),i.stopPropagation()}]}class Ge extends x{constructor(e){super(),ee(this,e,ln,rn,G,{})}}function lt(t){let e,n,s,i,u;return{c(){e=q("input"),d(e,"aria-label","Brush radius"),d(e,"type","range"),d(e,"min",n=.5*(t[2]/t[6])),d(e,"max",s=75*(t[2]/t[6])),d(e,"class","svelte-p4aq0j")},m(r,o){C(r,e,o),Le(e,t[0]),i||(u=[P(e,"change",t[10]),P(e,"input",t[10])],i=!0)},p(r,o){o&68&&n!==(n=.5*(r[2]/r[6]))&&d(e,"min",n),o&68&&s!==(s=75*(r[2]/r[6]))&&d(e,"max",s),o&1&&Le(e,r[0])},d(r){r&&v(e),i=!1,bt(u)}}}function ut(t){let e,n,s,i;n=new pe({props:{Icon:Gt,label:"Select brush color"}}),n.$on("click",t[11]);let u=t[5]&&ot(t);return{c(){e=q("span"),T(n.$$.fragment),s=U(),u&&u.c(),d(e,"class","col svelte-p4aq0j")},m(r,o){C(r,e,o),B(n,e,null),H(e,s),u&&u.m(e,null),i=!0},p(r,o){r[5]?u?u.p(r,o):(u=ot(r),u.c(),u.m(e,null)):u&&(u.d(1),u=null)},i(r){i||(p(n.$$.fragment,r),i=!0)},o(r){A(n.$$.fragment,r),i=!1},d(r){r&&v(e),S(n),u&&u.d()}}}function ot(t){let e,n,s;return{c(){e=q("input"),d(e,"aria-label","Brush color"),d(e,"type","color"),d(e,"class","svelte-p4aq0j")},m(i,u){C(i,e,u),Le(e,t[1]),n||(s=P(e,"input",t[12]),n=!0)},p(i,u){u&2&&Le(e,i[1])},d(i){i&&v(e),n=!1,s()}}}function un(t){let e,n,s,i,u,r;s=new pe({props:{Icon:Xt,label:"Use brush"}}),s.$on("click",t[9]);let o=t[4]&<(t),l=t[3]!=="mask"&&ut(t);return{c(){e=q("div"),n=q("span"),T(s.$$.fragment),i=U(),o&&o.c(),u=U(),l&&l.c(),d(n,"class","brush svelte-p4aq0j"),d(e,"class","wrap svelte-p4aq0j")},m(h,f){C(h,e,f),H(e,n),B(s,n,null),H(n,i),o&&o.m(n,null),H(e,u),l&&l.m(e,null),r=!0},p(h,[f]){h[4]?o?o.p(h,f):(o=lt(h),o.c(),o.m(n,null)):o&&(o.d(1),o=null),h[3]!=="mask"?l?(l.p(h,f),f&8&&p(l,1)):(l=ut(h),l.c(),p(l,1),l.m(e,null)):l&&(Z(),A(l,1,1,()=>{l=null}),K())},i(h){r||(p(s.$$.fragment,h),p(l),r=!0)},o(h){A(s.$$.fragment,h),A(l),r=!1},d(h){h&&v(e),S(s),o&&o.d(),l&&l.d()}}}function on(t,e,n){let s;me();let i=!1,u=!1,{brush_radius:r=20}=e,{brush_color:o="#000"}=e,{container_height:l}=e,{img_width:h}=e,{img_height:f}=e,{mode:g="other"}=e;const a=()=>n(4,i=!i);function _(){r=Mt(this.value),n(0,r)}const b=()=>n(5,u=!u);function I(){o=this.value,n(1,o)}return t.$$set=M=>{"brush_radius"in M&&n(0,r=M.brush_radius),"brush_color"in M&&n(1,o=M.brush_color),"container_height"in M&&n(7,l=M.container_height),"img_width"in M&&n(2,h=M.img_width),"img_height"in M&&n(8,f=M.img_height),"mode"in M&&n(3,g=M.mode)},t.$$.update=()=>{t.$$.dirty&388&&n(6,s=l*(h/f))},[r,o,h,g,i,u,s,l,f,a,_,b,I]}class Ze extends x{constructor(e){super(),ee(this,e,on,un,G,{brush_radius:0,brush_color:1,container_height:7,img_width:2,img_height:8,mode:3})}}function an(t){let e,n;return{c(){e=q("img"),Y(e.src,n=t[0].image||t[0])||d(e,"src",n),d(e,"alt",""),d(e,"class","svelte-rlgzoo"),N(e,"webcam",t[5]==="webcam"&&t[9])},m(s,i){C(s,e,i)},p(s,i){i[0]&1&&!Y(e.src,n=s[0].image||s[0])&&d(e,"src",n),i[0]&544&&N(e,"webcam",s[5]==="webcam"&&s[9])},i:W,o:W,d(s){s&&v(e)}}}function fn(t){let e=t[20],n,s,i,u=at(t),r=t[15]>0&&ft(t);return{c(){u.c(),n=U(),r&&r.c(),s=oe()},m(o,l){u.m(o,l),C(o,n,l),r&&r.m(o,l),C(o,s,l),i=!0},p(o,l){l[0]&1048576&&G(e,e=o[20])?(u.d(1),u=at(o),u.c(),u.m(n.parentNode,n)):u.p(o,l),o[15]>0?r?(r.p(o,l),l[0]&32768&&p(r,1)):(r=ft(o),r.c(),p(r,1),r.m(s.parentNode,s)):r&&(Z(),A(r,1,1,()=>{r=null}),K())},i(o){i||(p(r),i=!0)},o(o){A(r),i=!1},d(o){u.d(o),o&&v(n),r&&r.d(o),o&&v(s)}}}function _n(t){let e,n,s,i,u;return e=new qe({props:{editable:!0}}),e.$on("edit",t[49]),e.$on("clear",t[23]),{c(){T(e.$$.fragment),n=U(),s=q("img"),Y(s.src,i=t[0])||d(s,"src",i),d(s,"alt",""),d(s,"class","svelte-rlgzoo"),N(s,"webcam",t[5]==="webcam"&&t[9])},m(r,o){B(e,r,o),C(r,n,o),C(r,s,o),u=!0},p(r,o){(!u||o[0]&1&&!Y(s.src,i=r[0]))&&d(s,"src",i),o[0]&544&&N(s,"webcam",r[5]==="webcam"&&r[9])},i(r){u||(p(e.$$.fragment,r),u=!0)},o(r){A(e.$$.fragment,r),u=!1},d(r){S(e,r),r&&v(n),r&&v(s)}}}function hn(t){let e,n,s,i,u={image:t[0]};return e=new At({props:u}),t[47](e),e.$on("crop",t[24]),s=new qe({}),s.$on("clear",t[48]),{c(){T(e.$$.fragment),n=U(),T(s.$$.fragment)},m(r,o){B(e,r,o),C(r,n,o),B(s,r,o),i=!0},p(r,o){const l={};o[0]&1&&(l.image=r[0]),e.$set(l)},i(r){i||(p(e.$$.fragment,r),p(s.$$.fragment,r),i=!0)},o(r){A(e.$$.fragment,r),A(s.$$.fragment,r),i=!1},d(r){t[47](null),S(e,r),r&&v(n),S(s,r)}}}function cn(t){let e,n,s=t[5]==="webcam"&&!t[20]&&ht(t);return{c(){s&&s.c(),e=oe()},m(i,u){s&&s.m(i,u),C(i,e,u),n=!0},p(i,u){i[5]==="webcam"&&!i[20]?s?(s.p(i,u),u[0]&1048608&&p(s,1)):(s=ht(i),s.c(),p(s,1),s.m(e.parentNode,e)):s&&(Z(),A(s,1,1,()=>{s=null}),K())},i(i){n||(p(s),n=!0)},o(i){A(s),n=!1},d(i){s&&s.d(i),i&&v(e)}}}function mn(t){let e,n,s,i,u,r,o;e=new Ge({}),e.$on("undo",t[39]),e.$on("clear",t[26]);let l=t[1]==="color-sketch"&&ct(t);function h(a){t[42](a)}function f(a){t[43](a)}let g={value:t[0],mode:t[12],width:t[15]||t[19],height:t[14]||t[18],container_height:t[16]||t[18],shape:t[6]};return t[2]!==void 0&&(g.brush_radius=t[2]),t[21]!==void 0&&(g.brush_color=t[21]),i=new Qe({props:g}),R.push(()=>X(i,"brush_radius",h)),R.push(()=>X(i,"brush_color",f)),t[44](i),i.$on("change",t[24]),i.$on("clear",t[26]),{c(){T(e.$$.fragment),n=U(),l&&l.c(),s=U(),T(i.$$.fragment)},m(a,_){B(e,a,_),C(a,n,_),l&&l.m(a,_),C(a,s,_),B(i,a,_),o=!0},p(a,_){a[1]==="color-sketch"?l?(l.p(a,_),_[0]&2&&p(l,1)):(l=ct(a),l.c(),p(l,1),l.m(s.parentNode,s)):l&&(Z(),A(l,1,1,()=>{l=null}),K());const b={};_[0]&1&&(b.value=a[0]),_[0]&4096&&(b.mode=a[12]),_[0]&557056&&(b.width=a[15]||a[19]),_[0]&278528&&(b.height=a[14]||a[18]),_[0]&327680&&(b.container_height=a[16]||a[18]),_[0]&64&&(b.shape=a[6]),!u&&_[0]&4&&(u=!0,b.brush_radius=a[2],V(()=>u=!1)),!r&&_[0]&2097152&&(r=!0,b.brush_color=a[21],V(()=>r=!1)),i.$set(b)},i(a){o||(p(e.$$.fragment,a),p(l),p(i.$$.fragment,a),o=!0)},o(a){A(e.$$.fragment,a),A(l),A(i.$$.fragment,a),o=!1},d(a){S(e,a),a&&v(n),l&&l.d(a),a&&v(s),t[44](null),S(i,a)}}}function gn(t){let e,n,s;function i(r){t[38](r)}let u={filetype:"image/*",include_file_metadata:!1,disable_click:!!t[0],$$slots:{default:[An]},$$scope:{ctx:t}};return t[11]!==void 0&&(u.dragging=t[11]),e=new Ht({props:u}),R.push(()=>X(e,"dragging",i)),e.$on("load",t[22]),{c(){T(e.$$.fragment)},m(r,o){B(e,r,o),s=!0},p(r,o){const l={};o[0]&1&&(l.disable_click=!!r[0]),o[0]&4191975|o[1]&134217728&&(l.$$scope={dirty:o,ctx:r}),!n&&o[0]&2048&&(n=!0,l.dragging=r[11],V(()=>n=!1)),e.$set(l)},i(r){s||(p(e.$$.fragment,r),s=!0)},o(r){A(e.$$.fragment,r),s=!1},d(r){S(e,r)}}}function at(t){let e,n,s,i;return{c(){e=q("img"),d(e,"class","absolute-img svelte-rlgzoo"),Y(e.src,n=t[20]||t[0]?.image||t[0])||d(e,"src",n),d(e,"alt",""),N(e,"webcam",t[5]==="webcam"&&t[9])},m(u,r){C(u,e,r),t[50](e),s||(i=P(e,"load",t[25]),s=!0)},p(u,r){r[0]&1048577&&!Y(e.src,n=u[20]||u[0]?.image||u[0])&&d(e,"src",n),r[0]&544&&N(e,"webcam",u[5]==="webcam"&&u[9])},d(u){u&&v(e),t[50](null),s=!1,i()}}}function ft(t){let e,n,s,i,u,r,o,l;function h(_){t[52](_)}function f(_){t[53](_)}let g={value:t[0],mode:t[12],width:t[15]||t[19],height:t[14]||t[18],container_height:t[16]||t[18],value_img:t[17],source:t[5]};t[2]!==void 0&&(g.brush_radius=t[2]),t[21]!==void 0&&(g.brush_color=t[21]),e=new Qe({props:g}),t[51](e),R.push(()=>X(e,"brush_radius",h)),R.push(()=>X(e,"brush_color",f)),e.$on("change",t[24]),u=new Ge({}),u.$on("undo",t[54]),u.$on("clear",t[26]);let a=(t[1]==="color-sketch"||t[1]==="sketch")&&_t(t);return{c(){T(e.$$.fragment),i=U(),T(u.$$.fragment),r=U(),a&&a.c(),o=oe()},m(_,b){B(e,_,b),C(_,i,b),B(u,_,b),C(_,r,b),a&&a.m(_,b),C(_,o,b),l=!0},p(_,b){const I={};b[0]&1&&(I.value=_[0]),b[0]&4096&&(I.mode=_[12]),b[0]&557056&&(I.width=_[15]||_[19]),b[0]&278528&&(I.height=_[14]||_[18]),b[0]&327680&&(I.container_height=_[16]||_[18]),b[0]&131072&&(I.value_img=_[17]),b[0]&32&&(I.source=_[5]),!n&&b[0]&4&&(n=!0,I.brush_radius=_[2],V(()=>n=!1)),!s&&b[0]&2097152&&(s=!0,I.brush_color=_[21],V(()=>s=!1)),e.$set(I),_[1]==="color-sketch"||_[1]==="sketch"?a?(a.p(_,b),b[0]&2&&p(a,1)):(a=_t(_),a.c(),p(a,1),a.m(o.parentNode,o)):a&&(Z(),A(a,1,1,()=>{a=null}),K())},i(_){l||(p(e.$$.fragment,_),p(u.$$.fragment,_),p(a),l=!0)},o(_){A(e.$$.fragment,_),A(u.$$.fragment,_),A(a),l=!1},d(_){t[51](null),S(e,_),_&&v(i),S(u,_),_&&v(r),a&&a.d(_),_&&v(o)}}}function _t(t){let e,n,s,i;function u(l){t[55](l)}function r(l){t[56](l)}let o={container_height:t[16]||t[18],img_width:t[15]||t[19],img_height:t[14]||t[18],mode:t[12]};return t[2]!==void 0&&(o.brush_radius=t[2]),t[21]!==void 0&&(o.brush_color=t[21]),e=new Ze({props:o}),R.push(()=>X(e,"brush_radius",u)),R.push(()=>X(e,"brush_color",r)),{c(){T(e.$$.fragment)},m(l,h){B(e,l,h),i=!0},p(l,h){const f={};h[0]&327680&&(f.container_height=l[16]||l[18]),h[0]&557056&&(f.img_width=l[15]||l[19]),h[0]&278528&&(f.img_height=l[14]||l[18]),h[0]&4096&&(f.mode=l[12]),!n&&h[0]&4&&(n=!0,f.brush_radius=l[2],V(()=>n=!1)),!s&&h[0]&2097152&&(s=!0,f.brush_color=l[21],V(()=>s=!1)),e.$set(f)},i(l){i||(p(e.$$.fragment,l),i=!0)},o(l){A(e.$$.fragment,l),i=!1},d(l){S(e,l)}}}function ht(t){let e,n;return e=new Wt({props:{streaming:t[7],pending:t[8],mirror_webcam:t[9]}}),e.$on("capture",t[45]),e.$on("stream",t[24]),e.$on("error",t[46]),{c(){T(e.$$.fragment)},m(s,i){B(e,s,i),n=!0},p(s,i){const u={};i[0]&128&&(u.streaming=s[7]),i[0]&256&&(u.pending=s[8]),i[0]&512&&(u.mirror_webcam=s[9]),e.$set(u)},i(s){n||(p(e.$$.fragment,s),n=!0)},o(s){A(e.$$.fragment,s),n=!1},d(s){S(e,s)}}}function ct(t){let e,n,s,i;function u(l){t[40](l)}function r(l){t[41](l)}let o={container_height:t[16]||t[18],img_width:t[15]||t[19],img_height:t[14]||t[18]};return t[2]!==void 0&&(o.brush_radius=t[2]),t[21]!==void 0&&(o.brush_color=t[21]),e=new Ze({props:o}),R.push(()=>X(e,"brush_radius",u)),R.push(()=>X(e,"brush_color",r)),{c(){T(e.$$.fragment)},m(l,h){B(e,l,h),i=!0},p(l,h){const f={};h[0]&327680&&(f.container_height=l[16]||l[18]),h[0]&557056&&(f.img_width=l[15]||l[19]),h[0]&278528&&(f.img_height=l[14]||l[18]),!n&&h[0]&4&&(n=!0,f.brush_radius=l[2],V(()=>n=!1)),!s&&h[0]&2097152&&(s=!0,f.brush_color=l[21],V(()=>s=!1)),e.$set(f)},i(l){i||(p(e.$$.fragment,l),i=!0)},o(l){A(e.$$.fragment,l),i=!1},d(l){S(e,l)}}}function dn(t){let e,n;return{c(){e=q("img"),Y(e.src,n=t[0].image||t[0])||d(e,"src",n),d(e,"alt","hello"),d(e,"class","svelte-rlgzoo"),N(e,"webcam",t[5]==="webcam"&&t[9])},m(s,i){C(s,e,i)},p(s,i){i[0]&1&&!Y(e.src,n=s[0].image||s[0])&&d(e,"src",n),i[0]&544&&N(e,"webcam",s[5]==="webcam"&&s[9])},i:W,o:W,d(s){s&&v(e)}}}function bn(t){let e=t[20],n,s,i,u=mt(t),r=t[15]>0&>(t);return{c(){u.c(),n=U(),r&&r.c(),s=oe()},m(o,l){u.m(o,l),C(o,n,l),r&&r.m(o,l),C(o,s,l),i=!0},p(o,l){l[0]&1048576&&G(e,e=o[20])?(u.d(1),u=mt(o),u.c(),u.m(n.parentNode,n)):u.p(o,l),o[15]>0?r?(r.p(o,l),l[0]&32768&&p(r,1)):(r=gt(o),r.c(),p(r,1),r.m(s.parentNode,s)):r&&(Z(),A(r,1,1,()=>{r=null}),K())},i(o){i||(p(r),i=!0)},o(o){A(r),i=!1},d(o){u.d(o),o&&v(n),r&&r.d(o),o&&v(s)}}}function kn(t){let e,n,s,i,u;return e=new qe({props:{editable:!0}}),e.$on("edit",t[30]),e.$on("clear",t[23]),{c(){T(e.$$.fragment),n=U(),s=q("img"),Y(s.src,i=t[0])||d(s,"src",i),d(s,"alt",""),d(s,"class","svelte-rlgzoo"),N(s,"scale-x-[-1]",t[5]==="webcam"&&t[9])},m(r,o){B(e,r,o),C(r,n,o),C(r,s,o),u=!0},p(r,o){(!u||o[0]&1&&!Y(s.src,i=r[0]))&&d(s,"src",i),o[0]&544&&N(s,"scale-x-[-1]",r[5]==="webcam"&&r[9])},i(r){u||(p(e.$$.fragment,r),u=!0)},o(r){A(e.$$.fragment,r),u=!1},d(r){S(e,r),r&&v(n),r&&v(s)}}}function pn(t){let e,n,s,i,u={image:t[0]};return e=new At({props:u}),t[28](e),e.$on("crop",t[24]),s=new qe({}),s.$on("clear",t[29]),{c(){T(e.$$.fragment),n=U(),T(s.$$.fragment)},m(r,o){B(e,r,o),C(r,n,o),B(s,r,o),i=!0},p(r,o){const l={};o[0]&1&&(l.image=r[0]),e.$set(l)},i(r){i||(p(e.$$.fragment,r),p(s.$$.fragment,r),i=!0)},o(r){A(e.$$.fragment,r),A(s.$$.fragment,r),i=!1},d(r){t[28](null),S(e,r),r&&v(n),S(s,r)}}}function wn(t){let e;const n=t[27].default,s=Tt(n,t,t[58],null);return{c(){s&&s.c()},m(i,u){s&&s.m(i,u),e=!0},p(i,u){s&&s.p&&(!e||u[1]&134217728)&&Bt(s,n,i,i[58],e?Dt(n,i[58],u,null):St(i[58]),null)},i(i){e||(p(s,i),e=!0)},o(i){A(s,i),e=!1},d(i){s&&s.d(i)}}}function mt(t){let e,n,s,i;return{c(){e=q("img"),d(e,"class","absolute-img svelte-rlgzoo"),Y(e.src,n=t[20]||t[0]?.image||t[0])||d(e,"src",n),d(e,"alt",""),N(e,"webcam",t[5]==="webcam"&&t[9])},m(u,r){C(u,e,r),t[31](e),s||(i=P(e,"load",t[25]),s=!0)},p(u,r){r[0]&1048577&&!Y(e.src,n=u[20]||u[0]?.image||u[0])&&d(e,"src",n),r[0]&544&&N(e,"webcam",u[5]==="webcam"&&u[9])},d(u){u&&v(e),t[31](null),s=!1,i()}}}function gt(t){let e,n,s,i,u,r,o,l;function h(_){t[33](_)}function f(_){t[34](_)}let g={value:t[0],mode:t[12],width:t[15]||t[19],height:t[14]||t[18],container_height:t[16]||t[18],value_img:t[17],source:t[5],shape:t[6]};t[2]!==void 0&&(g.brush_radius=t[2]),t[21]!==void 0&&(g.brush_color=t[21]),e=new Qe({props:g}),t[32](e),R.push(()=>X(e,"brush_radius",h)),R.push(()=>X(e,"brush_color",f)),e.$on("change",t[24]),u=new Ge({}),u.$on("undo",t[35]),u.$on("clear",t[26]);let a=(t[1]==="color-sketch"||t[1]==="sketch")&&dt(t);return{c(){T(e.$$.fragment),i=U(),T(u.$$.fragment),r=U(),a&&a.c(),o=oe()},m(_,b){B(e,_,b),C(_,i,b),B(u,_,b),C(_,r,b),a&&a.m(_,b),C(_,o,b),l=!0},p(_,b){const I={};b[0]&1&&(I.value=_[0]),b[0]&4096&&(I.mode=_[12]),b[0]&557056&&(I.width=_[15]||_[19]),b[0]&278528&&(I.height=_[14]||_[18]),b[0]&327680&&(I.container_height=_[16]||_[18]),b[0]&131072&&(I.value_img=_[17]),b[0]&32&&(I.source=_[5]),b[0]&64&&(I.shape=_[6]),!n&&b[0]&4&&(n=!0,I.brush_radius=_[2],V(()=>n=!1)),!s&&b[0]&2097152&&(s=!0,I.brush_color=_[21],V(()=>s=!1)),e.$set(I),_[1]==="color-sketch"||_[1]==="sketch"?a?(a.p(_,b),b[0]&2&&p(a,1)):(a=dt(_),a.c(),p(a,1),a.m(o.parentNode,o)):a&&(Z(),A(a,1,1,()=>{a=null}),K())},i(_){l||(p(e.$$.fragment,_),p(u.$$.fragment,_),p(a),l=!0)},o(_){A(e.$$.fragment,_),A(u.$$.fragment,_),A(a),l=!1},d(_){t[32](null),S(e,_),_&&v(i),S(u,_),_&&v(r),a&&a.d(_),_&&v(o)}}}function dt(t){let e,n,s,i;function u(l){t[36](l)}function r(l){t[37](l)}let o={container_height:t[16]||t[18],img_width:t[15]||t[19],img_height:t[14]||t[18],mode:t[12]};return t[2]!==void 0&&(o.brush_radius=t[2]),t[21]!==void 0&&(o.brush_color=t[21]),e=new Ze({props:o}),R.push(()=>X(e,"brush_radius",u)),R.push(()=>X(e,"brush_color",r)),{c(){T(e.$$.fragment)},m(l,h){B(e,l,h),i=!0},p(l,h){const f={};h[0]&327680&&(f.container_height=l[16]||l[18]),h[0]&557056&&(f.img_width=l[15]||l[19]),h[0]&278528&&(f.img_height=l[14]||l[18]),h[0]&4096&&(f.mode=l[12]),!n&&h[0]&4&&(n=!0,f.brush_radius=l[2],V(()=>n=!1)),!s&&h[0]&2097152&&(s=!0,f.brush_color=l[21],V(()=>s=!1)),e.$set(f)},i(l){i||(p(e.$$.fragment,l),i=!0)},o(l){A(e.$$.fragment,l),i=!1},d(l){S(e,l)}}}function An(t){let e,n,s,i;const u=[wn,pn,kn,bn,dn],r=[];function o(l,h){return l[0]===null&&!l[20]||l[7]?0:l[1]==="select"?1:l[1]==="editor"?2:(l[1]==="sketch"||l[1]==="color-sketch")&&(l[0]!==null||l[20])?3:4}return e=o(t),n=r[e]=u[e](t),{c(){n.c(),s=oe()},m(l,h){r[e].m(l,h),C(l,s,h),i=!0},p(l,h){let f=e;e=o(l),e===f?r[e].p(l,h):(Z(),A(r[f],1,1,()=>{r[f]=null}),K(),n=r[e],n?n.p(l,h):(n=r[e]=u[e](l),n.c()),p(n,1),n.m(s.parentNode,s))},i(l){i||(p(n),i=!0)},o(l){A(n),i=!1},d(l){r[e].d(l),l&&v(s)}}}function In(t){let e,n,s,i,u,r,o;e=new wt({props:{show_label:t[4],Icon:t[5]==="canvas"?xe:Ue,label:t[3]||(t[5]==="canvas"?"Sketch":"Image")}});const l=[gn,mn,cn,hn,_n,fn,an],h=[];function f(g,a){return g[5]==="upload"?0:g[5]==="canvas"?1:g[0]===null&&!g[20]||g[7]?2:g[1]==="select"?3:g[1]==="editor"?4:(g[1]==="sketch"||g[1]==="color-sketch")&&(g[0]!==null||g[20])?5:6}return i=f(t),u=h[i]=l[i](t),{c(){T(e.$$.fragment),n=U(),s=q("div"),u.c(),d(s,"data-testid","image"),d(s,"class","svelte-rlgzoo"),Xe(()=>t[57].call(s)),N(s,"fixed-height",t[5]!=="webcam"||t[1]==="sketch"||t[1]==="color-sketch")},m(g,a){B(e,g,a),C(g,n,a),C(g,s,a),h[i].m(s,null),r=kt(s,t[57].bind(s)),o=!0},p(g,a){const _={};a[0]&16&&(_.show_label=g[4]),a[0]&32&&(_.Icon=g[5]==="canvas"?xe:Ue),a[0]&40&&(_.label=g[3]||(g[5]==="canvas"?"Sketch":"Image")),e.$set(_);let b=i;i=f(g),i===b?h[i].p(g,a):(Z(),A(h[b],1,1,()=>{h[b]=null}),K(),u=h[i],u?u.p(g,a):(u=h[i]=l[i](g),u.c()),p(u,1),u.m(s,null)),a[0]&34&&N(s,"fixed-height",g[5]!=="webcam"||g[1]==="sketch"||g[1]==="color-sketch")},i(g){o||(p(e.$$.fragment,g),p(u),o=!0)},o(g){A(e.$$.fragment,g),A(u),o=!1},d(g){S(e,g),g&&v(n),g&&v(s),h[i].d(),r()}}}function yn(t,e,n){let s,{$$slots:i={},$$scope:u}=e,{value:r}=e,{label:o=void 0}=e,{show_label:l}=e,{source:h="upload"}=e,{tool:f="editor"}=e,{shape:g}=e,{streaming:a=!1}=e,{pending:_=!1}=e,{mirror_webcam:b}=e,{brush_radius:I}=e,M,j;r&&(h==="upload"||h==="webcam")&&f==="sketch"&&(r={image:r,mask:null});function te({detail:c}){f==="color-sketch"?n(20,$=c):n(0,r=(h==="upload"||h==="webcam")&&f==="sketch"?{image:c,mask:null}:c),k("upload",c)}function ae({detail:c}){n(0,r=null),n(20,$=void 0),k("clear")}async function E({detail:c},z){D==="mask"?h==="webcam"&&z?n(0,r={image:c,mask:null}):n(0,r={image:typeof r=="string"?r:r?.image||null,mask:c}):(h==="upload"||h==="webcam")&&f==="sketch"?n(0,r={image:c,mask:null}):n(0,r=c),await ge(),k(a?"stream":"edit")}const k=me();let F=!1;function O(c){const z=c.currentTarget;n(15,se=z.naturalWidth),n(14,ne=z.naturalHeight),n(16,re=z.getBoundingClientRect().height)}async function ie(){M.clear(),await ge(),n(0,r=null),n(20,$=void 0)}let ne=0,se=0,re=0,D,w,fe,le,$;pt(async()=>{f==="color-sketch"&&r&&typeof r=="string"&&(n(20,$=r),await ge(),O({currentTarget:w}))});function we(c){R[c?"unshift":"push"](()=>{j=c,n(10,j),n(0,r)})}const Ne=c=>(ae(c),n(1,f="editor")),de=()=>n(1,f="select");function Fe(c){R[c?"unshift":"push"](()=>{w=c,n(17,w)})}function Ae(c){R[c?"unshift":"push"](()=>{M=c,n(13,M)})}function We(c){I=c,n(2,I)}function Ie(c){s=c,n(21,s),n(12,D),n(5,h),n(1,f)}const ye=()=>M.undo();function Ce(c){I=c,n(2,I)}function ve(c){s=c,n(21,s),n(12,D),n(5,h),n(1,f)}function ze(c){F=c,n(11,F)}const _e=()=>M.undo();function Me(c){I=c,n(2,I)}function Te(c){s=c,n(21,s),n(12,D),n(5,h),n(1,f)}function Be(c){I=c,n(2,I)}function Se(c){s=c,n(21,s),n(12,D),n(5,h),n(1,f)}function De(c){R[c?"unshift":"push"](()=>{M=c,n(13,M)})}const Ee=c=>f==="color-sketch"?te(c):E(c,!0);function ue(c){ce.call(this,t,c)}function he(c){R[c?"unshift":"push"](()=>{j=c,n(10,j),n(0,r)})}const Re=c=>(ae(c),n(1,f="editor")),be=()=>n(1,f="select");function Oe(c){R[c?"unshift":"push"](()=>{w=c,n(17,w)})}function je(c){R[c?"unshift":"push"](()=>{M=c,n(13,M)})}function He(c){I=c,n(2,I)}function Ye(c){s=c,n(21,s),n(12,D),n(5,h),n(1,f)}const Je=()=>M.undo();function Pe(c){I=c,n(2,I)}function m(c){s=c,n(21,s),n(12,D),n(5,h),n(1,f)}function y(){fe=this.offsetHeight,le=this.offsetWidth,n(18,fe),n(19,le)}return t.$$set=c=>{"value"in c&&n(0,r=c.value),"label"in c&&n(3,o=c.label),"show_label"in c&&n(4,l=c.show_label),"source"in c&&n(5,h=c.source),"tool"in c&&n(1,f=c.tool),"shape"in c&&n(6,g=c.shape),"streaming"in c&&n(7,a=c.streaming),"pending"in c&&n(8,_=c.pending),"mirror_webcam"in c&&n(9,b=c.mirror_webcam),"brush_radius"in c&&n(2,I=c.brush_radius),"$$scope"in c&&n(58,u=c.$$scope)},t.$$.update=()=>{t.$$.dirty[0]&1&&k("change",r),t.$$.dirty[0]&2048&&k("drag",F),t.$$.dirty[0]&34&&(h==="canvas"&&f==="sketch"?n(12,D="bw-sketch"):f==="color-sketch"?n(12,D="color-sketch"):(h==="upload"||h==="webcam")&&f==="sketch"?n(12,D="mask"):n(12,D="editor")),t.$$.dirty[0]&4096&&n(21,s=D=="mask"?"#000000":"#000"),t.$$.dirty[0]&1&&(r===null||r.image===null&&r.mask===null)&&n(20,$=void 0),t.$$.dirty[0]&1025&&j&&(r?(n(10,j.image=r,j),j.create()):j.destroy())},[r,f,I,o,l,h,g,a,_,b,j,F,D,M,ne,se,re,w,fe,le,$,s,te,ae,E,O,ie,i,we,Ne,de,Fe,Ae,We,Ie,ye,Ce,ve,ze,_e,Me,Te,Be,Se,De,Ee,ue,he,Re,be,Oe,je,He,Ye,Je,Pe,m,y,u]}class Cn extends x{constructor(e){super(),ee(this,e,yn,In,G,{value:0,label:3,show_label:4,source:5,tool:1,shape:6,streaming:7,pending:8,mirror_webcam:9,brush_radius:2},null,[-1,-1])}}function vn(t){let e,n,s,i,u,r,o;return s=new pe({props:{Icon:Jt,label:"Download"}}),{c(){e=q("div"),n=q("a"),T(s.$$.fragment),i=U(),u=q("img"),d(n,"href",t[0]),d(n,"target",window.__is_colab__?"_blank":null),d(n,"download","image"),d(e,"class","download svelte-kt1jzh"),Y(u.src,r=t[0])||d(u,"src",r),d(u,"alt",""),d(u,"class","svelte-kt1jzh")},m(l,h){C(l,e,h),H(e,n),B(s,n,null),C(l,i,h),C(l,u,h),o=!0},p(l,h){(!o||h&1)&&d(n,"href",l[0]),(!o||h&1&&!Y(u.src,r=l[0]))&&d(u,"src",r)},i(l){o||(p(s.$$.fragment,l),o=!0)},o(l){A(s.$$.fragment,l),o=!1},d(l){l&&v(e),S(s),l&&v(i),l&&v(u)}}}function zn(t){let e,n;return e=new Yt({props:{size:"large",unpadded_box:!0,$$slots:{default:[Mn]},$$scope:{ctx:t}}}),{c(){T(e.$$.fragment)},m(s,i){B(e,s,i),n=!0},p(s,i){const u={};i&16&&(u.$$scope={dirty:i,ctx:s}),e.$set(u)},i(s){n||(p(e.$$.fragment,s),n=!0)},o(s){A(e.$$.fragment,s),n=!1},d(s){S(e,s)}}}function Mn(t){let e,n;return e=new Ue({}),{c(){T(e.$$.fragment)},m(s,i){B(e,s,i),n=!0},i(s){n||(p(e.$$.fragment,s),n=!0)},o(s){A(e.$$.fragment,s),n=!1},d(s){S(e,s)}}}function Tn(t){let e,n,s,i,u,r;e=new wt({props:{show_label:t[2],Icon:Ue,label:t[1]||"Image"}});const o=[zn,vn],l=[];function h(f,g){return f[0]===null?0:1}return s=h(t),i=l[s]=o[s](t),{c(){T(e.$$.fragment),n=U(),i.c(),u=oe()},m(f,g){B(e,f,g),C(f,n,g),l[s].m(f,g),C(f,u,g),r=!0},p(f,[g]){const a={};g&4&&(a.show_label=f[2]),g&2&&(a.label=f[1]||"Image"),e.$set(a);let _=s;s=h(f),s===_?l[s].p(f,g):(Z(),A(l[_],1,1,()=>{l[_]=null}),K(),i=l[s],i?i.p(f,g):(i=l[s]=o[s](f),i.c()),p(i,1),i.m(u.parentNode,u))},i(f){r||(p(e.$$.fragment,f),p(i),r=!0)},o(f){A(e.$$.fragment,f),A(i),r=!1},d(f){S(e,f),f&&v(n),l[s].d(f),f&&v(u)}}}function Bn(t,e,n){let{value:s}=e,{label:i=void 0}=e,{show_label:u}=e;const r=me();return t.$$set=o=>{"value"in o&&n(0,s=o.value),"label"in o&&n(1,i=o.label),"show_label"in o&&n(2,u=o.show_label)},t.$$.update=()=>{t.$$.dirty&1&&s&&r("change",s)},[s,i,u]}class Sn extends x{constructor(e){super(),ee(this,e,Bn,Tn,G,{value:0,label:1,show_label:2})}}function Dn(t){let e,n,s;function i(r){t[17](r)}let u={brush_radius:t[14],shape:t[13],source:t[5],tool:t[6],label:t[7],show_label:t[8],pending:t[10],streaming:t[9],mirror_webcam:t[12],$$slots:{default:[Rn]},$$scope:{ctx:t}};return t[0]!==void 0&&(u.value=t[0]),e=new Cn({props:u}),R.push(()=>X(e,"value",i)),e.$on("edit",t[18]),e.$on("clear",t[19]),e.$on("change",t[20]),e.$on("stream",t[21]),e.$on("drag",t[22]),e.$on("upload",t[23]),e.$on("error",t[24]),{c(){T(e.$$.fragment)},m(r,o){B(e,r,o),s=!0},p(r,o){const l={};o&16384&&(l.brush_radius=r[14]),o&8192&&(l.shape=r[13]),o&32&&(l.source=r[5]),o&64&&(l.tool=r[6]),o&128&&(l.label=r[7]),o&256&&(l.show_label=r[8]),o&1024&&(l.pending=r[10]),o&512&&(l.streaming=r[9]),o&4096&&(l.mirror_webcam=r[12]),o&67108864&&(l.$$scope={dirty:o,ctx:r}),!n&&o&1&&(n=!0,l.value=r[0],V(()=>n=!1)),e.$set(l)},i(r){s||(p(e.$$.fragment,r),s=!0)},o(r){A(e.$$.fragment,r),s=!1},d(r){S(e,r)}}}function En(t){let e,n;return e=new Sn({props:{value:t[0],label:t[7],show_label:t[8]}}),{c(){T(e.$$.fragment)},m(s,i){B(e,s,i),n=!0},p(s,i){const u={};i&1&&(u.value=s[0]),i&128&&(u.label=s[7]),i&256&&(u.show_label=s[8]),e.$set(u)},i(s){n||(p(e.$$.fragment,s),n=!0)},o(s){A(e.$$.fragment,s),n=!1},d(s){S(e,s)}}}function Rn(t){let e,n;return e=new Pt({props:{type:"image"}}),{c(){T(e.$$.fragment)},m(s,i){B(e,s,i),n=!0},p:W,i(s){n||(p(e.$$.fragment,s),n=!0)},o(s){A(e.$$.fragment,s),n=!1},d(s){S(e,s)}}}function jn(t){let e,n,s,i,u,r;const o=[t[1]];let l={};for(let a=0;a{f[I]=null}),K(),i=f[s],i?i.p(a,_):(i=f[s]=h[s](a),i.c()),p(i,1),i.m(u.parentNode,u))},i(a){r||(p(e.$$.fragment,a),p(i),r=!0)},o(a){A(e.$$.fragment,a),A(i),r=!1},d(a){S(e,a),a&&v(n),f[s].d(a),a&&v(u)}}}function Ln(t){let e,n;return e=new Ut({props:{visible:t[4],variant:t[15]==="dynamic"&&t[0]===null&&t[5]==="upload"?"dashed":"solid",border_mode:t[16]?"focus":"base",padding:!1,elem_id:t[2],elem_classes:t[3],style:{height:t[11].height,width:t[11].width},allow_overflow:!1,$$slots:{default:[jn]},$$scope:{ctx:t}}}),{c(){T(e.$$.fragment)},m(s,i){B(e,s,i),n=!0},p(s,[i]){const u={};i&16&&(u.visible=s[4]),i&32801&&(u.variant=s[15]==="dynamic"&&s[0]===null&&s[5]==="upload"?"dashed":"solid"),i&65536&&(u.border_mode=s[16]?"focus":"base"),i&4&&(u.elem_id=s[2]),i&8&&(u.elem_classes=s[3]),i&2048&&(u.style={height:s[11].height,width:s[11].width}),i&67237859&&(u.$$scope={dirty:i,ctx:s}),e.$set(u)},i(s){n||(p(e.$$.fragment,s),n=!0)},o(s){A(e.$$.fragment,s),n=!1},d(s){S(e,s)}}}function Un(t,e,n){let{elem_id:s=""}=e,{elem_classes:i=[]}=e,{visible:u=!0}=e,{value:r=null}=e,{source:o="upload"}=e,{tool:l="editor"}=e,{label:h}=e,{show_label:f}=e,{streaming:g}=e,{pending:a}=e,{style:_={}}=e,{mirror_webcam:b}=e,{shape:I}=e,{brush_radius:M}=e,{loading_status:j}=e,{mode:te}=e;const ae=me();let E;function k(w){r=w,n(0,r)}function F(w){ce.call(this,t,w)}function O(w){ce.call(this,t,w)}function ie(w){ce.call(this,t,w)}function ne(w){ce.call(this,t,w)}const se=({detail:w})=>n(16,E=w);function re(w){ce.call(this,t,w)}const D=({detail:w})=>{n(1,j=j||{}),n(1,j.status="error",j),n(1,j.message=w,j)};return t.$$set=w=>{"elem_id"in w&&n(2,s=w.elem_id),"elem_classes"in w&&n(3,i=w.elem_classes),"visible"in w&&n(4,u=w.visible),"value"in w&&n(0,r=w.value),"source"in w&&n(5,o=w.source),"tool"in w&&n(6,l=w.tool),"label"in w&&n(7,h=w.label),"show_label"in w&&n(8,f=w.show_label),"streaming"in w&&n(9,g=w.streaming),"pending"in w&&n(10,a=w.pending),"style"in w&&n(11,_=w.style),"mirror_webcam"in w&&n(12,b=w.mirror_webcam),"shape"in w&&n(13,I=w.shape),"brush_radius"in w&&n(14,M=w.brush_radius),"loading_status"in w&&n(1,j=w.loading_status),"mode"in w&&n(15,te=w.mode)},t.$$.update=()=>{t.$$.dirty&1&&n(0,r=r||null),t.$$.dirty&1&&ae("change")},[r,j,s,i,u,o,l,h,f,g,a,_,b,I,M,te,E,k,F,O,ie,ne,se,re,D]}class qn extends x{constructor(e){super(),ee(this,e,Un,Ln,G,{elem_id:2,elem_classes:3,visible:4,value:0,source:5,tool:6,label:7,show_label:8,streaming:9,pending:10,style:11,mirror_webcam:12,shape:13,brush_radius:14,loading_status:1,mode:15})}}var Kn=qn;const $n=["static","dynamic"],xn=t=>({type:{payload:"string"},description:{payload:"image data as base64 string"},example_data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=="});export{Kn as Component,ns as ExampleComponent,xn as document,$n as modes}; +//# sourceMappingURL=index.148fc4b9.js.map diff --git a/gradio/templates/frontend/assets/index.148fc4b9.js.map b/gradio/templates/frontend/assets/index.148fc4b9.js.map new file mode 100644 index 0000000000000000000000000000000000000000..4404ee62503353ff44074417b29eb6552dbb3ede --- /dev/null +++ b/gradio/templates/frontend/assets/index.148fc4b9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.148fc4b9.js","sources":["../../../../ui/packages/icons/src/Brush.svelte","../../../../ui/packages/icons/src/Color.svelte","../../../../ui/packages/icons/src/Sketch.svelte","../../../../ui/packages/image/src/Cropper.svelte","../../../../ui/node_modules/.pnpm/lazy-brush@1.0.1/node_modules/lazy-brush/src/Point.js","../../../../ui/node_modules/.pnpm/lazy-brush@1.0.1/node_modules/lazy-brush/src/LazyPoint.js","../../../../ui/node_modules/.pnpm/lazy-brush@1.0.1/node_modules/lazy-brush/src/LazyBrush.js","../../../../ui/packages/image/src/Sketch.svelte","../../../../ui/packages/image/src/ModifySketch.svelte","../../../../ui/packages/image/src/SketchSettings.svelte","../../../../ui/packages/image/src/Image.svelte","../../../../ui/packages/image/src/StaticImage.svelte","../../../../ui/packages/app/src/components/Image/Image.svelte","../../../../ui/packages/app/src/components/Image/index.ts"],"sourcesContent":["\n\t\n\t\n\n","\n\t\n\t\n\t\n\t\n\t\n\t\n\n","\n\t\n\n","\n\n\n\n\"\"\n","class Point {\n /**\n *\n * @param {number} x\n * @param {number} y\n */\n constructor(x, y) {\n this.x = x\n this.y = y\n }\n}\n\nexport default Point\n","import Point from './Point'\n\nclass LazyPoint extends Point {\n /**\n * Update the x and y values\n *\n * @param {Point} point\n */\n update (point) {\n this.x = point.x\n this.y = point.y\n }\n\n /**\n * Move the point to another position using an angle and distance\n *\n * @param {number} angle The angle in radians\n * @param {number} distance How much the point should be moved\n */\n moveByAngle (angle, distance) {\n // Rotate the angle based on the browser coordinate system ([0,0] in the top left)\n const angleRotated = angle + (Math.PI / 2)\n\n this.x = this.x + (Math.sin(angleRotated) * distance),\n this.y = this.y - (Math.cos(angleRotated) * distance)\n }\n\n /**\n * Check if this point is the same as another point\n *\n * @param {Point} point\n * @returns {boolean}\n */\n equalsTo (point) {\n return this.x === point.x && this.y === point.y\n }\n\n /**\n * Get the difference for x and y axis to another point\n *\n * @param {Point} point\n * @returns {Point}\n */\n getDifferenceTo (point) {\n return new Point(this.x - point.x, this.y - point.y)\n }\n\n /**\n * Calculate distance to another point\n *\n * @param {Point} point\n * @returns {Point}\n */\n getDistanceTo (point) {\n const diff = this.getDifferenceTo(point)\n\n return Math.sqrt(Math.pow(diff.x, 2) + Math.pow(diff.y, 2))\n }\n\n /**\n * Calculate the angle to another point\n *\n * @param {Point} point\n * @returns {Point}\n */\n getAngleTo (point) {\n const diff = this.getDifferenceTo(point)\n\n return Math.atan2(diff.y, diff.x)\n }\n\n /**\n * Return a simple object with x and y properties\n *\n * @returns {object}\n */\n toObject () {\n return {\n x: this.x,\n y: this.y\n }\n }\n}\n\nexport default LazyPoint\n","import LazyPoint from './LazyPoint'\nconst RADIUS_DEFAULT = 30\n\nclass LazyBrush {\n /**\n * constructor\n *\n * @param {object} settings\n * @param {number} settings.radius The radius for the lazy area\n * @param {boolean} settings.enabled\n */\n constructor ({ radius = RADIUS_DEFAULT, enabled = true, initialPoint = { x: 0, y: 0 }} = {}) {\n this.radius = radius\n this._isEnabled = enabled\n\n this.pointer = new LazyPoint(initialPoint.x, initialPoint.y)\n this.brush = new LazyPoint(initialPoint.x, initialPoint.y)\n\n this.angle = 0\n this.distance = 0\n this._hasMoved = false\n }\n\n /**\n * Enable lazy brush calculations.\n *\n */\n enable () {\n this._isEnabled = true\n }\n\n /**\n * Disable lazy brush calculations.\n *\n */\n disable () {\n this._isEnabled = false\n }\n\n /**\n * @returns {boolean}\n */\n isEnabled () {\n return this._isEnabled\n }\n\n /**\n * Update the radius\n *\n * @param {number} radius\n */\n setRadius (radius) {\n this.radius = radius\n }\n\n /**\n * Return the current radius\n *\n * @returns {number}\n */\n getRadius () {\n return this.radius\n }\n\n /**\n * Return the brush coordinates as a simple object\n *\n * @returns {object}\n */\n getBrushCoordinates () {\n return this.brush.toObject()\n }\n\n /**\n * Return the pointer coordinates as a simple object\n *\n * @returns {object}\n */\n getPointerCoordinates () {\n return this.pointer.toObject()\n }\n\n /**\n * Return the brush as a LazyPoint\n *\n * @returns {LazyPoint}\n */\n getBrush () {\n return this.brush\n }\n\n /**\n * Return the pointer as a LazyPoint\n *\n * @returns {LazyPoint}\n */\n getPointer () {\n return this.pointer\n }\n\n /**\n * Return the angle between pointer and brush\n *\n * @returns {number} Angle in radians\n */\n getAngle () {\n return this.angle\n }\n\n /**\n * Return the distance between pointer and brush\n *\n * @returns {number} Distance in pixels\n */\n getDistance () {\n return this.distance\n }\n\n /**\n * Return if the previous update has moved the brush.\n *\n * @returns {boolean} Whether the brush moved previously.\n */\n brushHasMoved () {\n return this._hasMoved\n }\n\n /**\n * Updates the pointer point and calculates the new brush point.\n *\n * @param {Point} newPointerPoint\n * @param {Object} options\n * @param {Boolean} options.both Force update pointer and brush\n * @returns {Boolean} Whether any of the two points changed\n */\n update (newPointerPoint, { both = false } = {}) {\n this._hasMoved = false\n if (this.pointer.equalsTo(newPointerPoint) && !both) {\n return false\n }\n\n this.pointer.update(newPointerPoint)\n\n if (both) {\n this._hasMoved = true\n this.brush.update(newPointerPoint)\n return true\n }\n\n if (this._isEnabled) {\n this.distance = this.pointer.getDistanceTo(this.brush)\n this.angle = this.pointer.getAngleTo(this.brush)\n\n if (this.distance > this.radius) {\n this.brush.moveByAngle(this.angle, this.distance - this.radius)\n this._hasMoved = true\n }\n } else {\n this.distance = 0\n this.angle = 0\n this.brush.update(newPointerPoint)\n this._hasMoved = true\n }\n\n return true\n }\n}\n\nexport default LazyBrush\n\n","\n\n\n\t{#if line_count === 0}\n\t\t
\n\t\t\tStart drawing\n\t\t
\n\t{/if}\n\t{#each canvas_types as { name, zIndex }}\n\t\t\n\t{/each}\n\n\n\n","\n\n
\n\t dispatch(\"undo\")} />\n\t {\n\t\t\tdispatch(\"clear\");\n\t\t\tevent.stopPropagation();\n\t\t}}\n\t/>\n
\n\n\n","\n\n
\n\t\n\t\t (show_size = !show_size)}\n\t\t/>\n\t\t{#if show_size}\n\t\t\t\n\t\t{/if}\n\t\n\n\t{#if mode !== \"mask\"}\n\t\t\n\t\t\t (show_col = !show_col)}\n\t\t\t/>\n\t\t\t{#if show_col}\n\t\t\t\t\n\t\t\t{/if}\n\t\t\n\t{/if}\n
\n\n\n","\n\n\n\n\n\t{#if source === \"upload\"}\n\t\t\n\t\t\t{#if (value === null && !static_image) || streaming}\n\t\t\t\t\n\t\t\t{:else if tool === \"select\"}\n\t\t\t\t\n\t\t\t\t (handle_clear(e), (tool = \"editor\"))} />\n\t\t\t{:else if tool === \"editor\"}\n\t\t\t\t (tool = \"select\")}\n\t\t\t\t\ton:clear={handle_clear}\n\t\t\t\t\teditable\n\t\t\t\t/>\n\n\t\t\t\t\n\t\t\t{:else if (tool === \"sketch\" || tool === \"color-sketch\") && (value !== null || static_image)}\n\t\t\t\t{#key static_image}\n\t\t\t\t\t\n\t\t\t\t{/key}\n\t\t\t\t{#if img_width > 0}\n\t\t\t\t\t\n\t\t\t\t\t sketch.undo()}\n\t\t\t\t\t\ton:clear={handle_sketch_clear}\n\t\t\t\t\t/>\n\t\t\t\t\t{#if tool === \"color-sketch\" || tool === \"sketch\"}\n\t\t\t\t\t\t\n\t\t\t\t\t{/if}\n\t\t\t\t{/if}\n\t\t\t{:else}\n\t\t\t\t\n\t\t\t{/if}\n\t\t\n\t{:else if source === \"canvas\"}\n\t\t sketch.undo()}\n\t\t\ton:clear={handle_sketch_clear}\n\t\t/>\n\t\t{#if tool === \"color-sketch\"}\n\t\t\t\n\t\t{/if}\n\t\t\n\t{:else if (value === null && !static_image) || streaming}\n\t\t{#if source === \"webcam\" && !static_image}\n\t\t\t\n\t\t\t\t\ttool === \"color-sketch\" ? handle_upload(e) : handle_save(e, true)}\n\t\t\t\ton:stream={handle_save}\n\t\t\t\ton:error\n\t\t\t\t{streaming}\n\t\t\t\t{pending}\n\t\t\t\t{mirror_webcam}\n\t\t\t/>\n\t\t{/if}\n\t{:else if tool === \"select\"}\n\t\t\n\t\t (handle_clear(e), (tool = \"editor\"))} />\n\t{:else if tool === \"editor\"}\n\t\t (tool = \"select\")}\n\t\t\ton:clear={handle_clear}\n\t\t\teditable\n\t\t/>\n\n\t\t\n\t{:else if (tool === \"sketch\" || tool === \"color-sketch\") && (value !== null || static_image)}\n\t\t{#key static_image}\n\t\t\t\n\t\t{/key}\n\t\t{#if img_width > 0}\n\t\t\t\n\t\t\t sketch.undo()}\n\t\t\t\ton:clear={handle_sketch_clear}\n\t\t\t/>\n\t\t\t{#if tool === \"color-sketch\" || tool === \"sketch\"}\n\t\t\t\t\n\t\t\t{/if}\n\t\t{/if}\n\t{:else}\n\t\t\n\t{/if}\n\n\n\n","\n\n\n{#if value === null}\n\t\n{:else}\n\t
\n\t\t\n\t\t\t\n\t\t\n\t
\n\t\"\"\n{/if}\n\n\n","\n\n\n\t\n\t{#if mode === \"static\"}\n\t\t\n\t{:else}\n\t\t (dragging = detail)}\n\t\t\ton:upload\n\t\t\ton:error={({ detail }) => {\n\t\t\t\tloading_status = loading_status || {};\n\t\t\t\tloading_status.status = \"error\";\n\t\t\t\tloading_status.message = detail;\n\t\t\t}}\n\t\t\t{label}\n\t\t\t{show_label}\n\t\t\t{pending}\n\t\t\t{streaming}\n\t\t\t{mirror_webcam}\n\t\t>\n\t\t\t\n\t\t\n\t{/if}\n\n","export { default as Component } from \"./Image.svelte\";\nexport { default as ExampleComponent } from \"../Dataset/ExampleComponents/Image.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"string\"\n\t},\n\tdescription: {\n\t\tpayload: \"image data as base64 string\"\n\t},\n\texample_data:\n\t\t\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==\"\n});\n"],"names":["ResizeObserver","SketchIcon"],"mappings":"o/DAAA,SACC,OAIA,shCCLD,SACC,OACA,OACA,OACA,OACA,OACA,qgBCND,SAYC,6JCoBS,0CAAV,2CAAU,8EA1BE,WACP,OAEE,GAAW,QACb,gBAGH,EAAQ,uBAIJ,GACH,IAED,KAAc,IAAQ,GACrB,aAAc,EACd,eACO,GAAa,EAAQ,mBAAmB,YAC9C,EAAS,OAAQ,CAAU,KAI7B,EAAS,OAAQ,CAAK,2CAII,qTChC5B,MAAM,EAAM,CAMV,YAAY,EAAG,EAAG,CAChB,KAAK,EAAI,EACT,KAAK,EAAI,EAEb,CCRA,MAAM,UAAkB,GAAM,CAM5B,OAAQ,EAAO,CACb,KAAK,EAAI,EAAM,EACf,KAAK,EAAI,EAAM,EASjB,YAAa,EAAO,EAAU,CAE5B,KAAM,GAAe,EAAS,KAAK,GAAK,EAExC,KAAK,EAAI,KAAK,EAAK,KAAK,IAAI,CAAY,EAAI,EAC5C,KAAK,EAAI,KAAK,EAAK,KAAK,IAAI,CAAY,EAAI,EAS9C,SAAU,EAAO,CACf,MAAO,MAAK,IAAM,EAAM,GAAK,KAAK,IAAM,EAAM,EAShD,gBAAiB,EAAO,CACtB,MAAO,IAAI,IAAM,KAAK,EAAI,EAAM,EAAG,KAAK,EAAI,EAAM,CAAC,EASrD,cAAe,EAAO,CACpB,KAAM,GAAO,KAAK,gBAAgB,CAAK,EAEvC,MAAO,MAAK,KAAK,KAAK,IAAI,EAAK,EAAG,CAAC,EAAI,KAAK,IAAI,EAAK,EAAG,CAAC,CAAC,EAS5D,WAAY,EAAO,CACjB,KAAM,GAAO,KAAK,gBAAgB,CAAK,EAEvC,MAAO,MAAK,MAAM,EAAK,EAAG,EAAK,CAAC,EAQlC,UAAY,CACV,MAAO,CACL,EAAG,KAAK,EACR,EAAG,KAAK,GAGd,CCjFA,KAAM,IAAiB,GAEvB,MAAM,EAAU,CAQd,YAAa,CAAE,SAAS,GAAgB,UAAU,GAAM,eAAe,CAAE,EAAG,EAAG,EAAG,IAAO,GAAI,CAC3F,KAAK,OAAS,EACd,KAAK,WAAa,EAElB,KAAK,QAAU,GAAI,IAAU,EAAa,EAAG,EAAa,CAAC,EAC3D,KAAK,MAAQ,GAAI,IAAU,EAAa,EAAG,EAAa,CAAC,EAEzD,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,UAAY,GAOnB,QAAU,CACR,KAAK,WAAa,GAOpB,SAAW,CACT,KAAK,WAAa,GAMpB,WAAa,CACX,MAAO,MAAK,WAQd,UAAW,EAAQ,CACjB,KAAK,OAAS,EAQhB,WAAa,CACX,MAAO,MAAK,OAQd,qBAAuB,CACrB,MAAO,MAAK,MAAM,WAQpB,uBAAyB,CACvB,MAAO,MAAK,QAAQ,WAQtB,UAAY,CACV,MAAO,MAAK,MAQd,YAAc,CACZ,MAAO,MAAK,QAQd,UAAY,CACV,MAAO,MAAK,MAQd,aAAe,CACb,MAAO,MAAK,SAQd,eAAiB,CACf,MAAO,MAAK,UAWd,OAAQ,EAAiB,CAAE,OAAO,IAAU,GAAI,CAE9C,MADA,MAAK,UAAY,GACb,KAAK,QAAQ,SAAS,CAAe,GAAK,CAAC,EACtC,GAGT,MAAK,QAAQ,OAAO,CAAe,EAE/B,EACF,MAAK,UAAY,GACjB,KAAK,MAAM,OAAO,CAAe,EAC1B,IAGT,CAAI,KAAK,WACP,MAAK,SAAW,KAAK,QAAQ,cAAc,KAAK,KAAK,EACrD,KAAK,MAAQ,KAAK,QAAQ,WAAW,KAAK,KAAK,EAE3C,KAAK,SAAW,KAAK,QACvB,MAAK,MAAM,YAAY,KAAK,MAAO,KAAK,SAAW,KAAK,MAAM,EAC9D,KAAK,UAAY,KAGnB,MAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,MAAM,OAAO,CAAe,EACjC,KAAK,UAAY,IAGZ,KAEX,gOCyaE,+CAAwB,SAAU,+CAAV,SAAU,wKAM5B,sBACY,6CACP,gBACC,cAJZ,oCAMe,QAAS,YAAc,KAAoB,MAAS,kBACpD,QAAS,YAAc,KAAmB,MAAS,gBACrD,QAAS,YAAc,KAAkB,MAAS,iBACjD,QAAS,YAAc,KAAkB,MAAS,aACtD,QAAS,YAAc,KAAkB,MAAS,mBAC5C,QAAS,YAAc,KAAoB,MAAS,kBACrD,QAAS,YAAc,KAAmB,MAAS,iBACpD,QAAS,YAAc,KAAkB,MAAS,oBAC/C,QAAS,YAAc,KAAkB,MAAS,2FAXxD,yBACC,kEAVR,OAAe,UAKb,0BAAL,yKAXH,yHAMM,OAAe,kGAKb,uBAAL,+HAAA,iGApjBE,IAAiB,mBAkCF,EAAI,UAErB,EAAG,EAAG,EAAK,GAAG,EAAI,EAAG,GAAK,EAC1B,EAAG,EAAG,EAAK,GAAG,EAAI,EAAG,GAAK,iCA5DtB,GAAW,SAEN,YACA,gBACA,OAAO,aACP,cAAc,cACd,mBACA,aAEA,QAAQ,QACR,SAAS,QACT,mBAAmB,QACnB,WASP,EAIA,EAAe,EACf,EAAgB,EAIhB,QAkCE,MAEJ,KAAM,YACN,OAAQ,KAGR,KAAM,UACN,OAAQ,KAGR,KAAM,OACN,OAAQ,KAGR,KAAM,OACN,YAGA,KAAM,YACN,eAIE,MACA,KACA,KACA,KACA,GAAkB,GAClB,GAAiB,GACjB,GAAa,GACb,GAAc,GACd,EAAO,KACP,EAAmB,KACnB,GAAkB,KAClB,GAAa,mBAGX,GACJ,EAAI,KAAK,UAAU,EAAW,EAAG,EAAG,EAAO,CAAM,YAI9C,GAAS,EAAU,aACnB,EAAU,EAAU,mBAElB,GAAc,EAAM,GAAK,EAAM,GAC/B,EAAc,EAAS,KAEzB,GAAI,EACJ,EAAI,EAEJ,EAAc,EACjB,GAAS,EAAM,GAAK,EACpB,EAAU,EAAM,GAChB,EAAK,GAAM,GAAK,GAAU,GAChB,EAAc,EACxB,GAAS,EAAM,GACf,EAAU,EAAM,GAAK,EACrB,EAAK,GAAM,GAAK,GAAW,GAE3B,GAAI,EACJ,EAAI,EACJ,EAAS,EAAM,GACf,EAAU,EAAM,IAGjB,EAAI,KAAK,UAAU,EAAW,EAAG,EAAG,EAAQ,CAAO,EAGpD,aACC,OAAO,KAAK,CAAM,EAAE,QAAS,SAC5B,EAAI,GAAO,EAAO,GAAK,WAAW,IAAI,YAGjC,MAEF,GACH,GAAU,iBAAiB,OAAS,IAC/B,IAAW,SACd,GAAI,KAAK,OACT,EAAI,KAAK,UAAU,EAAO,CAAC,EAC3B,EAAI,KAAK,SAAU,CAAC,EACpB,EAAI,KAAK,UAAU,EAAW,EAAG,CAAC,EAClC,EAAI,KAAK,WAET,IAED,EAAI,QAAQ,UAAU,EAAO,KAAM,EAAG,EAAG,EAAO,CAAM,EAEtD,OAGD,gBACK,IAAW,SACd,GAAI,KAAK,OACT,EAAI,KAAK,UAAU,EAAO,CAAC,EAC3B,EAAI,KAAK,SAAU,CAAC,EACpB,EAAI,KAAK,UAAU,EAAW,EAAG,CAAC,EAClC,EAAI,KAAK,WAET,IAGD,EAAI,QAAQ,UAAU,EAAO,KAAM,EAAG,EAAG,EAAO,CAAM,EAEtD,IAAa,MAAO,EAAM,UAC1B,MACE,WAGJ,KAAW,KACV,OAAQ,EAAe,IACvB,QAAS,GACT,cACC,EAAG,EAAQ,EACX,EAAG,EAAS,MAId,MAAsBA,KAAgB,EAAS,KAAa,KAC3D,GAAqB,EAAS,CAAQ,IAEvC,GAAgB,QAAQ,CAAgB,EAExC,UACA,EAAU,EAAI,EAEd,2BACC,KACA,2BACC,8BAMI,GAAQ,EAAQ,EAChB,EAAQ,EAAS,EACvB,EAAK,QAAS,EAAG,EAAO,IAAc,KAAM,KAC5C,EAAK,QAAS,EAAG,EAAO,IAAc,KAAM,KAC5C,GAAkB,GAClB,GAAiB,GAGlB,aACC,EAAU,EAAK,EACf,GAAgB,UAAU,CAAgB,uBAIpC,GAAS,EAAM,MAAM,IAAK,EAEhC,KAEI,IACC,IAAW,SACd,GAAI,KAAK,OACT,EAAI,KAAK,UAAU,EAAO,CAAC,EAC3B,EAAI,KAAK,SAAU,CAAC,EACpB,EAAI,KAAK,UAAU,EAAW,EAAG,CAAC,EAClC,EAAI,KAAK,WAET,MAGI,IAAU,EAAM,SACpB,EAAI,QAAQ,UAAU,EAAO,KAAM,EAAG,EAAG,EAAO,CAAM,GAIxD,IAAa,MAAO,QACpB,GAAa,EAAO,MAAM,EAEtB,EAAM,aACT,EAAQ,CAAM,EAGX,EAAM,QAAU,GACnB,EAAS,OAAO,EAEjB,QAWG,MAAgB,YACnB,EAAM,QAAS,UACN,OAAQ,EAAS,cAAa,gBAAiB,EACvD,IACC,OAAQ,EACR,cACA,iBAGG,IAAS,QACZ,IACC,OAAQ,EACR,cACA,iBAIF,EAAS,IAIV,IAAW,cAAa,iBACpB,IAAS,QACZ,MAIE,GAAqB,IACxB,EAAE,iBACF,GAAc,SACN,IAAG,KAAM,GAAgB,CAAC,EAC9B,EAAE,SAAW,EAAE,QAAQ,OAAS,GACnC,EAAK,QAAS,IAAG,MAAO,KAAM,KAE/B,GAAoB,EAAG,CAAC,MACxB,IAAc,CAAC,GAGZ,GAAoB,IACvB,EAAE,uBACM,IAAG,KAAM,GAAgB,CAAC,EAClC,GAAoB,EAAG,CAAC,GAGrB,GAAmB,IACtB,EAAE,iBACF,GAAiB,CAAC,EAClB,GAAa,GACb,GAAc,GACd,KAEI,IAAS,QACZ,MAIE,GAAY,EACZ,GAAa,EACb,GAAuB,EACvB,GAAgB,GAEhB,gBACC,GAAS,QACN,GAAI,GAAkB,wBACtB,EAAc,EAAM,GAAK,EAAM,GAC/B,EAAkB,EAAE,MAAQ,EAAE,WACpC,GAAgB,EAAc,CAAe,KAI7C,IAAU,IACV,IAAW,IACX,KAAyB,cAIpB,IAAsB,QAAe,UAErC,GACL,OAAQ,EACR,MAAO,EAAoB,GAAW,MAAQ,EAAW,cAGpD,SAAQ,KACb,GAAgB,EAAO,UAAW,EAAY,CAAoB,EAClE,GAAgB,EAAO,QAAS,EAAY,CAAoB,EAChE,GAAgB,EAAO,KAAM,EAAY,CAAoB,EAC7D,GAAgB,EAAO,UAAW,EAAY,CAAoB,EAClE,GAAgB,EAAO,KAAM,EAAY,EAAsB,EAAK,IAGhE,QACJ,EAAe,GAAM,GAAW,MAAQ,EAAqB,QAG9D,IAAO,KAAM,KAEb,gBACC,GAAa,EACb,GAAY,EACZ,GAAuB,GACrB,SACG,MAEN,MAgBG,SAAyB,EAAQ,EAAY,EAAW,EAAQ,UAC9D,cACC,WAEA,GAAM,OAAO,kBAAoB,EACvC,EAAO,MAAQ,EAAW,MAAS,GAAQ,EAAM,GACjD,EAAO,OAAS,EAAW,OAAU,GAAQ,EAAM,QAE7C,GAAM,EAAO,WAAW,IAAI,EAClC,GAAS,EAAI,MAAM,EAAK,CAAG,EAE3B,EAAO,MAAM,SAAW,EAAU,UAClC,EAAO,MAAM,UAAY,EAAU,YAGhC,GAAmB,SAChB,GAAO,EAAO,UAAU,2BAE1B,GAAU,EAAE,QACZ,EAAU,EAAE,cACZ,GAAE,gBAAkB,EAAE,eAAe,OAAS,GACjD,GAAU,EAAE,eAAe,GAAG,QAC9B,EAAU,EAAE,eAAe,GAAG,UAI9B,EAAK,GAAU,EAAK,MAAQ,EAAK,MAAS,EAC1C,EAAK,GAAU,EAAK,KAAO,EAAK,OAAU,IAIxC,IAAuB,EAAG,KAC7B,EAAK,QAAY,IAAM,SACjB,IAAe,EAAK,YACrB,MAAgB,IAAgB,GAAe,KACnD,IAAa,GACb,EAAO,KAAK,EAAK,MAAM,aAEpB,IACH,GAAO,KAAK,EAAK,MAAM,YACvB,IACS,SACR,cACA,iBAGG,IAAS,QACZ,IACS,SACR,cACA,kBAIH,GAAkB,IAGf,KAAiB,SAAQ,cAAa,uBACpC,GAAU,EAAO,OAAS,SAC/B,EAAI,KAAK,SAAW,gBACpB,EAAI,KAAK,QAAU,gBAEnB,EAAI,KAAK,YAAc,UACvB,EAAI,KAAK,UAAY,MAChB,GAAU,EAAO,OAAS,aAC3B,GAAK,EAAO,GACZ,EAAK,EAAO,GAChB,EAAI,KAAK,OAAO,EAAG,EAAG,EAAG,CAAC,EAC1B,EAAI,KAAK,mBACA,GAAI,EAAG,GAAM,EAAO,OAAQ,EAAI,GAAK,QACzC,IAAW,GAAU,EAAI,CAAE,EAC/B,EAAI,KAAK,iBAAiB,EAAG,EAAG,EAAG,EAAG,GAAS,EAAG,GAAS,CAAC,EAC5D,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAGjB,EAAI,KAAK,OAAO,EAAG,EAAG,EAAG,CAAC,EAC1B,EAAI,KAAK,UAGN,KAAsB,SAAQ,cAAa,uBACzC,GAAU,EAAO,OAAS,cAE/B,EAAI,UAAU,SAAW,gBACzB,EAAI,UAAU,QAAU,gBACxB,EAAI,UAAU,YAAc,eAC5B,EAAI,UAAU,UAAY,QACtB,GAAK,EAAO,GACZ,EAAK,EAAO,GAChB,EAAI,UAAU,OAAO,EAAG,EAAG,EAAG,CAAC,EAC/B,EAAI,UAAU,mBACL,GAAI,EAAG,GAAM,EAAO,OAAQ,EAAI,GAAK,QACzC,IAAW,GAAU,EAAI,CAAE,EAC/B,EAAI,UAAU,iBAAiB,EAAG,EAAG,EAAG,EAAG,GAAS,EAAG,GAAS,CAAC,EACjE,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAGjB,EAAI,UAAU,OAAO,EAAG,EAAG,EAAG,CAAC,EAC/B,EAAI,UAAU,UAGX,QACC,EAAO,OAAS,GACpB,GAAO,OAAS,EAChB,EAAI,KAAK,UAAU,EAAO,UAAW,EAAG,EAAG,EAAO,CAAM,EAExD,OAGG,QACC,EAAO,OAAS,GAEpB,GAAM,MACL,OAAQ,EAAO,QACF,cACb,iBAGG,IAAS,QACZ,GAAO,OAAS,GAGjB,EAAI,QAAQ,UAAU,EAAO,KAAM,EAAG,EAAG,EAAO,CAAM,EAEtD,OAGG,aACG,GAAI,KACV,EAAS,SAAU,CAAC,6BAIpB,MACA,SACA,GAAa,CAAC,EAEP,iBAIP,GAAiB,GACjB,EAAI,KAAK,UAAU,EAAG,EAAG,EAAO,CAAM,OAEtC,EAAI,KAAK,UAAY,IAAS,OAAS,cAAgB,aACvD,EAAI,KAAK,SAAS,EAAG,EAAG,EAAO,CAAM,EAEjC,IAAS,QACZ,GAAI,UAAU,UACb,EACA,EACA,EAAO,UAAU,MACjB,EAAO,UAAU,MAAA,EAElB,EAAI,KAAK,UAAU,EAAG,EAAG,EAAO,CAAM,OACtC,EAAI,KAAK,UAAY,UACrB,EAAI,KAAK,SAAS,EAAG,EAAG,EAAO,CAAM,MAInC,MAAU,OAAO,aAChB,IAAmB,SAChB,GAAU,EAAK,wBACf,EAAQ,EAAK,sBACnB,GAAe,EAAI,UAAW,EAAS,CAAK,EAC5C,GAAkB,GAClB,GAAiB,GAEb,GACJ,OAAO,2BACN,QAOC,IAAkB,EAAK,EAAS,KACnC,EAAI,UAAU,EAAG,EAAG,EAAO,CAAM,EAGjC,EAAI,YACJ,EAAI,UAAY,EAChB,EAAI,IAAI,EAAM,EAAG,EAAM,EAAG,EAAe,EAAG,EAAG,KAAK,GAAK,EAAG,EAAI,EAChE,EAAI,OAGJ,EAAI,YACJ,EAAI,UAAY,GAChB,EAAI,IAAI,EAAM,EAAG,EAAM,EAAG,EAAW,EAAG,KAAK,GAAK,EAAG,EAAI,EACzD,EAAI,4BAIG,KAAS,OACb,EAAO,KAAK,UAAU,WAAW,EACjC,EAAO,QAAQ,UAAU,WAAW,+EAqB3B,EAAO,wDAfT,2BACO,mBACC,ybArjBd,GAAU,IAAS,UACtB,EAAQ,EAAM,SACd,EAAS,EAAM,4BAWd,IAAY,GAAS,8BAKnB,GAAW,IAAc,UAC5B,GAAiB,CAAS,EAE1B,KAEA,gBACK,IAAW,SACd,GAAI,KAAK,OACT,EAAI,KAAK,UAAU,EAAO,CAAC,EAC3B,EAAI,KAAK,SAAU,CAAC,EACpB,EAAI,KAAK,UAAU,EAAW,EAAG,CAAC,EAClC,EAAI,KAAK,WAET,IAGD,EAAI,QAAQ,UAAU,EAAO,KAAM,EAAG,EAAG,EAAO,CAAM,EAEtD,IAAa,MAAO,EAAM,UAC1B,MACE,8BAsTA,GACH,MACA,EAAK,UAAU,EAAe,GAAI,uBAK/B,IAAS,IACZ,yBAoLC,GAAY,EAAe,4eCtiBZ,6DAEX,qIAHR,sMAHO,GAAW,kBAIoC,EAAS,MAAM,EAIxD,IACV,EAAS,OAAO,EAChB,EAAM,2MCiBA,GAAO,MAAY,mBACnB,GAAM,MAAY,4CALxB,cAEa,gFAEP,GAAO,MAAY,kCACnB,GAAM,MAAY,+BAHX,kFAWN,4DAIF,4GANN,wDAMM,wSACJ,cAA4C,uDAAA,oFAvBvC,kDAIF,cAWD,OAAS,4KAlBf,SACC,8EAMM,+DAWD,OAAS,iPAjCG,QAEb,GAAY,GACZ,EAAW,IAEJ,eAAe,OACf,cAAc,WACd,uBACA,gBACA,iBACA,OAAyB,2BAUjB,GAAa,CAAS,eAK1B,wCAaK,GAAY,CAAQ,eAGO,qTA7B5C,EAAQ,EAAoB,GAAY,wOCgVpC,KAAM,OAAS,4EAEN,OAAW,UAAY,cAHtC,oCACM,KAAM,OAAS,2CAEN,OAAW,UAAY,mDA3ChC,sBAUD,MAAY,gIAVX,2DAUD,MAAY,oSApBN,wDAKL,4EAES,OAAW,UAAY,gCAHtC,8CACM,4CAES,OAAW,UAAY,0IAZF,uDAAgB,kKAAhB,0LAZ/B,OAAW,WAAa,kFAAxB,OAAW,WAAa,qQAzBlB,aAEN,OAAS,uGAiBN,OAAa,aACZ,OAAc,uBACJ,OAAoB,mNAL3B,qBACD,wIAfN,OAAS,2MAiBN,OAAa,8BACZ,OAAc,wCACJ,OAAoB,kaA7Ff,mBACN,sJAFR,iGAEQ,iTA+HX,OAAgB,MAAO,OAAS,+CAGvB,OAAW,UAAY,cANtC,mCAKU,8CAFJ,OAAgB,MAAO,OAAS,2CAGvB,OAAW,UAAY,+JAW9B,OAAa,aACZ,OAAc,uBACJ,OAAoB,6NAJ3B,sDAUD,aAEN,QAAS,gBAAkB,OAAS,0PAVjC,OAAa,8BACZ,OAAc,wCACJ,OAAoB,uLAQlC,OAAS,gBAAkB,OAAS,yYAIrB,OAAoB,gBAC3B,OAAa,iBACZ,OAAc,2RAFR,OAAoB,iCAC3B,OAAa,kCACZ,OAAc,8WAzDhB,+WAvBO,OAAoB,gBAC3B,OAAa,iBACZ,OAAc,gRAFR,OAAoB,iCAC3B,OAAa,kCACZ,OAAc,oQAjBpB,KAAM,OAAS,iFAEN,OAAW,UAAY,cAHtC,oCACM,KAAM,OAAS,2CAEN,OAAW,UAAY,mDA5ChC,sBAUD,MAAY,gIAVX,2DAUD,MAAY,oSApBN,wDAKL,kFAEe,OAAW,UAAY,gCAH5C,8CACM,kDAEe,OAAW,UAAY,0IAZR,uDAAgB,kKAAhB,wgBAmB7B,OAAgB,MAAO,OAAS,+CAGvB,OAAW,UAAY,cANtC,mCAKU,8CAFJ,OAAgB,MAAO,OAAS,2CAGvB,OAAW,UAAY,+JAW9B,OAAa,aACZ,OAAc,uBACJ,OAAoB,wOAJ3B,sDAWD,aAEN,QAAS,gBAAkB,OAAS,0PAXjC,OAAa,8BACZ,OAAc,wCACJ,OAAoB,+MASlC,OAAS,gBAAkB,OAAS,yYAIrB,OAAoB,gBAC3B,OAAa,iBACZ,OAAc,2RAFR,OAAoB,iCAC3B,OAAa,kCACZ,OAAc,sTArDxB,QAAU,OAAS,OAAiB,OAEhC,OAAS,WAGT,OAAS,WAYR,QAAS,UAAY,OAAS,iBAAoB,QAAU,MAAQ,qXArC3E,OAAW,SAAWC,GAAa,SAClC,MAAU,QAAW,SAAW,SAAW,sEAW7C,QAAW,WA0EN,OAAW,WA2BV,OAAU,OAAS,OAAiB,OAYrC,OAAS,WAGT,OAAS,WAYR,QAAS,UAAY,OAAS,iBAAoB,QAAU,MAAQ,sLAvI3D,OAAW,UAC9B,OAAS,UACT,OAAS,cAAc,4BAHzB,oHAJO,OAAW,SAAWA,GAAa,sBAClC,MAAU,QAAW,SAAW,SAAW,mLAI9B,OAAW,UAC9B,OAAS,UACT,OAAS,cAAc,8KApKb,YAIA,QAA4B,WAC5B,iBAEA,SAAyC,aACzC,OAAuC,aACvC,YACA,YAAqB,OACrB,UAAmB,OACnB,oBACA,kBAEP,EACA,EAGH,GACC,KAAW,UAAY,IAAW,WACnC,IAAS,UAET,IAAU,MAAO,EAAiB,KAAM,oBAGhB,WACpB,IAAS,oBACZ,EAAe,CAAM,MAErB,EACE,KAAW,UAAY,IAAW,WAAa,IAAS,UACpD,MAAO,EAAQ,KAAM,MACvB,CAAM,EAEX,EAAS,SAAU,CAAM,eAGF,eACvB,EAAQ,IAAI,OACZ,EAAe,MAAS,EACxB,EAAS,OAAO,oBAGY,UAA8B,GACtD,IAAS,OACR,IAAW,UAAY,MAC1B,GACC,MAAO,EACP,KAAM,WAGP,GACC,YAAc,IAAU,SAAW,EAAQ,GAAO,OAAS,KAC3D,KAAM,IAIP,KAAW,UAAY,IAAW,WACnC,IAAS,aAET,GAAU,MAAO,EAAQ,KAAM,WAE/B,EAAQ,CAAM,OAGT,MAEN,EAAS,EAAY,SAAW,MAAM,OAGjC,GAAW,QAWb,GAAW,cAIY,QACpB,GAAU,EAAM,mBACtB,GAAY,EAAQ,YAAY,OAChC,GAAa,EAAQ,aAAa,OAClC,GAAmB,EAAQ,wBAAwB,MAAM,sBAIzD,EAAO,aACD,UACN,EAAQ,IAAI,OACZ,EAAe,MAAS,KAGrB,IAAa,EACb,GAAY,EACZ,GAAmB,EAEnB,EAmBA,EACA,GACA,GAEA,EAmBJ,aACK,IAAS,gBAAkB,SAAgB,IAAU,gBACxD,EAAe,CAAK,OACd,MACN,GAAoB,cAAe,iDA8Bd,8BACK,GAAO,IAAa,CAAC,MAAI,EAAO,QAAQ,cAGhD,EAAO,QAAQ,4CAanB,wDAWA,sGAaI,EAAO,0HAwBV,EAAO,uMAgBX,uBAYG,GACZ,IAAS,eAAiB,GAAc,CAAC,EAAI,EAAY,EAAG,EAAI,6EAS/C,8BACK,GAAO,IAAa,CAAC,MAAI,EAAO,QAAQ,cAGhD,EAAO,QAAQ,4CAanB,wDAWA,sGAYI,EAAO,8FA7JN,qBACD,ycAvFf,EAAS,SAAU,CAAe,sBAIlC,EAAS,OAAQ,CAAQ,qBAuBvB,IAAW,UAAY,IAAS,cACnC,EAAO,WAAW,EACR,IAAS,oBACnB,EAAO,cAAc,EAEpB,KAAW,UAAY,IAAW,WACnC,IAAS,cAET,EAAO,MAAM,OAEb,EAAO,QAAQ,4BAId,EAAc,GAAQ,OAAS,UAAY,MAAM,mBAS/C,KAAU,MAAS,EAAM,QAAU,MAAQ,EAAM,OAAS,YAC7D,EAAe,MAAS,sBAKrB,IACC,QACH,EAAQ,MAAQ,KAChB,EAAQ,UAER,EAAQ,6ZC/HS,6FAJZ,mBACE,OAAO,aAAe,SAAW,IAAI,iBACnC,OAAO,kDAKT,uEATV,SACC,4BAQD,4CAPQ,2BAOE,oMAXwB,odAFJ,SAAc,MAAS,sDACjD,QAAU,+LAD8B,MAAS,ySAX1C,YACA,QAA4B,WAC5B,qBAEL,GAAW,sJAId,GAAS,EAAS,SAAU,CAAK,8hDCkCjB,uHACd,SAAS,oKADK,wVAVV,QAAS,WAAa,OAAU,MAAQ,OAAW,SACzD,SACA,oBACU,MAAW,QAAU,eACzB,yCAGA,OAAQ,MAAM,OAAQ,MAAO,MAAM,sBAC5B,yJARP,QAAS,WAAa,OAAU,MAAQ,OAAW,SACzD,SACA,iCACU,MAAW,QAAU,2EAIzB,OAAQ,MAAM,OAAQ,MAAO,MAAM,iKApCjC,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAuB,SACvB,SAAyC,aACzC,OAA4B,aAC5B,YACA,iBACA,gBACA,cACA,eACA,oBACA,YACA,mBAEA,qBAEA,gBAEL,IAAW,QAGb,yKA+BU,iBAAc,EAAW,CAAM,6CAE9B,iBACZ,EAAiB,WACjB,EAAe,OAAS,eACxB,EAAe,QAAU,8lBAlCzB,EAAS,GAAQ,IAAY,gBAHtB,GAAS,QAAQ,8TC7Bf,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,+BAEV,aACC,oHACF"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.161aa114.js b/gradio/templates/frontend/assets/index.161aa114.js new file mode 100644 index 0000000000000000000000000000000000000000..f487375428fe2f6e83d10221ef571583f2ce47d9 --- /dev/null +++ b/gradio/templates/frontend/assets/index.161aa114.js @@ -0,0 +1,2 @@ +import{S as D,i as F,s as G,X as H,Y as I,Z as J,o as m,t as g,F as A,H as O,G as S,e as T,B as h,C as B,O as j,f as b,D as p,I as W,J as X,k as Y,n as Z,p as k,W as N,c as v,m as C,l as w,v as z,a7 as E,g as K,h as L}from"./index.37b24c07.js";import{a as M}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{C as P}from"./Column.899c996b.js";/* empty css */function q(f){let e;const l=f[3].default,t=N(l,f,f[2],null);return{c(){t&&t.c()},m(s,n){t&&t.m(s,n),e=!0},p(s,n){t&&t.p&&(!e||n&4)&&H(t,l,s,s[2],e?J(l,s[2],n,null):I(s[2]),null)},i(s){e||(m(t,s),e=!0)},o(s){g(t,s),e=!1},d(s){t&&t.d(s)}}}function Q(f){let e,l,t,s,n,u,a,i,d,c,o=f[0]&&q(f);return{c(){e=A("div"),l=A("span"),t=O(f[1]),s=S(),n=A("span"),n.textContent="\u25BC",u=S(),o&&o.c(),a=T(),h(l,"class","svelte-s1r2yt"),h(n,"class","icon svelte-s1r2yt"),B(n,"transform",f[0]?"rotate(0)":"rotate(90deg)",!1),h(e,"class","label-wrap svelte-s1r2yt"),j(e,"open",f[0])},m(r,_){b(r,e,_),p(e,l),p(l,t),p(e,s),p(e,n),b(r,u,_),o&&o.m(r,_),b(r,a,_),i=!0,d||(c=W(e,"click",f[4]),d=!0)},p(r,[_]){(!i||_&2)&&X(t,r[1]),_&1&&B(n,"transform",r[0]?"rotate(0)":"rotate(90deg)",!1),_&1&&j(e,"open",r[0]),r[0]?o?(o.p(r,_),_&1&&m(o,1)):(o=q(r),o.c(),m(o,1),o.m(a.parentNode,a)):o&&(Y(),g(o,1,1,()=>{o=null}),Z())},i(r){i||(m(o),i=!0)},o(r){g(o),i=!1},d(r){r&&k(e),r&&k(u),o&&o.d(r),r&&k(a),d=!1,c()}}}function R(f,e,l){let{$$slots:t={},$$scope:s}=e,{label:n=""}=e,{open:u=!0}=e;const a=()=>l(0,u=!u);return f.$$set=i=>{"label"in i&&l(1,n=i.label),"open"in i&&l(0,u=i.open),"$$scope"in i&&l(2,s=i.$$scope)},[u,n,s,t,a]}class U extends D{constructor(e){super(),F(this,e,R,Q,G,{label:1,open:0})}}function V(f){let e;const l=f[6].default,t=N(l,f,f[7],null);return{c(){t&&t.c()},m(s,n){t&&t.m(s,n),e=!0},p(s,n){t&&t.p&&(!e||n&128)&&H(t,l,s,s[7],e?J(l,s[7],n,null):I(s[7]),null)},i(s){e||(m(t,s),e=!0)},o(s){g(t,s),e=!1},d(s){t&&t.d(s)}}}function $(f){let e,l;return e=new P({props:{$$slots:{default:[V]},$$scope:{ctx:f}}}),{c(){v(e.$$.fragment)},m(t,s){C(e,t,s),l=!0},p(t,s){const n={};s&128&&(n.$$scope={dirty:s,ctx:t}),e.$set(n)},i(t){l||(m(e.$$.fragment,t),l=!0)},o(t){g(e.$$.fragment,t),l=!1},d(t){w(e,t)}}}function y(f){let e,l,t,s;const n=[f[5]];let u={};for(let a=0;a{"label"in o&&l(0,n=o.label),"elem_id"in o&&l(1,u=o.elem_id),"elem_classes"in o&&l(2,a=o.elem_classes),"visible"in o&&l(3,i=o.visible),"open"in o&&l(4,d=o.open),"loading_status"in o&&l(5,c=o.loading_status),"$$scope"in o&&l(7,s=o.$$scope)},[n,u,a,i,d,c,t,s]}class te extends D{constructor(e){super(),F(this,e,ee,x,G,{label:0,elem_id:1,elem_classes:2,visible:3,open:4,loading_status:5})}}var oe=te;const fe=["static"];export{oe as Component,fe as modes}; +//# sourceMappingURL=index.161aa114.js.map diff --git a/gradio/templates/frontend/assets/index.161aa114.js.map b/gradio/templates/frontend/assets/index.161aa114.js.map new file mode 100644 index 0000000000000000000000000000000000000000..b62fb71b5aa0fb0926afca9dda0c644545c9f8ae --- /dev/null +++ b/gradio/templates/frontend/assets/index.161aa114.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.161aa114.js","sources":["../../../../ui/packages/accordion/src/Accordion.svelte","../../../../ui/packages/app/src/components/Accordion/Accordion.svelte","../../../../ui/packages/app/src/components/Accordion/index.ts"],"sourcesContent":["\n\n
(open = !open)} class=\"label-wrap\" class:open>\n\t{label}\n\t\n\t\t▼\n\t\n
\n{#if open}\n\t\n{/if}\n\n\n","\n\n\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n","export { default as Component } from \"./Accordion.svelte\";\nexport const modes = [\"static\"];\n"],"names":[],"mappings":"mrBAWK,iDALG,mJACgB,KAAO,YAAc,qFAF7C,SACC,qBACA,iGADO,2BACgB,KAAO,YAAc,0CAIxC,oPAVO,QAAgB,OAChB,OAAgB,sBAGN,GAAQ,CAAI,uuBCYd,gRAAA,mrBATR,YACA,cACA,mBACA,UAAmB,OACnB,OAAgB,OAChB,wbCZC,IAAQ,CAAC,QAAQ"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.1c646c8a.css b/gradio/templates/frontend/assets/index.1c646c8a.css new file mode 100644 index 0000000000000000000000000000000000000000..beda351dfc765484ad744113e3d1734eb71cacd1 --- /dev/null +++ b/gradio/templates/frontend/assets/index.1c646c8a.css @@ -0,0 +1 @@ +div.svelte-15lo0d8{display:flex;flex-wrap:wrap;gap:var(--layout-gap);width:var(--size-full)}.hide.svelte-15lo0d8{display:none}.compact.svelte-15lo0d8>*,.compact.svelte-15lo0d8 .box{border-radius:0}.compact.svelte-15lo0d8,.panel.svelte-15lo0d8{border-radius:var(--container-radius);background:var(--background-fill-secondary);padding:var(--size-2)}.unequal-height.svelte-15lo0d8{align-items:flex-start}.stretch.svelte-15lo0d8{align-items:stretch}div.svelte-15lo0d8>*,div.svelte-15lo0d8>.form>*{flex:1 1 0%;flex-wrap:wrap;min-width:min(160px,100%)} diff --git a/gradio/templates/frontend/assets/index.24229075.css b/gradio/templates/frontend/assets/index.24229075.css new file mode 100644 index 0000000000000000000000000000000000000000..690ed736f2c29c32ba8499343659e9fde81f2098 --- /dev/null +++ b/gradio/templates/frontend/assets/index.24229075.css @@ -0,0 +1 @@ +div.svelte-1yrv54 .math.inline{fill:var(--body-text-color);display:inline-block;vertical-align:middle;padding:var(--size-1-5) -var(--size-1);color:var(--body-text-color)}div.svelte-1yrv54 .math.inline svg{display:inline;margin-bottom:.22em}div.svelte-1yrv54{max-width:100%}.min.svelte-1yrv54{min-height:var(--size-24)}.hide.svelte-1yrv54{display:none}div.svelte-1ed2p3z{transition:.15s}.pending.svelte-1ed2p3z{opacity:.2} diff --git a/gradio/templates/frontend/assets/index.2de5e818.js b/gradio/templates/frontend/assets/index.2de5e818.js new file mode 100644 index 0000000000000000000000000000000000000000..0da3416567dd1cd1e6e3cee43c9d6b8dc56bfd38 --- /dev/null +++ b/gradio/templates/frontend/assets/index.2de5e818.js @@ -0,0 +1,6 @@ +import{S as T,i as A,s as E,A as q,B as k,f as m,D as g,E as h,p as d,F as y,G as J,O as I,k as N,t as b,n as S,o as p,H as v,J as B,e as D,c as j,m as O,l as $,N as K,I as L,ac as U,a3 as W,a4 as X,a5 as x,q as ee,v as te,a7 as le,g as ne,h as se}from"./index.37b24c07.js";import{C as ie,a as oe}from"./Copy.d6bfc6ec.js";/* empty css */import{a as re}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{E as ae}from"./Empty.ae5c2506.js";import{B as fe}from"./BlockLabel.7ce695d8.js";import"./Blocks.5efe22d4.js";function ce(f){let e,t;return{c(){e=q("svg"),t=q("path"),k(t,"fill","currentColor"),k(t,"d","M5 3h2v2H5v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5h2v2H5c-1.07-.27-2-.9-2-2v-4a2 2 0 0 0-2-2H0v-2h1a2 2 0 0 0 2-2V5a2 2 0 0 1 2-2m14 0a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h1v2h-1a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2h-2v-2h2v-5a2 2 0 0 1 2-2a2 2 0 0 1-2-2V5h-2V3h2m-7 12a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-4 0a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m8 0a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1Z"),k(e,"xmlns","http://www.w3.org/2000/svg"),k(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),k(e,"aria-hidden","true"),k(e,"role","img"),k(e,"class","iconify iconify--mdi"),k(e,"width","100%"),k(e,"height","100%"),k(e,"preserveAspectRatio","xMidYMid meet"),k(e,"viewBox","0 0 24 24")},m(l,s){m(l,e,s),g(e,t)},p:h,i:h,o:h,d(l){l&&d(e)}}}class Q extends T{constructor(e){super(),A(this,e,null,ce,E,{})}}function F(f,e,t){const l=f.slice();return l[5]=e[t],l[7]=t,l}function G(f,e,t){const l=f.slice();return l[5]=e[t],l[7]=t,l}function ue(f){let e,t;return{c(){e=y("div"),t=v(f[1]),k(e,"class","json-item svelte-1kspdo")},m(l,s){m(l,e,s),g(e,t)},p(l,s){s&2&&B(t,l[1])},i:h,o:h,d(l){l&&d(e)}}}function _e(f){let e,t;return{c(){e=y("div"),t=v(f[1]),k(e,"class","json-item number svelte-1kspdo")},m(l,s){m(l,e,s),g(e,t)},p(l,s){s&2&&B(t,l[1])},i:h,o:h,d(l){l&&d(e)}}}function me(f){let e,t=f[1].toLocaleString()+"",l;return{c(){e=y("div"),l=v(t),k(e,"class","json-item bool svelte-1kspdo")},m(s,a){m(s,e,a),g(e,l)},p(s,a){a&2&&t!==(t=s[1].toLocaleString()+"")&&B(l,t)},i:h,o:h,d(s){s&&d(e)}}}function de(f){let e,t,l,s;return{c(){e=y("div"),t=v('"'),l=v(f[1]),s=v('"'),k(e,"class","json-item string svelte-1kspdo")},m(a,o){m(a,e,o),g(e,t),g(e,l),g(e,s)},p(a,o){o&2&&B(l,a[1])},i:h,o:h,d(a){a&&d(e)}}}function pe(f){let e;return{c(){e=y("div"),e.textContent="null",k(e,"class","json-item null svelte-1kspdo")},m(t,l){m(t,e,l)},p:h,i:h,o:h,d(t){t&&d(e)}}}function be(f){let e,t,l,s;const a=[ge,ve],o=[];function c(n,i){return n[0]?0:1}return e=c(f),t=o[e]=a[e](f),{c(){t.c(),l=D()},m(n,i){o[e].m(n,i),m(n,l,i),s=!0},p(n,i){let r=e;e=c(n),e===r?o[e].p(n,i):(N(),b(o[r],1,1,()=>{o[r]=null}),S(),t=o[e],t?t.p(n,i):(t=o[e]=a[e](n),t.c()),p(t,1),t.m(l.parentNode,l))},i(n){s||(p(t),s=!0)},o(n){b(t),s=!1},d(n){o[e].d(n),n&&d(l)}}}function ke(f){let e,t,l,s;const a=[ye,he],o=[];function c(n,i){return n[0]?0:1}return e=c(f),t=o[e]=a[e](f),{c(){t.c(),l=D()},m(n,i){o[e].m(n,i),m(n,l,i),s=!0},p(n,i){let r=e;e=c(n),e===r?o[e].p(n,i):(N(),b(o[r],1,1,()=>{o[r]=null}),S(),t=o[e],t?t.p(n,i):(t=o[e]=a[e](n),t.c()),p(t,1),t.m(l.parentNode,l))},i(n){s||(p(t),s=!0)},o(n){b(t),s=!1},d(n){o[e].d(n),n&&d(l)}}}function ve(f){let e,t,l,s,a=Object.entries(f[1]),o=[];for(let n=0;nb(o[n],1,1,()=>{o[n]=null});return{c(){e=v(`{ + `),t=y("div");for(let n=0;nb(o[n],1,1,()=>{o[n]=null});return{c(){e=v(`[ + `),t=y("div");for(let n=0;n{n[w]=null}),S(),a=n[s],a?a.p(r,u):(a=n[s]=c[s](r),a.c()),p(a,1),a.m(l,null))},i(r){o||(p(a),o=!0)},o(r){b(a),o=!1},d(r){r&&d(e),r&&d(t),r&&d(l),n[s].d()}}}function je(f,e,t){let{value:l}=e,{depth:s}=e,{collapsed:a=s>4}=e;const o=()=>{t(0,a=!1)},c=()=>{t(0,a=!1)};return f.$$set=n=>{"value"in n&&t(1,l=n.value),"depth"in n&&t(2,s=n.depth),"collapsed"in n&&t(0,a=n.collapsed)},[a,l,s,o,c]}class M extends T{constructor(e){super(),A(this,e,je,we,E,{value:1,depth:2,collapsed:0})}}function Oe(f){let e,t;return e=new ae({props:{$$slots:{default:[Ne]},$$scope:{ctx:f}}}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},p(l,s){const a={};s&32&&(a.$$scope={dirty:s,ctx:l}),e.$set(a)},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function $e(f){let e,t,l,s,a,o,c,n,i;const r=[Je,Se],u=[];function w(_,C){return _[1]?0:1}return t=w(f),l=u[t]=r[t](f),o=new M({props:{value:f[0],depth:0}}),{c(){e=y("button"),l.c(),s=J(),a=y("div"),j(o.$$.fragment),k(e,"class","svelte-1trjy9a"),k(a,"class","json-holder svelte-1trjy9a")},m(_,C){m(_,e,C),u[t].m(e,null),m(_,s,C),m(_,a,C),O(o,a,null),c=!0,n||(i=L(e,"click",f[2]),n=!0)},p(_,C){let H=t;t=w(_),t!==H&&(N(),b(u[H],1,1,()=>{u[H]=null}),S(),l=u[t],l||(l=u[t]=r[t](_),l.c()),p(l,1),l.m(e,null));const V={};C&1&&(V.value=_[0]),o.$set(V)},i(_){c||(p(l),p(o.$$.fragment,_),c=!0)},o(_){b(l),b(o.$$.fragment,_),c=!1},d(_){_&&d(e),u[t].d(),_&&d(s),_&&d(a),$(o),n=!1,i()}}}function Ne(f){let e,t;return e=new Q({}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function Se(f){let e,t,l;return t=new ie({}),{c(){e=y("span"),j(t.$$.fragment),k(e,"class","copy-text")},m(s,a){m(s,e,a),O(t,e,null),l=!0},i(s){l||(p(t.$$.fragment,s),l=!0)},o(s){b(t.$$.fragment,s),l=!1},d(s){s&&d(e),$(t)}}}function Je(f){let e,t,l,s;return t=new oe({}),{c(){e=y("span"),j(t.$$.fragment)},m(a,o){m(a,e,o),O(t,e,null),s=!0},i(a){s||(p(t.$$.fragment,a),l||W(()=>{l=X(e,x,{duration:300}),l.start()}),s=!0)},o(a){b(t.$$.fragment,a),s=!1},d(a){a&&d(e),$(t)}}}function Be(f){let e,t,l,s,a;const o=[$e,Oe],c=[];function n(i,r){return r&1&&(e=null),e==null&&(e=!!(i[0]&&i[0]!=='""'&&!Ce(i[0]))),e?0:1}return t=n(f,-1),l=c[t]=o[t](f),{c(){l.c(),s=D()},m(i,r){c[t].m(i,r),m(i,s,r),a=!0},p(i,[r]){let u=t;t=n(i,r),t===u?c[t].p(i,r):(N(),b(c[u],1,1,()=>{c[u]=null}),S(),l=c[t],l?l.p(i,r):(l=c[t]=o[t](i),l.c()),p(l,1),l.m(s.parentNode,s))},i(i){a||(p(l),a=!0)},o(i){b(l),a=!1},d(i){c[t].d(i),i&&d(s)}}}function Ce(f){return f&&Object.keys(f).length===0&&Object.getPrototypeOf(f)===Object.prototype}function Te(f,e,t){let{value:l={}}=e,s=!1,a;function o(){t(1,s=!0),a&&clearTimeout(a),a=setTimeout(()=>{t(1,s=!1)},1e3)}async function c(){"clipboard"in navigator&&(await navigator.clipboard.writeText(JSON.stringify(l,null,2)),o())}return U(()=>{a&&clearTimeout(a)}),f.$$set=n=>{"value"in n&&t(0,l=n.value)},[l,s,c]}class Ae extends T{constructor(e){super(),A(this,e,Te,Be,E,{value:0})}}function z(f){let e,t;return e=new fe({props:{Icon:Q,show_label:f[6],label:f[5],float:!1,disable:typeof f[7].container=="boolean"&&!f[7].container}}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},p(l,s){const a={};s&64&&(a.show_label=l[6]),s&32&&(a.label=l[5]),s&128&&(a.disable=typeof l[7].container=="boolean"&&!l[7].container),e.$set(a)},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function Ee(f){let e,t,l,s,a,o=f[5]&&z(f);const c=[f[4]];let n={};for(let i=0;i{o=null}),S());const u=r&16?ne(c,[se(i[4])]):{};t.$set(u);const w={};r&8&&(w.value=i[3]),s.$set(w)},i(i){a||(p(o),p(t.$$.fragment,i),p(s.$$.fragment,i),a=!0)},o(i){b(o),b(t.$$.fragment,i),b(s.$$.fragment,i),a=!1},d(i){o&&o.d(i),i&&d(e),$(t,i),i&&d(l),$(s,i)}}}function He(f){let e,t;return e=new re({props:{visible:f[2],test_id:"json",elem_id:f[0],elem_classes:f[1],disable:typeof f[7].container=="boolean"&&!f[7].container,padding:!1,$$slots:{default:[Ee]},$$scope:{ctx:f}}}),{c(){j(e.$$.fragment)},m(l,s){O(e,l,s),t=!0},p(l,[s]){const a={};s&4&&(a.visible=l[2]),s&1&&(a.elem_id=l[0]),s&2&&(a.elem_classes=l[1]),s&128&&(a.disable=typeof l[7].container=="boolean"&&!l[7].container),s&1272&&(a.$$scope={dirty:s,ctx:l}),e.$set(a)},i(l){t||(p(e.$$.fragment,l),t=!0)},o(l){b(e.$$.fragment,l),t=!1},d(l){$(e,l)}}}function De(f,e,t){let{elem_id:l=""}=e,{elem_classes:s=[]}=e,{visible:a=!0}=e,{value:o}=e,c,{loading_status:n}=e,{label:i}=e,{show_label:r}=e,{style:u={}}=e;const w=ee();return f.$$set=_=>{"elem_id"in _&&t(0,l=_.elem_id),"elem_classes"in _&&t(1,s=_.elem_classes),"visible"in _&&t(2,a=_.visible),"value"in _&&t(3,o=_.value),"loading_status"in _&&t(4,n=_.loading_status),"label"in _&&t(5,i=_.label),"show_label"in _&&t(6,r=_.show_label),"style"in _&&t(7,u=_.style)},f.$$.update=()=>{f.$$.dirty&264&&o!==c&&(t(8,c=o),w("change"))},[l,s,a,o,n,i,r,u,c]}class Le extends T{constructor(e){super(),A(this,e,De,He,E,{elem_id:0,elem_classes:1,visible:2,value:3,loading_status:4,label:5,show_label:6,style:7})}}var Re=Le;const Ye=["static"],Ze=f=>({type:{payload:"Object | Array"},description:{payload:"JSON object"}});export{Re as Component,Ze as document,Ye as modes}; +//# sourceMappingURL=index.2de5e818.js.map diff --git a/gradio/templates/frontend/assets/index.2de5e818.js.map b/gradio/templates/frontend/assets/index.2de5e818.js.map new file mode 100644 index 0000000000000000000000000000000000000000..07088f54e17b140cace4d3b7c53b5ff425399764 --- /dev/null +++ b/gradio/templates/frontend/assets/index.2de5e818.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.2de5e818.js","sources":["../../../../ui/packages/icons/src/JSON.svelte","../../../../ui/packages/json/src/JSONNode.svelte","../../../../ui/packages/json/src/JSON.svelte","../../../../ui/packages/app/src/components/Json/Json.svelte","../../../../ui/packages/app/src/components/Json/index.ts"],"sourcesContent":["\n\t\n\n","\n\n\n
\n\t{#if value instanceof Array}\n\t\t{#if collapsed}\n\t\t\t {\n\t\t\t\t\tcollapsed = false;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\texpand {value.length} children\n\t\t\t\n\t\t{:else}\n\t\t\t[\n\t\t\t
\n\t\t\t\t{#each value as node, i}\n\t\t\t\t\t
\n\t\t\t\t\t\t{i}: \n\t\t\t\t\t\t{#if i !== value.length - 1}\n\t\t\t\t\t\t\t,\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\t\t\t\t{/each}\n\t\t\t
\n\t\t\t]\n\t\t{/if}\n\t{:else if value instanceof Object}\n\t\t{#if collapsed}\n\t\t\t {\n\t\t\t\t\tcollapsed = false;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{+{Object.keys(value).length} items}\n\t\t\t\n\t\t{:else}\n\t\t\t{\n\t\t\t
\n\t\t\t\t{#each Object.entries(value) as node, i}\n\t\t\t\t\t
\n\t\t\t\t\t\t{node[0]}: {#if i !== Object.keys(value).length - 1},\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\t\t\t\t{/each}\n\t\t\t
\n\t\t\t}\n\t\t{/if}\n\t{:else if value === null}\n\t\t
null
\n\t{:else if typeof value === \"string\"}\n\t\t
\n\t\t\t\"{value}\"\n\t\t
\n\t{:else if typeof value === \"boolean\"}\n\t\t
\n\t\t\t{value.toLocaleString()}\n\t\t
\n\t{:else if typeof value === \"number\"}\n\t\t
\n\t\t\t{value}\n\t\t
\n\t{:else}\n\t\t
\n\t\t\t{value}\n\t\t
\n\t{/if}\n
\n\n\n","\n\n{#if value && value !== '\"\"' && !is_empty(value)}\n\t\n\t
\n\t\t\n\t
\n{:else}\n\t\n\t\t\n\t\n{/if}\n\n\n","\n\n\n\t{#if label}\n\t\t\n\t{/if}\n\n\t\n\n\t\n\n","export { default as Component } from \"./Json.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"Object | Array\"\n\t},\n\tdescription: {\n\t\tpayload: \"JSON object\"\n\t}\n});\n"],"names":["JSONIcon"],"mappings":"22CAAA,SAWC,iRC+DG,qDADF,iCACE,+EAJA,4DADF,iCACE,qDAJA,KAAM,uGADR,oCACE,KAAM,0GALqB,GAC3B,MAAC,UAAM,GACT,wDAFA,+CACG,kJAHH,2GA3BK,kXAvBA,yUAkCI,OAAO,QAAQ,2BAApB,mFAHE;AAAA,IAEL,sDAaK;AAAA,KAEN,yDAfC,oFACQ,OAAO,QAAQ,wBAApB,qHAAA,8DAAA,6JALM,OAAO,KAAK,MAAO,+CAD5B,IACQ,aAA2B,SACnC,UANA,gFAKS,OAAO,KAAK,MAAO,uFAahB,GACT,yDAPC,KAAK,cAKQ,OAAM,OAAO,KAAK,MAAO,OAAS,4BAJxC,KAAK,SACL,KAAQ,MACV,sDAHG,IAAE,0CADZ,wFACE,KAAK,wCACE,KAAK,kBACL,KAAQ,qBAGF,OAAM,OAAO,KAAK,MAAO,OAAS,8KA9B3C,0BAAL,mFAHE;AAAA,IAEL,sDASK;AAAA,KAEN,yDAXC,oFACQ,uBAAL,qHAAA,8DAAA,+JALiC,KAAM,2DAAd,SAAO,aAAc,WAAS,oDAL1D,SAKC,8EAAmC,KAAM,uFAQZ,GAE3B,yFAHyB,WAAa,KAAQ,WACzC,OAAM,KAAM,OAAS,iCADzB,UAAE,IAAE,gDADN,sGAC0B,oBAAa,KAAQ,aACzC,OAAM,KAAM,OAAS,uOAf1B,eAAiB,SAuBZ,cAAiB,UA2BjB,OAAU,aAEH,OAAU,iBAIV,OAAU,kBAIV,OAAU,kIA9DM,OAAU,CAAC,iDAA7C,kBACA,wDADkC,OAAU,CAAC,0OALjC,YACA,YACA,YAAY,EAAQ,sBAS3B,EAAY,EAAK,cAuBjB,EAAY,EAAK,6jBCQf,wEASoB,gJAV1B,iCASA,4CATkB,qkBAMhB,yMAJA,0EAAiB,SAAU,gLAHzB,OAAS,OAAU,OAAS,GAAS,mUAbvB,SAEhB,IACA,OAAO,KAAK,CAAG,EAAE,SAAW,GAC5B,OAAO,eAAe,CAAG,IAAM,OAAO,iCAxB7B,cAEP,EAAS,GACT,mBAGH,EAAS,EAAI,EACT,GAAO,aAAa,CAAK,EAC7B,EAAQ,oBACP,EAAS,EAAK,GACZ,wBAIC,aAAe,kBACZ,WAAU,UAAU,UAAU,KAAK,UAAU,EAAO,KAAM,CAAC,GACjE,KAYF,cACK,GAAO,aAAa,CAAK,+KCItBA,mCAGC,iBACS,MAAM,WAAc,YAAc,KAAM,mJAAxC,MAAM,WAAc,YAAc,KAAM,oIANrD,oBAUc,mPAVd,kIAUc,uVAbH,MAAM,WAAc,YAAc,KAAM,kBAC/C,6MADO,MAAM,WAAc,YAAc,KAAM,gKAzB7C,UAAkB,OAClB,sBACA,UAAmB,OACnB,WACP,GACO,qBACA,YACA,iBACA,mBAEL,GAAW,4UAGZ,IAAU,QACb,EAAY,CAAK,EACjB,EAAS,QAAQ,+LCzBP,IAAQ,CAAC,QAAQ,EAEjB,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,kBAEV,YAAa,CACZ,QAAS,cAEX"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.309797c9.js b/gradio/templates/frontend/assets/index.309797c9.js new file mode 100644 index 0000000000000000000000000000000000000000..ffd15d80f69bbee1af7db6cee95fb972a76784bb --- /dev/null +++ b/gradio/templates/frontend/assets/index.309797c9.js @@ -0,0 +1,2 @@ +import{S as ee,i as le,s as te,a3 as ne,c as N,m as q,o as p,t as z,l as H,G as E,e as pe,f as C,I as S,k as V,n as F,p as D,q as ye,V as ze,b as K,F as A,K as R,B as b,C as O,O as B,D as y,H as ie,J as se,N as ae,a2 as Ge,ak as Be,v as Ae,a7 as Ce,g as De,h as Ee,x as Ie}from"./index.37b24c07.js";import{g as Ne,a as qe}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{B as He}from"./BlockLabel.7ce695d8.js";import{E as Le}from"./Empty.ae5c2506.js";import{n as U}from"./ModifyUpload.svelte_svelte_type_style_lang.e946db2d.js";import{M as Re}from"./ModifyUpload.6b6d2d33.js";/* empty css */import{I as oe}from"./Image.5624fd80.js";function P(l,t,e){const n=l.slice();return n[31]=t[e][0],n[32]=t[e][1],n[34]=e,n}function Q(l,t,e){const n=l.slice();return n[31]=t[e],n[35]=t,n[34]=e,n}function W(l){let t,e;return t=new He({props:{show_label:l[0],Icon:oe,label:l[1]||"Gallery",disable:typeof l[3].container=="boolean"&&!l[3].container}}),{c(){N(t.$$.fragment)},m(n,i){q(t,n,i),e=!0},p(n,i){const o={};i[0]&1&&(o.show_label=n[0]),i[0]&2&&(o.label=n[1]||"Gallery"),i[0]&8&&(o.disable=typeof n[3].container=="boolean"&&!n[3].container),t.$set(o)},i(n){e||(p(t.$$.fragment,n),e=!0)},o(n){z(t.$$.fragment,n),e=!1},d(n){H(t,n)}}}function Se(l){let t,e,n,i,o,m=l[4]!==null&&X(l),f=l[7],a=[];for(let s=0;sl[26].call(e)),B(e,"fixed-height",!l[3].height||l[3].height=="auto")},m(s,c){m&&m.m(s,c),C(s,t,c),C(s,e,c),y(e,n);for(let h=0;h{m=null}),F()),c[0]&2192){f=s[7];let h;for(h=0;hl[22](t,f),h=()=>l[22](null,f);function u(){return l[23](l[34])}return{c(){t=A("button"),e=A("img"),m=E(),R(e.src,n=l[31][0].data)||b(e,"src",n),b(e,"title",i=l[31][1]||null),b(e,"alt",o=l[31][1]||null),b(e,"class","svelte-1tkea93"),b(t,"class","thumbnail-item thumbnail-small svelte-1tkea93"),B(t,"selected",l[4]===l[34])},m(d,_){C(d,t,_),y(t,e),y(t,m),c(),a||(s=S(t,"click",u),a=!0)},p(d,_){l=d,_[0]&128&&!R(e.src,n=l[31][0].data)&&b(e,"src",n),_[0]&128&&i!==(i=l[31][1]||null)&&b(e,"title",i),_[0]&128&&o!==(o=l[31][1]||null)&&b(e,"alt",o),f!==l[34]&&(h(),f=l[34],c()),_[0]&16&&B(t,"selected",l[4]===l[34])},d(d){d&&D(t),h(),a=!1,s()}}}function $(l){let t,e=l[32]+"",n;return{c(){t=A("div"),n=ie(e),b(t,"class","caption-label svelte-1tkea93")},m(i,o){C(i,t,o),y(t,n)},p(i,o){o[0]&128&&e!==(e=i[32]+"")&&se(n,e)},d(i){i&&D(t)}}}function x(l){let t,e,n,i,o,m,f,a,s=l[32]&&$(l);function c(){return l[25](l[34])}return{c(){t=A("button"),e=A("img"),o=E(),s&&s.c(),m=E(),b(e,"alt",n=l[32]||""),R(e.src,i=typeof l[31]=="string"?l[31]:l[31].data)||b(e,"src",i),b(e,"class","svelte-1tkea93"),b(t,"class","thumbnail-item thumbnail-lg svelte-1tkea93"),B(t,"selected",l[4]===l[34])},m(h,u){C(h,t,u),y(t,e),y(t,o),s&&s.m(t,null),y(t,m),f||(a=S(t,"click",c),f=!0)},p(h,u){l=h,u[0]&128&&n!==(n=l[32]||"")&&b(e,"alt",n),u[0]&128&&!R(e.src,i=typeof l[31]=="string"?l[31]:l[31].data)&&b(e,"src",i),l[32]?s?s.p(l,u):(s=$(l),s.c(),s.m(t,m)):s&&(s.d(1),s=null),u[0]&16&&B(t,"selected",l[4]===l[34])},d(h){h&&D(t),s&&s.d(),f=!1,a()}}}function Me(l){let t,e;return t=new oe({}),{c(){N(t.$$.fragment)},m(n,i){q(t,n,i),e=!0},i(n){e||(p(t.$$.fragment,n),e=!0)},o(n){z(t.$$.fragment,n),e=!1},d(n){H(t,n)}}}function Te(l){let t,e,n,i,o,m,f;ne(l[19]);let a=l[0]&&W(l);const s=[je,Se],c=[];function h(u,d){return u[2]===null||u[7]===null||u[7].length===0?0:1}return e=h(l),n=c[e]=s[e](l),{c(){a&&a.c(),t=E(),n.c(),i=pe()},m(u,d){a&&a.m(u,d),C(u,t,d),c[e].m(u,d),C(u,i,d),o=!0,m||(f=S(window,"resize",l[19]),m=!0)},p(u,d){u[0]?a?(a.p(u,d),d[0]&1&&p(a,1)):(a=W(u),a.c(),p(a,1),a.m(t.parentNode,t)):a&&(V(),z(a,1,1,()=>{a=null}),F());let _=e;e=h(u),e===_?c[e].p(u,d):(V(),z(c[_],1,1,()=>{c[_]=null}),F(),n=c[e],n?n.p(u,d):(n=c[e]=s[e](u),n.c()),p(n,1),n.m(i.parentNode,i))},i(u){o||(p(a),p(n),o=!0)},o(u){z(a),z(n),o=!1},d(u){a&&a.d(u),u&&D(t),c[e].d(u),u&&D(i),m=!1,f()}}}function Ve(l,t,e){let n,i,o,m,f,{show_label:a=!0}=t,{label:s}=t,{root:c=""}=t,{root_url:h=null}=t,{value:u=null}=t,{style:d={grid:[2],height:"auto"}}=t;const _=ye();let G=!0,k=u,r=null,v=null;function w(g){switch(g.code){case"Escape":g.preventDefault(),e(4,r=null);break;case"ArrowLeft":g.preventDefault(),e(4,r=i);break;case"ArrowRight":g.preventDefault(),e(4,r=o);break}}let I=[],L;async function re(g){if(typeof g!="number")return;await ze(),I[g].focus();const{left:T,width:ke}=L.getBoundingClientRect(),{left:we,width:ve}=I[g].getBoundingClientRect(),J=we-T+ve/2-ke/2+L.scrollLeft;L.scrollTo({left:J<0?0:J,behavior:"smooth"})}function fe(g){return e(10,f=Ne(g,["grid"]).styles),f+` height: ${g.height}`}let j=0,M=0;function ue(){e(6,M=window.innerHeight)}const _e=()=>e(4,r=null),ce=()=>e(4,r=o);function me(g,T){K[g?"unshift":"push"](()=>{I[T]=g,e(8,I)})}const he=g=>e(4,r=g);function ge(g){K[g?"unshift":"push"](()=>{L=g,e(9,L)})}const be=g=>e(4,r=m?g:r);function de(){j=this.clientHeight,e(5,j)}return l.$$set=g=>{"show_label"in g&&e(0,a=g.show_label),"label"in g&&e(1,s=g.label),"root"in g&&e(14,c=g.root),"root_url"in g&&e(15,h=g.root_url),"value"in g&&e(2,u=g.value),"style"in g&&e(3,d=g.style)},l.$$.update=()=>{l.$$.dirty[0]&65540&&e(16,G=u==null||u.length==0?!0:G),l.$$.dirty[0]&49156&&e(7,n=u===null?null:u.map(g=>Array.isArray(g)?[U(g[0],c,h),g[1]]:[U(g,c,h),null])),l.$$.dirty[0]&196636&&k!==u&&(G?(e(4,r=d.preview?0:null),e(16,G=!1)):e(4,r=r!==null&&u!==null&&r=j),l.$$.dirty[0]&8&&e(10,f=fe(d))},[a,s,u,d,r,j,M,n,I,L,f,m,o,w,c,h,G,k,v,ue,_e,ce,me,he,ge,be,de]}class Fe extends ee{constructor(t){super(),le(this,t,Ve,Te,te,{show_label:0,label:1,root:14,root_url:15,value:2,style:3},null,[-1,-1])}}function Je(l){let t,e,n,i;const o=[l[0]];let m={};for(let f=0;f{"loading_status"in _&&e(0,n=_.loading_status),"show_label"in _&&e(1,i=_.show_label),"label"in _&&e(2,o=_.label),"root"in _&&e(3,m=_.root),"root_url"in _&&e(4,f=_.root_url),"elem_id"in _&&e(5,a=_.elem_id),"elem_classes"in _&&e(6,s=_.elem_classes),"visible"in _&&e(7,c=_.visible),"value"in _&&e(8,h=_.value),"style"in _&&e(9,u=_.style)},[n,i,o,m,f,a,s,c,h,u,d]}class Ue extends ee{constructor(t){super(),le(this,t,Oe,Ke,te,{loading_status:0,show_label:1,label:2,root:3,root_url:4,elem_id:5,elem_classes:6,visible:7,value:8,style:9})}}var ll=Ue;const tl=["static"],nl=l=>({type:{payload:"Array<{ name: string } | [{ name: string }, string]>"},description:{payload:"list of objects, with filename and optional caption,"}});export{ll as Component,nl as document,tl as modes}; +//# sourceMappingURL=index.309797c9.js.map diff --git a/gradio/templates/frontend/assets/index.309797c9.js.map b/gradio/templates/frontend/assets/index.309797c9.js.map new file mode 100644 index 0000000000000000000000000000000000000000..87766360c047ec6a25891da595ac826d46971c48 --- /dev/null +++ b/gradio/templates/frontend/assets/index.309797c9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.309797c9.js","sources":["../../../../ui/packages/gallery/src/Gallery.svelte","../../../../ui/packages/app/src/components/Gallery/Gallery.svelte","../../../../ui/packages/app/src/components/Gallery/index.ts"],"sourcesContent":["\n\n\n\n{#if show_label}\n\t\n{/if}\n{#if value === null || _value === null || _value.length === 0}\n\t\n{:else}\n\t{#if selected_image !== null}\n\t\t\n\t\t\t (selected_image = null)} />\n\n\t\t\t (selected_image = next)}\n\t\t\t\tsrc={_value[selected_image][0].data}\n\t\t\t\talt={_value[selected_image][1] || \"\"}\n\t\t\t\ttitle={_value[selected_image][1] || null}\n\t\t\t\tclass:with-caption={!!_value[selected_image][1]}\n\t\t\t\tstyle=\"height: calc(100% - {_value[selected_image][1]\n\t\t\t\t\t? '80px'\n\t\t\t\t\t: '60px'})\"\n\t\t\t/>\n\t\t\t{#if _value[selected_image][1]}\n\t\t\t\t
\n\t\t\t\t\t{_value[selected_image][1]}\n\t\t\t\t
\n\t\t\t{/if}\n\t\t\t
\n\t\t\t\t{#each _value as image, i}\n\t\t\t\t\t (selected_image = i)}\n\t\t\t\t\t\tclass=\"thumbnail-item thumbnail-small \"\n\t\t\t\t\t\tclass:selected={selected_image === i}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{/each}\n\t\t\t
\n\t\t\n\t{/if}\n\n\t\n\t\t
\n\t\t\t{#each _value as [image, caption], i}\n\t\t\t\t (selected_image = can_zoom ? i : selected_image)}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t{#if caption}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{caption}\n\t\t\t\t\t\t
\n\t\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t{/each}\n\t\t
\n\t\n{/if}\n\n\n","\n\n\n\t\n\t\n\n","export { default as Component } from \"./Gallery.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"Array<{ name: string } | [{ name: string }, string]>\"\n\t},\n\tdescription: {\n\t\tpayload: \"list of objects, with filename and optional caption,\"\n\t}\n});\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.34c6276f.js b/gradio/templates/frontend/assets/index.34c6276f.js new file mode 100644 index 0000000000000000000000000000000000000000..ec151a72663c8d000b01829fe20a9ddd8f0d927f --- /dev/null +++ b/gradio/templates/frontend/assets/index.34c6276f.js @@ -0,0 +1,2 @@ +import{S as L,i as M,s as j,F as w,B as o,O as c,f as g,E as H,p as v,q as S,c as d,m as h,o as b,t as T,l as k,v as q,a7 as B,G as C,g as E,h as z,x as D}from"./index.37b24c07.js";import{a as F}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";function G(t){let e,a;return{c(){e=w("div"),o(e,"class",a="prose "+t[1].join(" ")+" svelte-1ybaih5"),o(e,"id",t[0]),c(e,"min",t[4]),c(e,"hide",!t[3])},m(s,i){g(s,e,i),e.innerHTML=t[2]},p(s,[i]){i&4&&(e.innerHTML=s[2]),i&2&&a!==(a="prose "+s[1].join(" ")+" svelte-1ybaih5")&&o(e,"class",a),i&1&&o(e,"id",s[0]),i&18&&c(e,"min",s[4]),i&10&&c(e,"hide",!s[3])},i:H,o:H,d(s){s&&v(e)}}}function O(t,e,a){let{elem_id:s=""}=e,{elem_classes:i=[]}=e,{value:m}=e,{visible:u=!0}=e,{min_height:f=!1}=e;const l=S();return t.$$set=n=>{"elem_id"in n&&a(0,s=n.elem_id),"elem_classes"in n&&a(1,i=n.elem_classes),"value"in n&&a(2,m=n.value),"visible"in n&&a(3,u=n.visible),"min_height"in n&&a(4,f=n.min_height)},t.$$.update=()=>{t.$$.dirty&4&&l("change")},[s,i,m,u,f]}class A extends L{constructor(e){super(),M(this,e,O,G,j,{elem_id:0,elem_classes:1,value:2,visible:3,min_height:4})}}function I(t){let e,a,s,i,m;const u=[t[4],{variant:"center"}];let f={};for(let l=0;l{"label"in _&&a(5,s=_.label),"elem_id"in _&&a(0,i=_.elem_id),"elem_classes"in _&&a(1,m=_.elem_classes),"visible"in _&&a(2,u=_.visible),"value"in _&&a(3,f=_.value),"loading_status"in _&&a(4,l=_.loading_status)},t.$$.update=()=>{t.$$.dirty&32&&n("change")},[i,m,u,f,l,s,r]}class N extends L{constructor(e){super(),M(this,e,K,J,j,{label:5,elem_id:0,elem_classes:1,visible:2,value:3,loading_status:4})}}var R=N;const U=["static"],V=t=>({type:{payload:"string"},description:{payload:"HTML output"}});export{R as Component,V as document,U as modes}; +//# sourceMappingURL=index.34c6276f.js.map diff --git a/gradio/templates/frontend/assets/index.34c6276f.js.map b/gradio/templates/frontend/assets/index.34c6276f.js.map new file mode 100644 index 0000000000000000000000000000000000000000..f9b0cf06f16d29c843c041da0f59963e2c21ecea --- /dev/null +++ b/gradio/templates/frontend/assets/index.34c6276f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.34c6276f.js","sources":["../../../../ui/packages/html/src/HTML.svelte","../../../../ui/packages/app/src/components/HTML/HTML.svelte","../../../../ui/packages/app/src/components/HTML/index.ts"],"sourcesContent":["\n\n\n\t{@html value}\n\n\n\n","\n\n\n\t\n\t
\n\t\t\n\t
\n
\n\n\n","export { default as Component } from \"./HTML.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"string\"\n\t},\n\tdescription: {\n\t\tpayload: \"HTML output\"\n\t}\n});\n"],"names":[],"mappings":"8TAee,KAAa,KAAK,GAAG,8BAE/B,gBADO,kBAEE,cAJd,qBAMQ,iCAAA,2BALO,KAAa,KAAK,GAAG,mDAE/B,sBADO,wBAEE,oDAfF,UAAkB,OAClB,sBACA,YACA,UAAmB,OACnB,aAAa,WAElB,GAAW,mOAEP,EAAS,QAAQ,wKCSR,+HAGL,MAAkB,MAAgB,SAAW,8LAFvC,MAAgB,SAAW,SAAS,4BAAxD,sDADmB,yDAGL,MAAkB,MAAgB,SAAW,qIAFvC,MAAgB,SAAW,SAAS,8OAFN,uUAZvC,YACA,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAgB,OAChB,yBAEL,GAAW,uSAEP,EAAS,QAAQ,gKCff,GAAQ,CAAC,QAAQ,EAEjB,EAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,cAEX"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.37b24c07.js b/gradio/templates/frontend/assets/index.37b24c07.js new file mode 100644 index 0000000000000000000000000000000000000000..016d054c6b13e92d5066c453b9c3db7950555756 --- /dev/null +++ b/gradio/templates/frontend/assets/index.37b24c07.js @@ -0,0 +1,16 @@ +const rr=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))o(n);new MutationObserver(n=>{for(const s of n)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function r(n){const s={};return n.integrity&&(s.integrity=n.integrity),n.referrerpolicy&&(s.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?s.credentials="include":n.crossorigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(n){if(n.ep)return;n.ep=!0;const s=r(n);fetch(n.href,s)}};rr();var Te={},we={},ot={exports:{}},O=String,Pt=function(){return{isColorSupported:!1,reset:O,bold:O,dim:O,italic:O,underline:O,inverse:O,hidden:O,strikethrough:O,black:O,red:O,green:O,yellow:O,blue:O,magenta:O,cyan:O,white:O,gray:O,bgBlack:O,bgRed:O,bgGreen:O,bgYellow:O,bgBlue:O,bgMagenta:O,bgCyan:O,bgWhite:O}};ot.exports=Pt();ot.exports.createColors=Pt;Object.defineProperty(we,"__esModule",{value:!0});we.dim=nr;we.default=void 0;var ne=or(ot.exports);function or(e){return e&&e.__esModule?e:{default:e}}let lt=new Set;function Ve(e,t,r){typeof process<"u"&&{}.JEST_WORKER_ID||r&<.has(r)||(r&<.add(r),console.warn(""),t.forEach(o=>console.warn(e,"-",o)))}function nr(e){return ne.default.dim(e)}var ir={info(e,t){Ve(ne.default.bold(ne.default.cyan("info")),...Array.isArray(e)?[e]:[t,e])},warn(e,t){Ve(ne.default.bold(ne.default.yellow("warn")),...Array.isArray(e)?[e]:[t,e])},risk(e,t){Ve(ne.default.bold(ne.default.magenta("risk")),...Array.isArray(e)?[e]:[t,e])}};we.default=ir;Object.defineProperty(Te,"__esModule",{value:!0});Te.default=void 0;var sr=ar(we);function ar(e){return e&&e.__esModule?e:{default:e}}function pe({version:e,from:t,to:r}){sr.default.warn(`${t}-color-renamed`,[`As of Tailwind CSS ${e}, \`${t}\` has been renamed to \`${r}\`.`,"Update your configuration file to silence this warning."])}var lr={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843"},rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337"},get lightBlue(){return pe({version:"v2.2",from:"lightBlue",to:"sky"}),this.sky},get warmGray(){return pe({version:"v3.0",from:"warmGray",to:"stone"}),this.stone},get trueGray(){return pe({version:"v3.0",from:"trueGray",to:"neutral"}),this.neutral},get coolGray(){return pe({version:"v3.0",from:"coolGray",to:"gray"}),this.gray},get blueGray(){return pe({version:"v3.0",from:"blueGray",to:"slate"}),this.slate}};Te.default=lr;let We=Te;var ct=(We.__esModule?We:{default:We}).default;const No=["red","green","blue","yellow","purple","teal","orange","cyan","lime","pink"],cr=[{color:"red",primary:600,secondary:100},{color:"green",primary:600,secondary:100},{color:"blue",primary:600,secondary:100},{color:"yellow",primary:500,secondary:100},{color:"purple",primary:600,secondary:100},{color:"teal",primary:600,secondary:100},{color:"orange",primary:600,secondary:100},{color:"cyan",primary:600,secondary:100},{color:"lime",primary:500,secondary:100},{color:"pink",primary:600,secondary:100}],qo=cr.reduce((e,{color:t,primary:r,secondary:o})=>({...e,[t]:{primary:ct[t][r],secondary:ct[t][o]}}),{}),fr="modulepreload",ft={},ur="./",ut=function(t,r){return!r||r.length===0?t():Promise.all(r.map(o=>{if(o=`${ur}${o}`,o in ft)return;ft[o]=!0;const n=o.endsWith(".css"),s=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${s}`))return;const i=document.createElement("link");if(i.rel=n?"stylesheet":fr,n||(i.as="script",i.crossOrigin=""),i.href=o,document.head.appendChild(i),n)return new Promise((a,c)=>{i.addEventListener("load",a),i.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())};function F(){}const nt=e=>e;function jt(e,t){for(const r in t)e[r]=t[r];return e}function Rt(e){return e()}function dt(){return Object.create(null)}function te(e){e.forEach(Rt)}function ye(e){return typeof e=="function"}function ve(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}let xe;function dr(e,t){return xe||(xe=document.createElement("a")),xe.href=t,e===xe.href}function pr(e){return Object.keys(e).length===0}function Ft(e,...t){if(e==null)return F;const r=e.subscribe(...t);return r.unsubscribe?()=>r.unsubscribe():r}function Ce(e,t,r){e.$$.on_destroy.push(Ft(t,r))}function Tt(e,t,r,o){if(e){const n=It(e,t,r,o);return e[0](n)}}function It(e,t,r,o){return e[1]&&o?jt(r.ctx.slice(),e[1](o(t))):r.ctx}function Dt(e,t,r,o){if(e[2]&&o){const n=e[2](o(r));if(t.dirty===void 0)return n;if(typeof n=="object"){const s=[],i=Math.max(t.dirty.length,n.length);for(let a=0;a32){const t=[],r=e.ctx.length/32;for(let o=0;owindow.performance.now():()=>Date.now(),it=Gt?e=>requestAnimationFrame(e):F;const ce=new Set;function Vt(e){ce.forEach(t=>{t.c(e)||(ce.delete(t),t.f())}),ce.size!==0&&it(Vt)}function st(e){let t;return ce.size===0&&it(Vt),{promise:new Promise(r=>{ce.add(t={c:e,f:r})}),abort(){ce.delete(t)}}}function z(e,t){e.appendChild(t)}function Wt(e){if(!e)return document;const t=e.getRootNode?e.getRootNode():e.ownerDocument;return t&&t.host?t:e.ownerDocument}function gr(e){const t=C("style");return mr(Wt(e),t),t.sheet}function mr(e,t){z(e.head||e,t)}function v(e,t,r){e.insertBefore(t,r||null)}function w(e){e.parentNode.removeChild(e)}function Ht(e,t){for(let r=0;re.removeEventListener(t,r,o)}function Oo(e){return function(t){return t.preventDefault(),e.call(this,t)}}function hr(e){return function(t){return t.stopPropagation(),e.call(this,t)}}function _(e,t,r){r==null?e.removeAttribute(t):e.getAttribute(t)!==r&&e.setAttribute(t,r)}function Po(e,t){const r=Object.getOwnPropertyDescriptors(e.__proto__);for(const o in t)t[o]==null?e.removeAttribute(o):o==="style"?e.style.cssText=t[o]:o==="__value"?e.value=e[o]=t[o]:r[o]&&r[o].set?e[o]=t[o]:_(e,o,t[o])}function jo(e){return e===""?null:+e}function _r(e){return Array.from(e.childNodes)}function H(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function Ro(e,t){e.value=t??""}function G(e,t,r,o){r===null?e.style.removeProperty(t):e.style.setProperty(t,r,o?"important":"")}let Ae;function br(){if(Ae===void 0){Ae=!1;try{typeof window<"u"&&window.parent&&window.parent.document}catch{Ae=!0}}return Ae}function Fo(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");const o=C("iframe");o.setAttribute("style","display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;"),o.setAttribute("aria-hidden","true"),o.tabIndex=-1;const n=br();let s;return n?(o.src="data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n else\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { stylesheet } = info;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n info.rules = {};\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n else if (callback) {\n callback();\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst ATTR_REGEX = /[&\"]/g;\nconst CONTENT_REGEX = /[&<]/g;\n/**\n * Note: this method is performance sensitive and has been optimized\n * https://github.com/sveltejs/svelte/pull/5701\n */\nfunction escape(value, is_attr = false) {\n const str = String(value);\n const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n pattern.lastIndex = 0;\n let escaped = '';\n let last = 0;\n while (pattern.test(str)) {\n const i = pattern.lastIndex - 1;\n const ch = str[i];\n escaped += str.substring(last, i) + (ch === '&' ? '&' : (ch === '\"' ? '"' : '<'));\n last = i + 1;\n }\n return escaped + str.substring(last);\n}\nfunction escape_attribute_value(value) {\n // keep booleans, null, and undefined for the sake of `spread`\n const should_escape = typeof value === 'string' || (value && typeof value === 'object');\n return should_escape ? escape(value, true) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape(value, true)}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${style_object[key]};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.49.0' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error(' expects \"this\" attribute to be a string.');\n }\n}\nfunction validate_void_dynamic_element(tag) {\n if (tag && is_void(tag)) {\n throw new Error(` is self-closing and cannot have content.`);\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import type { Config } from \"./types\";\n\nexport function determine_protocol(endpoint: string): {\n\tws_protocol: \"ws\" | \"wss\";\n\thttp_protocol: \"http:\" | \"https:\";\n\thost: string;\n} {\n\tif (endpoint.startsWith(\"http\")) {\n\t\tconst { protocol, host } = new URL(endpoint);\n\n\t\tif (host.endsWith(\"hf.space\")) {\n\t\t\treturn {\n\t\t\t\tws_protocol: \"wss\",\n\t\t\t\thost: host,\n\t\t\t\thttp_protocol: protocol as \"http:\" | \"https:\"\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tws_protocol: protocol === \"https:\" ? \"wss\" : \"ws\",\n\t\t\t\thttp_protocol: protocol as \"http:\" | \"https:\",\n\t\t\t\thost\n\t\t\t};\n\t\t}\n\t}\n\n\t// default to secure if no protocol is provided\n\treturn {\n\t\tws_protocol: \"wss\",\n\t\thttp_protocol: \"https:\",\n\t\thost: endpoint\n\t};\n}\n\nexport const RE_SPACE_NAME = /^[^\\/]*\\/[^\\/]*$/;\nexport const RE_SPACE_DOMAIN = /.*hf\\.space\\/{0,1}$/;\nexport async function process_endpoint(app_reference: string): Promise<{\n\tspace_id: string | false;\n\thost: string;\n\tws_protocol: \"ws\" | \"wss\";\n\thttp_protocol: \"http:\" | \"https:\";\n}> {\n\tconst _app_reference = app_reference.trim();\n\n\tif (RE_SPACE_NAME.test(_app_reference)) {\n\t\tconst _host = (\n\t\t\tawait (\n\t\t\t\tawait fetch(`https://huggingface.co/api/spaces/${_app_reference}/host`)\n\t\t\t).json()\n\t\t).host;\n\t\treturn {\n\t\t\tspace_id: app_reference,\n\t\t\t...determine_protocol(_host)\n\t\t};\n\t}\n\n\tif (RE_SPACE_DOMAIN.test(_app_reference)) {\n\t\tconst { ws_protocol, http_protocol, host } =\n\t\t\tdetermine_protocol(_app_reference);\n\n\t\treturn {\n\t\t\tspace_id: host.replace(\".hf.space\", \"\"),\n\t\t\tws_protocol,\n\t\t\thttp_protocol,\n\t\t\thost\n\t\t};\n\t}\n\n\treturn {\n\t\tspace_id: false,\n\t\t...determine_protocol(_app_reference)\n\t};\n}\n\nexport function map_names_to_ids(fns: Config[\"dependencies\"]) {\n\tlet apis: Record = {};\n\n\tfns.forEach(({ api_name }, i) => {\n\t\tif (api_name) apis[api_name] = i;\n\t});\n\n\treturn apis;\n}\n\nconst RE_DISABLED_DISCUSSION =\n\t/^(?=[^]*\\b[dD]iscussions{0,1}\\b)(?=[^]*\\b[dD]isabled\\b)[^]*$/;\nexport async function discussions_enabled(space_id: string) {\n\ttry {\n\t\tconst r = await fetch(\n\t\t\t`https://huggingface.co/api/spaces/${space_id}/discussions`,\n\t\t\t{\n\t\t\t\tmethod: \"HEAD\"\n\t\t\t}\n\t\t);\n\t\tconst error = r.headers.get(\"x-error-message\");\n\n\t\tif (error && RE_DISABLED_DISCUSSION.test(error)) return false;\n\t\telse return true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n","import {\n\tprocess_endpoint,\n\tRE_SPACE_NAME,\n\tmap_names_to_ids,\n\tdiscussions_enabled\n} from \"./utils\";\n\nimport type {\n\tEventType,\n\tEventListener,\n\tListenerMap,\n\tEvent,\n\tConfig,\n\tPayload,\n\tPostResponse,\n\tUploadResponse,\n\tStatus,\n\tSpaceStatus,\n\tSpaceStatusCallback\n} from \"./types\";\n\ntype event = (\n\teventType: K,\n\tlistener: EventListener\n) => ReturnType;\ntype predict = (endpoint: string, payload: Payload) => {};\n\ntype client_return = {\n\tpredict: predict;\n\tconfig: Config;\n\ton: event;\n\toff: event;\n\tcancel: (endpoint: string, fn_index?: number) => void;\n};\n\nconst QUEUE_FULL_MSG = \"This application is too busy. Keep trying!\";\nconst BROKEN_CONNECTION_MSG = \"Connection errored out.\";\n\nexport async function post_data(\n\turl: string,\n\tbody: unknown\n): Promise<[PostResponse, number]> {\n\ttry {\n\t\tvar response = await fetch(url, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify(body),\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t} catch (e) {\n\t\treturn [{ error: BROKEN_CONNECTION_MSG }, 500];\n\t}\n\tconst output: PostResponse = await response.json();\n\treturn [output, response.status];\n}\n\nexport async function upload_files(\n\troot: string,\n\tfiles: Array\n): Promise {\n\tconst formData = new FormData();\n\tfiles.forEach((file) => {\n\t\tformData.append(\"files\", file);\n\t});\n\ttry {\n\t\tvar response = await fetch(`${root}/upload`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData\n\t\t});\n\t} catch (e) {\n\t\treturn { error: BROKEN_CONNECTION_MSG };\n\t}\n\tconst output: UploadResponse[\"files\"] = await response.json();\n\treturn { files: output };\n}\n\nexport async function client(\n\tapp_reference: string,\n\tspace_status_callback?: SpaceStatusCallback\n): Promise {\n\treturn new Promise(async (res, rej) => {\n\t\tconst return_obj = {\n\t\t\tpredict,\n\t\t\ton,\n\t\t\toff,\n\t\t\tcancel\n\t\t};\n\n\t\tconst listener_map: ListenerMap = {};\n\t\tconst { ws_protocol, http_protocol, host, space_id } =\n\t\t\tawait process_endpoint(app_reference);\n\t\tconst session_hash = Math.random().toString(36).substring(2);\n\t\tconst ws_map = new Map();\n\t\tconst last_status: Record = {};\n\t\tlet config: Config;\n\t\tlet api_map: Record = {};\n\n\t\tfunction config_success(_config: Config) {\n\t\t\tconfig = _config;\n\t\t\tapi_map = map_names_to_ids(_config?.dependencies || []);\n\t\t\treturn {\n\t\t\t\tconfig,\n\t\t\t\t...return_obj\n\t\t\t};\n\t\t}\n\n\t\tfunction on(eventType: K, listener: EventListener) {\n\t\t\tconst narrowed_listener_map: ListenerMap = listener_map;\n\t\t\tlet listeners = narrowed_listener_map[eventType] || [];\n\t\t\tnarrowed_listener_map[eventType] = listeners;\n\t\t\tlisteners?.push(listener);\n\n\t\t\treturn { ...return_obj, config };\n\t\t}\n\n\t\tfunction off(\n\t\t\teventType: K,\n\t\t\tlistener: EventListener\n\t\t) {\n\t\t\tconst narrowed_listener_map: ListenerMap = listener_map;\n\t\t\tlet listeners = narrowed_listener_map[eventType] || [];\n\t\t\tlisteners = listeners?.filter((l) => l !== listener);\n\t\t\tnarrowed_listener_map[eventType] = listeners;\n\n\t\t\treturn { ...return_obj, config };\n\t\t}\n\n\t\tfunction cancel(endpoint: string, fn_index?: number) {\n\t\t\tconst _index =\n\t\t\t\ttypeof fn_index === \"number\" ? fn_index : api_map[endpoint];\n\n\t\t\tfire_event({\n\t\t\t\ttype: \"status\",\n\t\t\t\tendpoint,\n\t\t\t\tfn_index: _index,\n\t\t\t\tstatus: \"complete\",\n\t\t\t\tqueue: false\n\t\t\t});\n\n\t\t\tws_map.get(_index)?.close();\n\t\t}\n\n\t\tfunction fire_event(event: Event) {\n\t\t\tconst narrowed_listener_map: ListenerMap = listener_map;\n\t\t\tlet listeners = narrowed_listener_map[event.type] || [];\n\t\t\tlisteners?.forEach((l) => l(event));\n\t\t}\n\n\t\tasync function handle_space_sucess(status: SpaceStatus) {\n\t\t\tif (space_status_callback) space_status_callback(status);\n\t\t\tif (status.status === \"running\")\n\t\t\t\ttry {\n\t\t\t\t\tconsole.log(host);\n\t\t\t\t\tconfig = await resolve_config(`${http_protocol}//${host}`);\n\t\t\t\t\tres(config_success(config));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (space_status_callback) {\n\t\t\t\t\t\tspace_status_callback({\n\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\tmessage: \"Could not load this space.\",\n\t\t\t\t\t\t\tload_status: \"error\",\n\t\t\t\t\t\t\tdetail: \"NOT_FOUND\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconfig = await resolve_config(`${http_protocol}//${host}`);\n\t\t\tres(config_success(config));\n\t\t} catch (e) {\n\t\t\tif (space_id) {\n\t\t\t\tcheck_space_status(\n\t\t\t\t\tspace_id,\n\t\t\t\t\tRE_SPACE_NAME.test(space_id) ? \"space_name\" : \"subdomain\",\n\t\t\t\t\thandle_space_sucess\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (space_status_callback)\n\t\t\t\t\tspace_status_callback({\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tmessage: \"Could not load this space.\",\n\t\t\t\t\t\tload_status: \"error\",\n\t\t\t\t\t\tdetail: \"NOT_FOUND\"\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tfunction make_predict(endpoint: string, payload: Payload) {\n\t\t\treturn new Promise((res, rej) => {\n\t\t\t\tconst trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n\t\t\t\tlet fn_index =\n\t\t\t\t\ttypeof payload.fn_index === \"number\"\n\t\t\t\t\t\t? payload.fn_index\n\t\t\t\t\t\t: api_map[trimmed_endpoint];\n\n\t\t\t\tif (skip_queue(fn_index, config)) {\n\t\t\t\t\tfire_event({\n\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\tfn_index\n\t\t\t\t\t});\n\n\t\t\t\t\tpost_data(\n\t\t\t\t\t\t`${http_protocol}//${host + config.path}/run${\n\t\t\t\t\t\t\tendpoint.startsWith(\"/\") ? endpoint : `/${endpoint}`\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...payload,\n\t\t\t\t\t\t\tsession_hash\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t\t\t.then(([output, status_code]) => {\n\t\t\t\t\t\t\tif (status_code == 200) {\n\t\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\t\tstatus: \"complete\",\n\t\t\t\t\t\t\t\t\teta: output.average_duration,\n\t\t\t\t\t\t\t\t\tqueue: false\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\t\tdata: output.data\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\t\tmessage: output.error,\n\t\t\t\t\t\t\t\t\tqueue: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\t\tmessage: e.message,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index,\n\t\t\t\t\t\t\t\tqueue: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthrow new Error(e.message);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfire_event({\n\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\tfn_index\n\t\t\t\t\t});\n\n\t\t\t\t\tconst ws_endpoint = `${ws_protocol}://${\n\t\t\t\t\t\thost + config.path\n\t\t\t\t\t}/queue/join`;\n\n\t\t\t\t\tconst websocket = new WebSocket(ws_endpoint);\n\n\t\t\t\t\tws_map.set(fn_index, websocket);\n\t\t\t\t\twebsocket.onclose = (evt) => {\n\t\t\t\t\t\tif (!evt.wasClean) {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\t\tmessage: BROKEN_CONNECTION_MSG,\n\t\t\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\twebsocket.onmessage = function (event) {\n\t\t\t\t\t\tconst _data = JSON.parse(event.data);\n\t\t\t\t\t\tconst { type, status, data } = handle_message(\n\t\t\t\t\t\t\t_data,\n\t\t\t\t\t\t\tlast_status[fn_index]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (type === \"update\" && status) {\n\t\t\t\t\t\t\t// call 'status' listeners\n\t\t\t\t\t\t\tfire_event({ type: \"status\", endpoint, fn_index, ...status });\n\t\t\t\t\t\t\tif (status.status === \"error\") {\n\t\t\t\t\t\t\t\twebsocket.close();\n\t\t\t\t\t\t\t\trej(status);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === \"hash\") {\n\t\t\t\t\t\t\twebsocket.send(JSON.stringify({ fn_index, session_hash }));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if (type === \"data\") {\n\t\t\t\t\t\t\twebsocket.send(JSON.stringify({ ...payload, session_hash }));\n\t\t\t\t\t\t} else if (type === \"complete\") {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t...status,\n\t\t\t\t\t\t\t\tstatus: status?.status!,\n\t\t\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\twebsocket.close();\n\t\t\t\t\t\t} else if (type === \"generating\") {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t...status,\n\t\t\t\t\t\t\t\tstatus: status?.status!,\n\t\t\t\t\t\t\t\tqueue: true,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\tfire_event({\n\t\t\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\t\t\tdata: data.data,\n\t\t\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t\t\tfn_index\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tres({ data: data.data });\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Run a prediction.\n\t\t * @param endpoint - The prediction endpoint to use.\n\t\t * @param status_callback - A function that is called with the current status of the prediction immediately and every time it updates.\n\t\t * @return Returns the data for the prediction or an error message.\n\t\t */\n\t\tfunction predict(endpoint: string, payload: Payload) {\n\t\t\treturn make_predict(endpoint, payload);\n\t\t}\n\t});\n}\n\nfunction skip_queue(id: number, config: Config) {\n\treturn (\n\t\t!(config?.dependencies?.[id].queue === null\n\t\t\t? config.enable_queue\n\t\t\t: config?.dependencies?.[id].queue) || false\n\t);\n}\n\nasync function resolve_config(endpoint?: string): Promise {\n\tif (window.gradio_config && location.origin !== \"http://localhost:9876\") {\n\t\tconst path = window.gradio_config.root;\n\t\tconst config = window.gradio_config;\n\t\tconfig.root = endpoint + config.root;\n\t\treturn { ...config, path: path };\n\t} else if (endpoint) {\n\t\tlet response = await fetch(`${endpoint}/config`);\n\n\t\tif (response.status === 200) {\n\t\t\tconst config = await response.json();\n\t\t\tconfig.path = config.path ?? \"\";\n\t\t\tconfig.root = endpoint;\n\t\t\treturn config;\n\t\t} else {\n\t\t\tthrow new Error(\"Could not get config.\");\n\t\t}\n\t}\n\n\tthrow new Error(\"No config or app endpoint found\");\n}\n\nasync function check_space_status(\n\tid: string,\n\ttype: \"subdomain\" | \"space_name\",\n\tspace_status_callback: SpaceStatusCallback\n) {\n\tlet endpoint =\n\t\ttype === \"subdomain\"\n\t\t\t? `https://huggingface.co/api/spaces/by-subdomain/${id}`\n\t\t\t: `https://huggingface.co/api/spaces/${id}`;\n\tlet response;\n\tlet _status;\n\ttry {\n\t\tresponse = await fetch(endpoint);\n\t\t_status = response.status;\n\t\tif (_status !== 200) {\n\t\t\tthrow new Error();\n\t\t}\n\t\tresponse = await response.json();\n\t} catch (e) {\n\t\tspace_status_callback({\n\t\t\tstatus: \"error\",\n\t\t\tload_status: \"error\",\n\t\t\tmessage: \"Could not get space status\",\n\t\t\tdetail: \"NOT_FOUND\"\n\t\t});\n\t\treturn;\n\t}\n\n\tif (!response || _status !== 200) return;\n\tconst {\n\t\truntime: { stage },\n\t\tid: space_name\n\t} = response;\n\n\tswitch (stage) {\n\t\tcase \"STOPPED\":\n\t\tcase \"SLEEPING\":\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"sleeping\",\n\t\t\t\tload_status: \"pending\",\n\t\t\t\tmessage: \"Space is asleep. Waking it up...\",\n\t\t\t\tdetail: stage\n\t\t\t});\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tcheck_space_status(id, type, space_status_callback);\n\t\t\t}, 1000);\n\t\t\tbreak;\n\t\t// poll for status\n\t\tcase \"RUNNING\":\n\t\tcase \"RUNNING_BUILDING\":\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"running\",\n\t\t\t\tload_status: \"complete\",\n\t\t\t\tmessage: \"\",\n\t\t\t\tdetail: stage\n\t\t\t});\n\t\t\t// load_config(source);\n\t\t\t// launch\n\t\t\tbreak;\n\t\tcase \"BUILDING\":\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"building\",\n\t\t\t\tload_status: \"pending\",\n\t\t\t\tmessage: \"Space is building...\",\n\t\t\t\tdetail: stage\n\t\t\t});\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tcheck_space_status(id, type, space_status_callback);\n\t\t\t}, 1000);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tspace_status_callback({\n\t\t\t\tstatus: \"space_error\",\n\t\t\t\tload_status: \"error\",\n\t\t\t\tmessage: \"This space is experiencing an issue.\",\n\t\t\t\tdetail: stage,\n\t\t\t\tdiscussions_enabled: await discussions_enabled(space_name)\n\t\t\t});\n\t\t\tbreak;\n\t}\n}\n\nfunction handle_message(\n\tdata: any,\n\tlast_status: Status[\"status\"]\n): {\n\ttype: \"hash\" | \"data\" | \"update\" | \"complete\" | \"generating\" | \"none\";\n\tdata?: any;\n\tstatus?: Status;\n} {\n\tconst queue = true;\n\tswitch (data.msg) {\n\t\tcase \"send_data\":\n\t\t\treturn { type: \"data\" };\n\t\tcase \"send_hash\":\n\t\t\treturn { type: \"hash\" };\n\t\tcase \"queue_full\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tmessage: QUEUE_FULL_MSG,\n\t\t\t\t\tstatus: \"error\"\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"estimation\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tstatus: last_status || \"pending\",\n\t\t\t\t\tsize: data.queue_size,\n\t\t\t\t\tposition: data.rank,\n\t\t\t\t\teta: data.rank_eta\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"progress\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tprogress: data.progress_data\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"process_generating\":\n\t\t\treturn {\n\t\t\t\ttype: \"generating\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tmessage: !data.success ? data.output.error : null,\n\t\t\t\t\tstatus: data.success ? \"generating\" : \"error\",\n\t\t\t\t\tprogress: data.progress_data,\n\t\t\t\t\teta: data.average_duration\n\t\t\t\t},\n\t\t\t\tdata: data.success ? data.output : null\n\t\t\t};\n\t\tcase \"process_completed\":\n\t\t\treturn {\n\t\t\t\ttype: \"complete\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tmessage: !data.success ? data.output.error : undefined,\n\t\t\t\t\tstatus: data.success ? \"complete\" : \"error\",\n\t\t\t\t\tprogress: data.progress_data,\n\t\t\t\t\teta: data.output.average_duration\n\t\t\t\t},\n\t\t\t\tdata: data.success ? data.output : null\n\t\t\t};\n\t\tcase \"process_starts\":\n\t\t\treturn {\n\t\t\t\ttype: \"update\",\n\t\t\t\tstatus: {\n\t\t\t\t\tqueue,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tsize: data.rank,\n\t\t\t\t\tposition: 0\n\t\t\t\t}\n\t\t\t};\n\t}\n\n\treturn { type: \"none\", status: { status: \"error\", queue } };\n}\n","export default \"__VITE_ASSET__a79177ad__\"","\n\n\n\t
\n\t\t\n\t
\n\t{#if display && space && info}\n\t\t
\n\t\t\t\n\t\t\t\t{space}\n\t\t\t\n\t\t\t\n\t\t\t\tbuilt with\n\t\t\t\tGradio.\n\t\t\t\n\t\t\t\n\t\t\t\tHosted on\n\t\t\t\t Spaces\n\t\t\t\n\t\t
\n\t{/if}\n\n\n\n","// import mime from \"mime-types\";\n\nexport const playable = (): boolean => {\n\t// let video_element = document.createElement(\"video\");\n\t// let mime_type = mime.lookup(filename);\n\t// return video_element.canPlayType(mime_type) != \"\";\n\treturn true; // FIX BEFORE COMMIT - mime import causing issues\n};\n\nexport const deepCopy = (obj: T): T => {\n\treturn JSON.parse(JSON.stringify(obj));\n};\n\nexport function randInt(min: number, max: number): number {\n\treturn Math.floor(Math.random() * (max - min) + min);\n}\n\nexport const getNextColor = (index: number, alpha: number = 1): string => {\n\tlet default_colors = [\n\t\t[255, 99, 132],\n\t\t[54, 162, 235],\n\t\t[240, 176, 26],\n\t\t[153, 102, 255],\n\t\t[75, 192, 192],\n\t\t[255, 159, 64],\n\t\t[194, 88, 74],\n\t\t[44, 102, 219],\n\t\t[44, 163, 23],\n\t\t[191, 46, 217],\n\t\t[160, 162, 162],\n\t\t[163, 151, 27]\n\t];\n\tif (index < default_colors.length) {\n\t\tvar color_set = default_colors[index];\n\t} else {\n\t\tvar color_set = [randInt(64, 196), randInt(64, 196), randInt(64, 196)];\n\t}\n\treturn (\n\t\t\"rgba(\" +\n\t\tcolor_set[0] +\n\t\t\", \" +\n\t\tcolor_set[1] +\n\t\t\", \" +\n\t\tcolor_set[2] +\n\t\t\", \" +\n\t\talpha +\n\t\t\")\"\n\t);\n};\n\nexport const prettyBytes = (bytes: number): string => {\n\tlet units = [\"B\", \"KB\", \"MB\", \"GB\", \"PB\"];\n\tlet i = 0;\n\twhile (bytes > 1024) {\n\t\tbytes /= 1024;\n\t\ti++;\n\t}\n\tlet unit = units[i];\n\treturn bytes.toFixed(1) + \" \" + unit;\n};\n\nexport const prettySI = (num: number): string => {\n\tlet units = [\"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\"];\n\tlet i = 0;\n\twhile (num > 1000 && i < units.length - 1) {\n\t\tnum /= 1000;\n\t\ti++;\n\t}\n\tlet unit = units[i];\n\treturn (Number.isInteger(num) ? num : num.toFixed(1)) + unit;\n};\n","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n let len = node.getTotalLength();\n const style = getComputedStyle(node);\n if (style.strokeLinecap !== 'butt') {\n len += parseInt(style.strokeWidth);\n }\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","import { writable, get } from \"svelte/store\";\n\nexport interface LoadingStatus {\n\teta: number | null;\n\tstatus: \"pending\" | \"error\" | \"complete\" | \"generating\";\n\tqueue: boolean;\n\tqueue_position: number | null;\n\tqueue_size?: number;\n\tfn_index: number;\n\tmessage?: string | null;\n\tscroll_to_output?: boolean;\n\tvisible?: boolean;\n\tprogress?: Array<{\n\t\tprogress: number | null;\n\t\tindex: number | null;\n\t\tlength: number | null;\n\t\tunit: string | null;\n\t\tdesc: string | null;\n\t}>;\n}\n\nexport type LoadingStatusCollection = Record;\n\nexport function create_loading_status_store() {\n\tconst store = writable({});\n\n\tconst fn_inputs: Array> = [];\n\tconst fn_outputs: Array> = [];\n\tconst pending_outputs = new Map();\n\tconst pending_inputs = new Map();\n\n\tconst inputs_to_update = new Map();\n\tconst fn_status: Array = [];\n\n\tfunction update({\n\t\tfn_index,\n\t\tstatus,\n\t\tqueue = true,\n\t\tsize,\n\t\tposition = null,\n\t\teta = null,\n\t\tmessage = null,\n\t\tprogress\n\t}: {\n\t\tfn_index: LoadingStatus[\"fn_index\"];\n\t\tstatus: LoadingStatus[\"status\"];\n\t\tqueue?: LoadingStatus[\"queue\"];\n\t\tsize?: LoadingStatus[\"queue_size\"];\n\t\tposition?: LoadingStatus[\"queue_position\"];\n\t\teta?: LoadingStatus[\"eta\"];\n\t\tmessage?: LoadingStatus[\"message\"];\n\t\tprogress?: LoadingStatus[\"progress\"];\n\t}) {\n\t\tconst outputs = fn_outputs[fn_index];\n\t\tconst inputs = fn_inputs[fn_index];\n\t\tconst last_status = fn_status[fn_index];\n\n\t\tconst outputs_to_update = outputs.map((id) => {\n\t\t\tlet new_status: LoadingStatus[\"status\"];\n\n\t\t\tconst pending_count = pending_outputs.get(id) || 0;\n\n\t\t\t// from (pending -> error) | complete - decrement pending count\n\t\t\tif (last_status === \"pending\" && status !== \"pending\") {\n\t\t\t\tlet new_count = pending_count - 1;\n\n\t\t\t\tpending_outputs.set(id, new_count < 0 ? 0 : new_count);\n\n\t\t\t\tnew_status = new_count > 0 ? \"pending\" : status;\n\n\t\t\t\t// from pending -> pending - do nothing\n\t\t\t} else if (last_status === \"pending\" && status === \"pending\") {\n\t\t\t\tnew_status = \"pending\";\n\n\t\t\t\t// (error | complete) -> pending - - increment pending count\n\t\t\t} else if (last_status !== \"pending\" && status === \"pending\") {\n\t\t\t\tnew_status = \"pending\";\n\t\t\t\tpending_outputs.set(id, pending_count + 1);\n\t\t\t} else {\n\t\t\t\tnew_status = status;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tqueue_position: position,\n\t\t\t\tqueue_size: size,\n\t\t\t\teta: eta,\n\t\t\t\tstatus: new_status,\n\t\t\t\tmessage: message,\n\t\t\t\tprogress: progress\n\t\t\t};\n\t\t});\n\n\t\tinputs.map((id) => {\n\t\t\tconst pending_count = pending_inputs.get(id) || 0;\n\n\t\t\t// from (pending -> error) | complete - decrement pending count\n\t\t\tif (last_status === \"pending\" && status !== \"pending\") {\n\t\t\t\tlet new_count = pending_count - 1;\n\t\t\t\tpending_inputs.set(id, new_count < 0 ? 0 : new_count);\n\t\t\t\tinputs_to_update.set(id, status);\n\t\t\t} else if (last_status !== \"pending\" && status === \"pending\") {\n\t\t\t\tpending_inputs.set(id, pending_count + 1);\n\t\t\t\tinputs_to_update.set(id, status);\n\t\t\t} else {\n\t\t\t\tinputs_to_update.delete(id);\n\t\t\t}\n\t\t});\n\n\t\tstore.update((outputs: LoadingStatusCollection) => {\n\t\t\toutputs_to_update.forEach(\n\t\t\t\t({\n\t\t\t\t\tid,\n\t\t\t\t\tqueue_position,\n\t\t\t\t\tqueue_size,\n\t\t\t\t\teta,\n\t\t\t\t\tstatus,\n\t\t\t\t\tmessage,\n\t\t\t\t\tprogress\n\t\t\t\t}) => {\n\t\t\t\t\toutputs[id] = {\n\t\t\t\t\t\tqueue: queue,\n\t\t\t\t\t\tqueue_size: queue_size,\n\t\t\t\t\t\tqueue_position: queue_position,\n\t\t\t\t\t\teta: eta,\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tprogress,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tfn_index\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn outputs;\n\t\t});\n\t\tfn_status[fn_index] = status;\n\t}\n\n\tfunction register(\n\t\tindex: number,\n\t\tinputs: Array,\n\t\toutputs: Array\n\t) {\n\t\tfn_inputs[index] = inputs;\n\t\tfn_outputs[index] = outputs;\n\t}\n\n\treturn {\n\t\tupdate,\n\t\tregister,\n\t\tsubscribe: store.subscribe,\n\t\tget_status_for_fn(i: number) {\n\t\t\treturn fn_status[i];\n\t\t},\n\t\tget_inputs_to_update() {\n\t\t\treturn inputs_to_update;\n\t\t}\n\t};\n}\n\nexport type LoadingStatusType = ReturnType;\nexport const app_state = writable({ autoscroll: false });\n","import { writable } from '../store/index.mjs';\nimport { now, loop, assign } from '../internal/index.mjs';\nimport { linear } from '../easing/index.mjs';\n\nfunction is_date(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n}\n\nfunction tick_spring(ctx, last_value, current_value, target_value) {\n if (typeof current_value === 'number' || is_date(current_value)) {\n // @ts-ignore\n const delta = target_value - current_value;\n // @ts-ignore\n const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0\n const spring = ctx.opts.stiffness * delta;\n const damper = ctx.opts.damping * velocity;\n const acceleration = (spring - damper) * ctx.inv_mass;\n const d = (velocity + acceleration) * ctx.dt;\n if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) {\n return target_value; // settled\n }\n else {\n ctx.settled = false; // signal loop to keep ticking\n // @ts-ignore\n return is_date(current_value) ?\n new Date(current_value.getTime() + d) : current_value + d;\n }\n }\n else if (Array.isArray(current_value)) {\n // @ts-ignore\n return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i]));\n }\n else if (typeof current_value === 'object') {\n const next_value = {};\n for (const k in current_value) {\n // @ts-ignore\n next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]);\n }\n // @ts-ignore\n return next_value;\n }\n else {\n throw new Error(`Cannot spring ${typeof current_value} values`);\n }\n}\nfunction spring(value, opts = {}) {\n const store = writable(value);\n const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts;\n let last_time;\n let task;\n let current_token;\n let last_value = value;\n let target_value = value;\n let inv_mass = 1;\n let inv_mass_recovery_rate = 0;\n let cancel_task = false;\n function set(new_value, opts = {}) {\n target_value = new_value;\n const token = current_token = {};\n if (value == null || opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) {\n cancel_task = true; // cancel any running animation\n last_time = now();\n last_value = new_value;\n store.set(value = target_value);\n return Promise.resolve();\n }\n else if (opts.soft) {\n const rate = opts.soft === true ? .5 : +opts.soft;\n inv_mass_recovery_rate = 1 / (rate * 60);\n inv_mass = 0; // infinite mass, unaffected by spring forces\n }\n if (!task) {\n last_time = now();\n cancel_task = false;\n task = loop(now => {\n if (cancel_task) {\n cancel_task = false;\n task = null;\n return false;\n }\n inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1);\n const ctx = {\n inv_mass,\n opts: spring,\n settled: true,\n dt: (now - last_time) * 60 / 1000\n };\n const next_value = tick_spring(ctx, last_value, value, target_value);\n last_time = now;\n last_value = value;\n store.set(value = next_value);\n if (ctx.settled) {\n task = null;\n }\n return !ctx.settled;\n });\n }\n return new Promise(fulfil => {\n task.promise.then(() => {\n if (token === current_token)\n fulfil();\n });\n });\n }\n const spring = {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe,\n stiffness,\n damping,\n precision\n };\n return spring;\n}\n\nfunction get_interpolator(a, b) {\n if (a === b || a !== a)\n return () => a;\n const type = typeof a;\n if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n throw new Error('Cannot interpolate values of different type');\n }\n if (Array.isArray(a)) {\n const arr = b.map((bi, i) => {\n return get_interpolator(a[i], bi);\n });\n return t => arr.map(fn => fn(t));\n }\n if (type === 'object') {\n if (!a || !b)\n throw new Error('Object cannot be null');\n if (is_date(a) && is_date(b)) {\n a = a.getTime();\n b = b.getTime();\n const delta = b - a;\n return t => new Date(a + t * delta);\n }\n const keys = Object.keys(b);\n const interpolators = {};\n keys.forEach(key => {\n interpolators[key] = get_interpolator(a[key], b[key]);\n });\n return t => {\n const result = {};\n keys.forEach(key => {\n result[key] = interpolators[key](t);\n });\n return result;\n };\n }\n if (type === 'number') {\n const delta = b - a;\n return t => a + t * delta;\n }\n throw new Error(`Cannot interpolate ${type} values`);\n}\nfunction tweened(value, defaults = {}) {\n const store = writable(value);\n let task;\n let target_value = value;\n function set(new_value, opts) {\n if (value == null) {\n store.set(value = new_value);\n return Promise.resolve();\n }\n target_value = new_value;\n let previous_task = task;\n let started = false;\n let { delay = 0, duration = 400, easing = linear, interpolate = get_interpolator } = assign(assign({}, defaults), opts);\n if (duration === 0) {\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n store.set(value = target_value);\n return Promise.resolve();\n }\n const start = now() + delay;\n let fn;\n task = loop(now => {\n if (now < start)\n return true;\n if (!started) {\n fn = interpolate(value, new_value);\n if (typeof duration === 'function')\n duration = duration(value, new_value);\n started = true;\n }\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n const elapsed = now - start;\n if (elapsed > duration) {\n store.set(value = new_value);\n return false;\n }\n // @ts-ignore\n store.set(value = fn(easing(elapsed / duration)));\n return true;\n });\n return task.promise;\n }\n return {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe\n };\n}\n\nexport { spring, tweened };\n","\n\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n
\n\n\n","\n\n\n\n\n\t{#if status === \"pending\"}\n\t\t{#if variant === \"default\" && show_eta_bar}\n\t\t\t\n\t\t{/if}\n\t\t\n\t\t\t{#if progress}\n\t\t\t\t{#each progress as p}\n\t\t\t\t\t{#if p.index != null}\n\t\t\t\t\t\t{#if p.length != null}\n\t\t\t\t\t\t\t{prettySI(p.index || 0)}/{prettySI(p.length)}\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t{prettySI(p.index || 0)}\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{p.unit} | {\" \"}\n\t\t\t\t\t{/if}\n\t\t\t\t{/each}\n\t\t\t{:else if queue_position !== null && queue_size !== undefined && queue_position >= 0}\n\t\t\t\tqueue: {queue_position + 1}/{queue_size} |\n\t\t\t{:else if queue_position === 0}\n\t\t\t\tprocessing |\n\t\t\t{/if}\n\n\t\t\t{#if timer}\n\t\t\t\t{formatted_timer}{eta ? `/${formatted_eta}` : \"\"}s\n\t\t\t{/if}\n\t\t\n\n\t\t{#if last_progress_level != null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{#if progress != null}\n\t\t\t\t\t\t{#each progress as p, i}\n\t\t\t\t\t\t\t{#if p.desc != null || (progress_level && progress_level[i] != null)}\n\t\t\t\t\t\t\t\t{#if i !== 0}\n\t\t\t\t\t\t\t\t\t /\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t{#if p.desc != null}\n\t\t\t\t\t\t\t\t\t{p.desc}\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t{#if p.desc != null && progress_level && progress_level[i] != null}\n\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t{#if progress_level != null}\n\t\t\t\t\t\t\t\t\t{(100 * (progress_level[i] || 0)).toFixed(1)}%\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t{/if}\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{:else}\n\t\t\t\n\t\t{/if}\n\n\t\t{#if !timer}\n\t\t\t

{loading_text}

\n\t\t{/if}\n\t{:else if status === \"error\"}\n\t\tError\n\t\t\n\t\t{#if message_visible}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
Something went wrong
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{message || \"\"}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t{/if}\n\t{/if}\n\n\n\n","\n\n\n\n\n\t{#if (loader_status === \"pending\" || loader_status === \"error\") && !(config && config?.auth_required)}\n\t\t\n\t\t\t
\n\t\t\t\t

{status?.message || \"\"}

\n\t\t\t\t{#if status.status === \"space_error\" && status.discussions_enabled}\n\t\t\t\t\t

\n\t\t\t\t\t\tPlease \n\t\t\t\t\t\t\tcontact the author of the space to let them know.\n\t\t\t\t\t

\n\t\t\t\t{:else}\n\t\t\t\t\t

Please contact the author of the page to let them know.

\n\t\t\t\t{/if}\n\t\t\t
\n\t\t
\n\t{/if}\n\t{#if config?.auth_required && Login}\n\t\t\n\t{:else if config && Blocks}\n\t\t\n\t{/if}\n\n\n\n","import \"@gradio/theme\";\nimport Index from \"./Index.svelte\";\n\ndeclare let BUILD_MODE: string;\ndeclare let GRADIO_VERSION: string;\n\nconst ENTRY_CSS = \"__ENTRY_CSS__\";\n\nlet FONTS: string | [];\n\nFONTS = \"__FONTS_CSS__\";\n\nexport function mount_css(url: string, target: HTMLElement): Promise {\n\tconst existing_link = document.querySelector(`link[href='${url}']`);\n\n\tif (existing_link) return Promise.resolve();\n\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\tlink.href = url;\n\t// @ts-ignore\n\ttarget.appendChild(link);\n\n\treturn new Promise((res, rej) => {\n\t\tlink.addEventListener(\"load\", () => res());\n\t\tlink.addEventListener(\"error\", () =>\n\t\t\trej(new Error(`Unable to preload CSS for ${url}`))\n\t\t);\n\t});\n}\n\nfunction create_custom_element() {\n\tclass GradioApp extends HTMLElement {\n\t\ttheme: \"light\" | \"dark\";\n\n\t\tconstructor() {\n\t\t\tsuper();\n\n\t\t\tthis.theme = \"light\";\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tif (typeof FONTS !== \"string\") {\n\t\t\t\tFONTS.forEach((f) => mount_css(f, document.head));\n\t\t\t}\n\n\t\t\tawait mount_css(ENTRY_CSS, document.head);\n\n\t\t\tconst event = new CustomEvent(\"domchange\", {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: false,\n\t\t\t\tcomposed: true\n\t\t\t});\n\n\t\t\tvar observer = new MutationObserver((mutations) => {\n\t\t\t\tthis.dispatchEvent(event);\n\t\t\t});\n\n\t\t\tobserver.observe(this, { childList: true });\n\n\t\t\tconst host = this.getAttribute(\"host\");\n\t\t\tconst space = this.getAttribute(\"space\");\n\t\t\tconst src = this.getAttribute(\"src\");\n\n\t\t\tconst control_page_title = this.getAttribute(\"control_page_title\");\n\t\t\tconst initial_height = this.getAttribute(\"initial_height\") ?? \"300px\"; // default: 300px\n\t\t\tconst is_embed = this.getAttribute(\"embed\") ?? \"true\"; // default: true\n\t\t\tconst container = this.getAttribute(\"container\") ?? \"true\"; // default: true\n\t\t\tconst info = this.getAttribute(\"info\") ?? true; // default: true\n\t\t\tconst autoscroll = this.getAttribute(\"autoscroll\");\n\t\t\tconst eager = this.getAttribute(\"eager\");\n\n\t\t\tconst app = new Index({\n\t\t\t\ttarget: this,\n\t\t\t\tprops: {\n\t\t\t\t\t// embed source\n\t\t\t\t\tspace: space ? space.trim() : space,\n\t\t\t\t\tsrc: src ? src.trim() : src,\n\t\t\t\t\thost: host ? host.trim() : host,\n\t\t\t\t\t// embed info\n\t\t\t\t\tinfo: info === \"false\" ? false : true,\n\t\t\t\t\tcontainer: container === \"false\" ? false : true,\n\t\t\t\t\tis_embed: is_embed === \"false\" ? false : true,\n\t\t\t\t\tinitial_height: initial_height ?? undefined,\n\t\t\t\t\teager: eager === \"true\" ? true : false,\n\t\t\t\t\t// gradio meta info\n\t\t\t\t\tversion: GRADIO_VERSION,\n\t\t\t\t\ttheme: this.theme,\n\t\t\t\t\t// misc global behaviour\n\t\t\t\t\tautoscroll: autoscroll === \"true\" ? true : false,\n\t\t\t\t\tcontrol_page_title: control_page_title === \"true\" ? true : false,\n\t\t\t\t\t// for gradio docs\n\t\t\t\t\t// TODO: Remove -- i think this is just for autoscroll behavhiour, app vs embeds\n\t\t\t\t\tapp_mode: window.__gradio_mode__ === \"app\"\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tcustomElements.define(\"gradio-app\", GradioApp);\n}\n\ncreate_custom_element();\n"],"file":"assets/index.37b24c07.js"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.3b4ef889.js b/gradio/templates/frontend/assets/index.3b4ef889.js new file mode 100644 index 0000000000000000000000000000000000000000..c3e9381595a261dc1a632f136c9df4ef4fd69a78 --- /dev/null +++ b/gradio/templates/frontend/assets/index.3b4ef889.js @@ -0,0 +1,2 @@ +import{C as ge,E as q,L as Pe}from"./index.cef508a9.js";import{s as Te,t as S,p as be,L as Ve,i as xe,f as _e,u as ye,b as ve,v as qe,j as z,E as G}from"./index.8f4ac20d.js";import{cssLanguage as F,css as $e}from"./index.ec481f8e.js";import{typescriptLanguage as we,jsxLanguage as Ce,tsxLanguage as Qe,javascriptLanguage as K,javascript as Ae}from"./index.de6da618.js";import"./index.37b24c07.js";import"./Blocks.5efe22d4.js";import"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import"./BlockLabel.7ce695d8.js";import"./Empty.ae5c2506.js";/* empty css */import"./Copy.d6bfc6ec.js";import"./Download.5a6e5fa3.js";const Xe=54,ke=1,Ye=55,Me=2,Be=56,Ee=3,D=4,Ge=5,y=6,ee=7,te=8,ae=9,le=10,De=11,Re=12,Ze=13,w=57,Ne=14,R=58,We=20,He=22,re=23,Ie=24,k=26,ne=27,Ue=28,je=31,Je=34,se=36,Le=37,ze=0,Fe=1,Ke={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},et={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},Z={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function tt(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function oe(e){return e==9||e==10||e==13||e==32}let N=null,W=null,H=0;function Y(e,t){let l=e.pos+t;if(H==l&&W==e)return N;let a=e.peek(t);for(;oe(a);)a=e.peek(++t);let r="";for(;tt(a);)r+=String.fromCharCode(a),a=e.peek(++t);return W=e,H=l,N=r?r.toLowerCase():a==at||a==lt?void 0:null}const Oe=60,v=62,M=47,at=63,lt=33,rt=45;function I(e,t){this.name=e,this.parent=t,this.hash=t?t.hash:0;for(let l=0;l-1?new I(Y(a,1)||"",e):e},reduce(e,t){return t==We&&e?e.parent:e},reuse(e,t,l,a){let r=t.type.id;return r==y||r==se?new I(Y(a,1)||"",e):e},hash(e){return e?e.hash:0},strict:!1}),ot=new q((e,t)=>{if(e.next!=Oe){e.next<0&&t.context&&e.acceptToken(w);return}e.advance();let l=e.next==M;l&&e.advance();let a=Y(e,0);if(a===void 0)return;if(!a)return e.acceptToken(l?Ne:y);let r=t.context?t.context.name:null;if(l){if(a==r)return e.acceptToken(De);if(r&&et[r])return e.acceptToken(w,-2);if(t.dialectEnabled(ze))return e.acceptToken(Re);for(let n=t.context;n;n=n.parent)if(n.name==a)return;e.acceptToken(Ze)}else{if(a=="script")return e.acceptToken(ee);if(a=="style")return e.acceptToken(te);if(a=="textarea")return e.acceptToken(ae);if(Ke.hasOwnProperty(a))return e.acceptToken(le);r&&Z[r]&&Z[r][a]?e.acceptToken(w,-1):e.acceptToken(y)}},{contextual:!0}),Ot=new q(e=>{for(let t=0,l=0;;l++){if(e.next<0){l&&e.acceptToken(R);break}if(e.next==rt)t++;else if(e.next==v&&t>=2){l>3&&e.acceptToken(R,-2);break}else t=0;e.advance()}});function it(e){for(;e;e=e.parent)if(e.name=="svg"||e.name=="math")return!0;return!1}const ut=new q((e,t)=>{if(e.next==M&&e.peek(1)==v){let l=t.dialectEnabled(Fe)||it(t.context);e.acceptToken(l?Ge:D,2)}else e.next==v&&e.acceptToken(D,1)});function B(e,t,l){let a=2+e.length;return new q(r=>{for(let n=0,o=0,O=0;;O++){if(r.next<0){O&&r.acceptToken(t);break}if(n==0&&r.next==Oe||n==1&&r.next==M||n>=2&&no?r.acceptToken(t,-o):r.acceptToken(l,-(o-2));break}else if((r.next==10||r.next==13)&&O){r.acceptToken(t,1);break}else n=o=0;r.advance()}})}const pt=B("script",Xe,ke),ct=B("style",Ye,Me),dt=B("textarea",Be,Ee),ft=Te({"Text RawText":S.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":S.angleBracket,TagName:S.tagName,"MismatchedCloseTag/TagName":[S.tagName,S.invalid],AttributeName:S.attributeName,"AttributeValue UnquotedAttributeValue":S.attributeValue,Is:S.definitionOperator,"EntityReference CharacterReference":S.character,Comment:S.blockComment,ProcessingInst:S.processingInstruction,DoctypeDecl:S.documentMeta}),ht=Pe.deserialize({version:14,states:",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%WQ&rO,59fO%`Q&rO,59iO%hQ&rO,59lO%sQ&rO,59nOOOa'#D^'#D^O%{OaO'#CxO&WOaO,59[OOOb'#D_'#D_O&`ObO'#C{O&kObO,59[OOOd'#D`'#D`O&sOdO'#DOO'OOdO,59[OOO`'#Da'#DaO'WO!rO,59[O'_Q#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'dO$fO,59oOOO`,59o,59oO'lQ#|O,59qO'qQ#|O,59rOOO`-E7W-E7WO'vQ&rO'#CsOOQW'#DZ'#DZO(UQ&rO1G.wOOOa1G.w1G.wO(^Q&rO1G/QOOOb1G/Q1G/QO(fQ&rO1G/TOOOd1G/T1G/TO(nQ&rO1G/WOOO`1G/W1G/WOOO`1G/Y1G/YO(yQ&rO1G/YOOOa-E7[-E7[O)RQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)WQ#tO'#C|OOOd-E7^-E7^O)]Q#tO'#DPOOO`-E7_-E7_O)bQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O)gQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rOOO`7+$t7+$tO)rQ#|O,59eO)wQ#|O,59hO)|Q#|O,59kOOO`1G/X1G/XO*RO7[O'#CvO*dOMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O*uO7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+WOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z",stateData:"+s~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OhyO~OS!OOhyO~OS!QOhyO~OS!SOT!TOhyO~OS!TOhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXhgXTgX~OS!fOhyO~OS!gOhyO~OS!hOhyO~OS!iOT!jOhyO~OS!jOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~",goto:"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{}!P!R!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ}bQ!PcQ!RdQ!UeZ!e{}!P!R!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"\u26A0 StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:67,context:st,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,21,30,33,36,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,29,32,35,37,"OpenTag"],["group",-9,14,17,18,19,20,39,40,41,42,"Entity",16,"Entity TextContent",-3,28,31,34,"TextContent Entity"]],propSources:[ft],skippedNodes:[0],repeatNodeCount:9,tokenData:"#%g!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs4ysv-_vw5iwxJ^x}-_}!OKP!O!P-_!P!Q$q!Q![-_![!]!!O!]!^-_!^!_!&W!_!`#$o!`!a&X!a!c-_!c!}!!O!}#R-_#R#S!!O#S#T3V#T#o!!O#o#s-_#s$f$q$f%W-_%W%o!!O%o%p-_%p&a!!O&a&b-_&b1p!!O1p4U-_4U4d!!O4d4e-_4e$IS!!O$IS$I`-_$I`$Ib!!O$Ib$Kh-_$Kh%#t!!O%#t&/x-_&/x&Et!!O&Et&FV-_&FV;'S!!O;'S;:j!&Q;:j;=`4s<%l?&r-_?&r?Ah!!O?Ah?BY$q?BY?Mn!!O?MnO$q!Z$|c`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bX`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UV`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pT`POv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!cpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({W`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!a`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!a`!cpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYkWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]``P!a`!cp!^^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_1n!_!a&X!a#S-_#S#T3V#T#s-_#s$f$q$f;'S-_;'S;=`4s<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/echSkWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!^!_0p!a#S/^#S#T0p#T#s/^#s$f+P$f;'S/^;'S;=`1h<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0uXhSqr0psw0px!P0p!Q!_0p!a#s0p$f;'S0p;'S;=`1b<%l?Ah0p?BY?Mn0pS1eP;=`<%l0p[1kP;=`<%l/^!U1wbhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!U3SP;=`<%l1n!V3bchS`P!a`!cpOq&Xqr3Vrs&}sv3Vvw0pwx(tx!P3V!P!Q&X!Q!^3V!^!_1n!_!a&X!a#s3V#s$f&X$f;'S3V;'S;=`4m<%l?Ah3V?Ah?BY&X?BY?Mn3V?MnO&X!V4pP;=`<%l3V!_4vP;=`<%l-_!Z5SV!`h`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_5rjhSkWc!ROX7dXZ8qZ[7d[^8q^p7dqr:crs8qst@Ttw:cwx8qx!P:c!P!Q7d!Q!]:c!]!^/^!^!_=p!_!a8q!a#S:c#S#T=p#T#s:c#s$f7d$f;'S:c;'S;=`?}<%l?Ah:c?Ah?BY7d?BY?Mn:c?MnO7d!Z7ibkWOX7dXZ8qZ[7d[^8q^p7dqr7drs8qst+Ptw7dwx8qx!]7d!]!^9f!^!a8q!a#S7d#S#T8q#T;'S7d;'S;=`:]<%lO7d!R8tVOp8qqs8qt!]8q!]!^9Z!^;'S8q;'S;=`9`<%lO8q!R9`Oa!R!R9cP;=`<%l8q!Z9mYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z:`P;=`<%l7d!_:jjhSkWOX7dXZ8qZ[7d[^8q^p7dqr:crs8qst/^tw:cwx8qx!P:c!P!Q7d!Q!]:c!]!^<[!^!_=p!_!a8q!a#S:c#S#T=p#T#s:c#s$f7d$f;'S:c;'S;=`?}<%l?Ah:c?Ah?BY7d?BY?Mn:c?MnO7d!_b#d#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!>kdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#V1n#V#W!?y#W#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!@SdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#h1n#h#i!Ab#i#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!AkdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#m1n#m#n!By#n#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!CSdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#d1n#d#e!Db#e#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!DkdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#X1n#X#Y!5]#Y#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!FSchS!a`!cpOq!G_qr!Eyrs!HUsv!Eyvw!Ncwx!Jvx!P!Ey!P!Q!G_!Q!_!Ey!_!a!G_!a!b##T!b#s!Ey#s$f!G_$f;'S!Ey;'S;=`#$i<%l?Ah!Ey?Ah?BY!G_?BY?Mn!Ey?MnO!G_!R!GfY!a`!cpOr!G_rs!HUsv!G_vw!Hpwx!Jvx!a!G_!a!b!Lv!b;'S!G_;'S;=`!N]<%lO!G_q!HZV!cpOv!HUvx!Hpx!a!HU!a!b!Iq!b;'S!HU;'S;=`!Jp<%lO!HUP!HsTO!a!Hp!a!b!IS!b;'S!Hp;'S;=`!Ik<%lO!HpP!IVTO!`!Hp!`!a!If!a;'S!Hp;'S;=`!Ik<%lO!HpP!IkOxPP!InP;=`<%l!Hpq!IvV!cpOv!HUvx!Hpx!`!HU!`!a!J]!a;'S!HU;'S;=`!Jp<%lO!HUq!JdS!cpxPOv(Vx;'S(V;'S;=`(h<%lO(Vq!JsP;=`<%l!HUa!J{X!a`Or!Jvrs!Hpsv!Jvvw!Hpw!a!Jv!a!b!Kh!b;'S!Jv;'S;=`!Lp<%lO!Jva!KmX!a`Or!Jvrs!Hpsv!Jvvw!Hpw!`!Jv!`!a!LY!a;'S!Jv;'S;=`!Lp<%lO!Jva!LaT!a`xPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!LsP;=`<%l!Jv!R!L}Y!a`!cpOr!G_rs!HUsv!G_vw!Hpwx!Jvx!`!G_!`!a!Mm!a;'S!G_;'S;=`!N]<%lO!G_!R!MvV!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!N`P;=`<%l!G_T!NhbhSOq!Hpqr!Ncrs!Hpsw!Ncwx!Hpx!P!Nc!P!Q!Hp!Q!_!Nc!_!a!Hp!a!b# p!b#s!Nc#s$f!Hp$f;'S!Nc;'S;=`#!}<%l?Ah!Nc?Ah?BY!Hp?BY?Mn!Nc?MnO!HpT# ubhSOq!Hpqr!Ncrs!Hpsw!Ncwx!Hpx!P!Nc!P!Q!Hp!Q!_!Nc!_!`!Hp!`!a!If!a#s!Nc#s$f!Hp$f;'S!Nc;'S;=`#!}<%l?Ah!Nc?Ah?BY!Hp?BY?Mn!Nc?MnO!HpT##QP;=`<%l!Nc!V##^chS!a`!cpOq!G_qr!Eyrs!HUsv!Eyvw!Ncwx!Jvx!P!Ey!P!Q!G_!Q!_!Ey!_!`!G_!`!a!Mm!a#s!Ey#s$f!G_$f;'S!Ey;'S;=`#$i<%l?Ah!Ey?Ah?BY!G_?BY?Mn!Ey?MnO!G_!V#$lP;=`<%l!Ey!V#$zXiS`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",tokenizers:[pt,ct,dt,ut,ot,Ot,0,1,2,3,4,5],topRules:{Document:[0,15]},dialects:{noMatch:0,selfClosing:485},tokenPrec:487});function ie(e,t){let l=Object.create(null);for(let a of e.getChildren(re)){let r=a.getChild(Ie),n=a.getChild(k)||a.getChild(ne);r&&(l[t.read(r.from,r.to)]=n?n.type.id==k?t.read(n.from+1,n.to-1):t.read(n.from,n.to):"")}return l}function U(e,t){let l=e.getChild(He);return l?t.read(l.from,l.to):" "}function C(e,t,l){let a;for(let r of l)if(!r.attrs||r.attrs(a||(a=ie(e.node.parent.firstChild,t))))return{parser:r.parser};return null}function ue(e=[],t=[]){let l=[],a=[],r=[],n=[];for(let O of e)(O.tag=="script"?l:O.tag=="style"?a:O.tag=="textarea"?r:n).push(O);let o=t.length?Object.create(null):null;for(let O of t)(o[O.name]||(o[O.name]=[])).push(O);return be((O,p)=>{let h=O.type.id;if(h==Ue)return C(O,p,l);if(h==je)return C(O,p,a);if(h==Je)return C(O,p,r);if(h==se&&n.length){let i=O.node,u=U(i,p),c;for(let d of n)if(d.tag==u&&(!d.attrs||d.attrs(c||(c=ie(i,p))))){let f=i.parent.lastChild;return{parser:d.parser,overlay:[{from:O.to,to:f.type.id==Le?f.from:i.parent.to}]}}}if(o&&h==re){let i=O.node,u;if(u=i.firstChild){let c=o[p.read(u.from,u.to)];if(c)for(let d of c){if(d.tagName&&d.tagName!=U(i.parent,p))continue;let f=i.lastChild;if(f.type.id==k){let P=f.from+1,T=f.lastChild,x=f.to-(T&&T.isError?0:1);if(x>P)return{parser:d.parser,overlay:[{from:P,to:x}]}}else if(f.type.id==ne)return{parser:d.parser,overlay:[{from:f.from,to:f.to}]}}}}return null})}const b=["_blank","_self","_top","_parent"],Q=["ascii","utf-8","utf-16","latin1","latin1"],A=["get","post","put","delete"],X=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],m=["true","false"],s={},mt={a:{attrs:{href:null,ping:null,type:null,media:null,target:b,hreflang:null}},abbr:s,address:s,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:s,aside:s,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:s,base:{attrs:{href:null,target:b}},bdi:s,bdo:s,blockquote:{attrs:{cite:null}},body:s,br:s,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:X,formmethod:A,formnovalidate:["novalidate"],formtarget:b,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:s,center:s,cite:s,code:s,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:s,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:s,div:s,dl:s,dt:s,em:s,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:s,figure:s,footer:s,form:{attrs:{action:null,name:null,"accept-charset":Q,autocomplete:["on","off"],enctype:X,method:A,novalidate:["novalidate"],target:b}},h1:s,h2:s,h3:s,h4:s,h5:s,h6:s,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:s,hgroup:s,hr:s,html:{attrs:{manifest:null}},i:s,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:X,formmethod:A,formnovalidate:["novalidate"],formtarget:b,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:s,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:s,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:s,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:Q,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:s,noscript:s,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:s,param:{attrs:{name:null,value:null}},pre:s,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:s,rt:s,ruby:s,samp:s,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:Q}},section:s,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:s,source:{attrs:{src:null,type:null,media:null}},span:s,strong:s,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:s,summary:s,sup:s,table:s,tbody:s,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:s,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:s,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:s,time:{attrs:{datetime:null}},title:s,tr:s,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:s,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:s},pe={accesskey:null,class:null,contenteditable:m,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:m,autocorrect:m,autocapitalize:m,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":m,"aria-autocomplete":["inline","list","both","none"],"aria-busy":m,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":m,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":m,"aria-hidden":m,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":m,"aria-multiselectable":m,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":m,"aria-relevant":null,"aria-required":m,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},ce="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(e=>"on"+e);for(let e of ce)pe[e]=null;class V{constructor(t,l){this.tags=Object.assign(Object.assign({},mt),t),this.globalAttrs=Object.assign(Object.assign({},pe),l),this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}}V.default=new V;function g(e,t,l=e.length){if(!t)return"";let a=t.firstChild,r=a&&a.getChild("TagName");return r?e.sliceString(r.from,Math.min(r.to,l)):""}function $(e,t=!1){for(let l=e.parent;l;l=l.parent)if(l.name=="Element")if(t)t=!1;else return l;return null}function de(e,t,l){let a=l.tags[g(e,$(t,!0))];return a?.children||l.allTags}function E(e,t){let l=[];for(let a=t;a=$(a);){let r=g(e,a);if(r&&a.lastChild.name=="CloseTag")break;r&&l.indexOf(r)<0&&(t.name=="EndTag"||t.from>=a.firstChild.to)&&l.push(r)}return l}const fe=/^[:\-\.\w\u00b7-\uffff]*$/;function j(e,t,l,a,r){let n=/\s*>/.test(e.sliceDoc(r,r+5))?"":">";return{from:a,to:r,options:de(e.doc,l,t).map(o=>({label:o,type:"type"})).concat(E(e.doc,l).map((o,O)=>({label:"/"+o,apply:"/"+o+n,type:"type",boost:99-O}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function J(e,t,l,a){let r=/\s*>/.test(e.sliceDoc(a,a+5))?"":">";return{from:l,to:a,options:E(e.doc,t).map((n,o)=>({label:n,apply:n+r,type:"type",boost:99-o})),validFor:fe}}function St(e,t,l,a){let r=[],n=0;for(let o of de(e.doc,l,t))r.push({label:"<"+o,type:"type"});for(let o of E(e.doc,l))r.push({label:"",type:"type",boost:99-n++});return{from:a,to:a,options:r,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function gt(e,t,l,a,r){let n=$(l),o=n?t.tags[g(e.doc,n)]:null,O=o&&o.attrs?Object.keys(o.attrs):[],p=o&&o.globalAttrs===!1?O:O.length?O.concat(t.globalAttrNames):t.globalAttrNames;return{from:a,to:r,options:p.map(h=>({label:h,type:"property"})),validFor:fe}}function Pt(e,t,l,a,r){var n;let o=(n=l.parent)===null||n===void 0?void 0:n.getChild("AttributeName"),O=[],p;if(o){let h=e.sliceDoc(o.from,o.to),i=t.globalAttrs[h];if(!i){let u=$(l),c=u?t.tags[g(e.doc,u)]:null;i=c?.attrs&&c.attrs[h]}if(i){let u=e.sliceDoc(a,r).toLowerCase(),c='"',d='"';/^['"]/.test(u)?(p=u[0]=='"'?/^[^"]*$/:/^[^']*$/,c="",d=e.sliceDoc(r,r+1)==u[0]?"":u[0],u=u.slice(1),a++):p=/^[^\s<>='"]*$/;for(let f of i)O.push({label:f,apply:c+f+d,type:"constant"})}}return{from:a,to:r,options:O,validFor:p}}function he(e,t){let{state:l,pos:a}=t,r=z(l).resolveInner(a),n=r.resolve(a,-1);for(let o=a,O;r==n&&(O=n.childBefore(o));){let p=O.lastChild;if(!p||!p.type.isError||p.fromhe(a,r)}const me=[{tag:"script",attrs:e=>e.type=="text/typescript"||e.lang=="ts",parser:we.parser},{tag:"script",attrs:e=>e.type=="text/babel"||e.type=="text/jsx",parser:Ce.parser},{tag:"script",attrs:e=>e.type=="text/typescript-jsx",parser:Qe.parser},{tag:"script",attrs(e){return!e.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type)},parser:K.parser},{tag:"style",attrs(e){return(!e.lang||e.lang=="css")&&(!e.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(e.type))},parser:F.parser}],Se=[{name:"style",parser:F.parser.configure({top:"Styles"})}].concat(ce.map(e=>({name:e,parser:K.parser}))),_=Ve.define({name:"html",parser:ht.configure({props:[xe.add({Element(e){let t=/^(\s*)(<\/)?/.exec(e.textAfter);return e.node.to<=e.pos+t[0].length?e.continue():e.lineIndent(e.node.from)+(t[2]?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit},Document(e){if(e.pos+/\s*/.exec(e.textAfter)[0].lengthe.getChild("TagName")})],wrap:ue(me,Se)}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-._"}});function Yt(e={}){let t="",l;e.matchClosingTags===!1&&(t="noMatch"),e.selfClosingTags===!0&&(t=(t?t+" ":"")+"selfClosing"),(e.nestedLanguages&&e.nestedLanguages.length||e.nestedAttributes&&e.nestedAttributes.length)&&(l=ue((e.nestedLanguages||[]).concat(me),(e.nestedAttributes||[]).concat(Se)));let a=l||t?_.configure({dialect:t,wrap:l}):_;return new ve(a,[_.data.of({autocomplete:Tt(e)}),e.autoCloseTags!==!1?bt:[],Ae().support,$e().support])}const L=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),bt=qe.inputHandler.of((e,t,l,a)=>{if(e.composing||e.state.readOnly||t!=l||a!=">"&&a!="/"||!_.isActiveAt(e.state,t,-1))return!1;let{state:r}=e,n=r.changeByRange(o=>{var O,p,h;let{head:i}=o,u=z(r).resolveInner(i,-1),c;if((u.name=="TagName"||u.name=="StartTag")&&(u=u.parent),a==">"&&u.name=="OpenTag"){if(((p=(O=u.parent)===null||O===void 0?void 0:O.lastChild)===null||p===void 0?void 0:p.name)!="CloseTag"&&(c=g(r.doc,u.parent,i))&&!L.has(c)){let d=e.state.doc.sliceString(i,i+1)===">",f=`${d?"":">"}`;return{range:G.cursor(i+1),changes:{from:i+(d?1:0),insert:f}}}}else if(a=="/"&&u.name=="OpenTag"){let d=u.parent,f=d?.parent;if(d.from==i-1&&((h=f.lastChild)===null||h===void 0?void 0:h.name)!="CloseTag"&&(c=g(r.doc,f,i))&&!L.has(c)){let P=e.state.doc.sliceString(i,i+1)===">",T=`/${c}${P?"":">"}`,x=i+T.length+(P?1:0);return{range:G.cursor(x),changes:{from:i,insert:T}}}}return{range:o}});return n.changes.empty?!1:(e.dispatch(n,{userEvent:"input.type",scrollIntoView:!0}),!0)});export{bt as autoCloseTags,Yt as html,kt as htmlCompletionSource,Tt as htmlCompletionSourceWith,_ as htmlLanguage}; +//# sourceMappingURL=index.3b4ef889.js.map diff --git a/gradio/templates/frontend/assets/index.3b4ef889.js.map b/gradio/templates/frontend/assets/index.3b4ef889.js.map new file mode 100644 index 0000000000000000000000000000000000000000..ac5940b041309baa9bd79185f03cea93e822feec --- /dev/null +++ b/gradio/templates/frontend/assets/index.3b4ef889.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.3b4ef889.js","sources":["../../../../ui/node_modules/.pnpm/@lezer+html@1.3.3/node_modules/@lezer/html/dist/index.es.js","../../../../ui/node_modules/.pnpm/@codemirror+lang-html@6.4.2/node_modules/@codemirror/lang-html/dist/index.js"],"sourcesContent":["import { ContextTracker, ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\nimport { parseMixed } from '@lezer/common';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst scriptText = 54,\n StartCloseScriptTag = 1,\n styleText = 55,\n StartCloseStyleTag = 2,\n textareaText = 56,\n StartCloseTextareaTag = 3,\n EndTag = 4,\n SelfClosingEndTag = 5,\n StartTag = 6,\n StartScriptTag = 7,\n StartStyleTag = 8,\n StartTextareaTag = 9,\n StartSelfClosingTag = 10,\n StartCloseTag = 11,\n NoMatchStartCloseTag = 12,\n MismatchedStartCloseTag = 13,\n missingCloseTag = 57,\n IncompleteCloseTag = 14,\n commentContent$1 = 58,\n Element = 20,\n TagName = 22,\n Attribute = 23,\n AttributeName = 24,\n AttributeValue = 26,\n UnquotedAttributeValue = 27,\n ScriptText = 28,\n StyleText = 31,\n TextareaText = 34,\n OpenTag = 36,\n CloseTag = 37,\n Dialect_noMatch = 0,\n Dialect_selfClosing = 1;\n\n/* Hand-written tokenizers for HTML. */\n\nconst selfClosers = {\n area: true, base: true, br: true, col: true, command: true,\n embed: true, frame: true, hr: true, img: true, input: true,\n keygen: true, link: true, meta: true, param: true, source: true,\n track: true, wbr: true, menuitem: true\n};\n\nconst implicitlyClosed = {\n dd: true, li: true, optgroup: true, option: true, p: true,\n rp: true, rt: true, tbody: true, td: true, tfoot: true,\n th: true, tr: true\n};\n\nconst closeOnOpen = {\n dd: {dd: true, dt: true},\n dt: {dd: true, dt: true},\n li: {li: true},\n option: {option: true, optgroup: true},\n optgroup: {optgroup: true},\n p: {\n address: true, article: true, aside: true, blockquote: true, dir: true,\n div: true, dl: true, fieldset: true, footer: true, form: true,\n h1: true, h2: true, h3: true, h4: true, h5: true, h6: true,\n header: true, hgroup: true, hr: true, menu: true, nav: true, ol: true,\n p: true, pre: true, section: true, table: true, ul: true\n },\n rp: {rp: true, rt: true},\n rt: {rp: true, rt: true},\n tbody: {tbody: true, tfoot: true},\n td: {td: true, th: true},\n tfoot: {tbody: true},\n th: {td: true, th: true},\n thead: {tbody: true, tfoot: true},\n tr: {tr: true}\n};\n\nfunction nameChar(ch) {\n return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161\n}\n\nfunction isSpace(ch) {\n return ch == 9 || ch == 10 || ch == 13 || ch == 32\n}\n\nlet cachedName = null, cachedInput = null, cachedPos = 0;\nfunction tagNameAfter(input, offset) {\n let pos = input.pos + offset;\n if (cachedPos == pos && cachedInput == input) return cachedName\n let next = input.peek(offset);\n while (isSpace(next)) next = input.peek(++offset);\n let name = \"\";\n for (;;) {\n if (!nameChar(next)) break\n name += String.fromCharCode(next);\n next = input.peek(++offset);\n }\n // Undefined to signal there's a -1 ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n reduce(context, term) {\n return term == Element && context ? context.parent : context\n },\n reuse(context, node, stack, input) {\n let type = node.type.id;\n return type == StartTag || type == OpenTag\n ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n hash(context) { return context ? context.hash : 0 },\n strict: false\n});\n\nconst tagStart = new ExternalTokenizer((input, stack) => {\n if (input.next != lessThan) {\n // End of file, close any open tags\n if (input.next < 0 && stack.context) input.acceptToken(missingCloseTag);\n return\n }\n input.advance();\n let close = input.next == slash;\n if (close) input.advance();\n let name = tagNameAfter(input, 0);\n if (name === undefined) return\n if (!name) return input.acceptToken(close ? IncompleteCloseTag : StartTag)\n\n let parent = stack.context ? stack.context.name : null;\n if (close) {\n if (name == parent) return input.acceptToken(StartCloseTag)\n if (parent && implicitlyClosed[parent]) return input.acceptToken(missingCloseTag, -2)\n if (stack.dialectEnabled(Dialect_noMatch)) return input.acceptToken(NoMatchStartCloseTag)\n for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return\n input.acceptToken(MismatchedStartCloseTag);\n } else {\n if (name == \"script\") return input.acceptToken(StartScriptTag)\n if (name == \"style\") return input.acceptToken(StartStyleTag)\n if (name == \"textarea\") return input.acceptToken(StartTextareaTag)\n if (selfClosers.hasOwnProperty(name)) return input.acceptToken(StartSelfClosingTag)\n if (parent && closeOnOpen[parent] && closeOnOpen[parent][name]) input.acceptToken(missingCloseTag, -1);\n else input.acceptToken(StartTag);\n }\n}, {contextual: true});\n\nconst commentContent = new ExternalTokenizer(input => {\n for (let dashes = 0, i = 0;; i++) {\n if (input.next < 0) {\n if (i) input.acceptToken(commentContent$1);\n break\n }\n if (input.next == dash) {\n dashes++;\n } else if (input.next == greaterThan && dashes >= 2) {\n if (i > 3) input.acceptToken(commentContent$1, -2);\n break\n } else {\n dashes = 0;\n }\n input.advance();\n }\n});\n\nfunction inForeignElement(context) {\n for (; context; context = context.parent)\n if (context.name == \"svg\" || context.name == \"math\") return true\n return false\n}\n\nconst endTag = new ExternalTokenizer((input, stack) => {\n if (input.next == slash && input.peek(1) == greaterThan) {\n let selfClosing = stack.dialectEnabled(Dialect_selfClosing) || inForeignElement(stack.context);\n input.acceptToken(selfClosing ? SelfClosingEndTag : EndTag, 2);\n } else if (input.next == greaterThan) {\n input.acceptToken(EndTag, 1);\n }\n});\n\nfunction contentTokenizer(tag, textToken, endToken) {\n let lastState = 2 + tag.length;\n return new ExternalTokenizer(input => {\n // state means:\n // - 0 nothing matched\n // - 1 '<' matched\n // - 2 '= 2 && state < lastState && input.next == tag.charCodeAt(state - 2)) {\n state++;\n matchedLen++;\n } else if ((state == 2 || state == lastState) && isSpace(input.next)) {\n matchedLen++;\n } else if (state == lastState && input.next == greaterThan) {\n if (i > matchedLen)\n input.acceptToken(textToken, -matchedLen);\n else\n input.acceptToken(endToken, -(matchedLen - 2));\n break\n } else if ((input.next == 10 /* '\\n' */ || input.next == 13 /* '\\r' */) && i) {\n input.acceptToken(textToken, 1);\n break\n } else {\n state = matchedLen = 0;\n }\n input.advance();\n }\n })\n}\n\nconst scriptTokens = contentTokenizer(\"script\", scriptText, StartCloseScriptTag);\n\nconst styleTokens = contentTokenizer(\"style\", styleText, StartCloseStyleTag);\n\nconst textareaTokens = contentTokenizer(\"textarea\", textareaText, StartCloseTextareaTag);\n\nconst htmlHighlighting = styleTags({\n \"Text RawText\": tags.content,\n \"StartTag StartCloseTag SelfClosingEndTag EndTag\": tags.angleBracket,\n TagName: tags.tagName,\n \"MismatchedCloseTag/TagName\": [tags.tagName, tags.invalid],\n AttributeName: tags.attributeName,\n \"AttributeValue UnquotedAttributeValue\": tags.attributeValue,\n Is: tags.definitionOperator,\n \"EntityReference CharacterReference\": tags.character,\n Comment: tags.blockComment,\n ProcessingInst: tags.processingInstruction,\n DoctypeDecl: tags.documentMeta\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%WQ&rO,59fO%`Q&rO,59iO%hQ&rO,59lO%sQ&rO,59nOOOa'#D^'#D^O%{OaO'#CxO&WOaO,59[OOOb'#D_'#D_O&`ObO'#C{O&kObO,59[OOOd'#D`'#D`O&sOdO'#DOO'OOdO,59[OOO`'#Da'#DaO'WO!rO,59[O'_Q#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'dO$fO,59oOOO`,59o,59oO'lQ#|O,59qO'qQ#|O,59rOOO`-E7W-E7WO'vQ&rO'#CsOOQW'#DZ'#DZO(UQ&rO1G.wOOOa1G.w1G.wO(^Q&rO1G/QOOOb1G/Q1G/QO(fQ&rO1G/TOOOd1G/T1G/TO(nQ&rO1G/WOOO`1G/W1G/WOOO`1G/Y1G/YO(yQ&rO1G/YOOOa-E7[-E7[O)RQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)WQ#tO'#C|OOOd-E7^-E7^O)]Q#tO'#DPOOO`-E7_-E7_O)bQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O)gQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rOOO`7+$t7+$tO)rQ#|O,59eO)wQ#|O,59hO)|Q#|O,59kOOO`1G/X1G/XO*RO7[O'#CvO*dOMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O*uO7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+WOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z\",\n stateData: \"+s~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OhyO~OS!OOhyO~OS!QOhyO~OS!SOT!TOhyO~OS!TOhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXhgXTgX~OS!fOhyO~OS!gOhyO~OS!hOhyO~OS!iOT!jOhyO~OS!jOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~\",\n goto: \"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{}!P!R!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ}bQ!PcQ!RdQ!UeZ!e{}!P!R!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp\",\n nodeNames: \"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl\",\n maxTerm: 67,\n context: elementContext,\n nodeProps: [\n [\"closedBy\", -10,1,2,3,7,8,9,10,11,12,13,\"EndTag\",6,\"EndTag SelfClosingEndTag\",-4,21,30,33,36,\"CloseTag\"],\n [\"openedBy\", 4,\"StartTag StartCloseTag\",5,\"StartTag\",-4,29,32,35,37,\"OpenTag\"],\n [\"group\", -9,14,17,18,19,20,39,40,41,42,\"Entity\",16,\"Entity TextContent\",-3,28,31,34,\"TextContent Entity\"]\n ],\n propSources: [htmlHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 9,\n tokenData: \"#%g!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs4ysv-_vw5iwxJ^x}-_}!OKP!O!P-_!P!Q$q!Q![-_![!]!!O!]!^-_!^!_!&W!_!`#$o!`!a&X!a!c-_!c!}!!O!}#R-_#R#S!!O#S#T3V#T#o!!O#o#s-_#s$f$q$f%W-_%W%o!!O%o%p-_%p&a!!O&a&b-_&b1p!!O1p4U-_4U4d!!O4d4e-_4e$IS!!O$IS$I`-_$I`$Ib!!O$Ib$Kh-_$Kh%#t!!O%#t&/x-_&/x&Et!!O&Et&FV-_&FV;'S!!O;'S;:j!&Q;:j;=`4s<%l?&r-_?&r?Ah!!O?Ah?BY$q?BY?Mn!!O?MnO$q!Z$|c`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bX`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UV`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pT`POv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!cpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({W`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!a`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!a`!cpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYkWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]``P!a`!cp!^^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_1n!_!a&X!a#S-_#S#T3V#T#s-_#s$f$q$f;'S-_;'S;=`4s<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/echSkWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!^!_0p!a#S/^#S#T0p#T#s/^#s$f+P$f;'S/^;'S;=`1h<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0uXhSqr0psw0px!P0p!Q!_0p!a#s0p$f;'S0p;'S;=`1b<%l?Ah0p?BY?Mn0pS1eP;=`<%l0p[1kP;=`<%l/^!U1wbhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!U3SP;=`<%l1n!V3bchS`P!a`!cpOq&Xqr3Vrs&}sv3Vvw0pwx(tx!P3V!P!Q&X!Q!^3V!^!_1n!_!a&X!a#s3V#s$f&X$f;'S3V;'S;=`4m<%l?Ah3V?Ah?BY&X?BY?Mn3V?MnO&X!V4pP;=`<%l3V!_4vP;=`<%l-_!Z5SV!`h`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_5rjhSkWc!ROX7dXZ8qZ[7d[^8q^p7dqr:crs8qst@Ttw:cwx8qx!P:c!P!Q7d!Q!]:c!]!^/^!^!_=p!_!a8q!a#S:c#S#T=p#T#s:c#s$f7d$f;'S:c;'S;=`?}<%l?Ah:c?Ah?BY7d?BY?Mn:c?MnO7d!Z7ibkWOX7dXZ8qZ[7d[^8q^p7dqr7drs8qst+Ptw7dwx8qx!]7d!]!^9f!^!a8q!a#S7d#S#T8q#T;'S7d;'S;=`:]<%lO7d!R8tVOp8qqs8qt!]8q!]!^9Z!^;'S8q;'S;=`9`<%lO8q!R9`Oa!R!R9cP;=`<%l8q!Z9mYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z:`P;=`<%l7d!_:jjhSkWOX7dXZ8qZ[7d[^8q^p7dqr:crs8qst/^tw:cwx8qx!P:c!P!Q7d!Q!]:c!]!^<[!^!_=p!_!a8q!a#S:c#S#T=p#T#s:c#s$f7d$f;'S:c;'S;=`?}<%l?Ah:c?Ah?BY7d?BY?Mn:c?MnO7d!_b#d#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!>kdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#V1n#V#W!?y#W#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!@SdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#h1n#h#i!Ab#i#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!AkdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#m1n#m#n!By#n#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!CSdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#d1n#d#e!Db#e#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!DkdhS!a`!cpOq*Vqr1nrs(Vsv1nvw0pwx)ex!P1n!P!Q*V!Q!_1n!_!a*V!a#X1n#X#Y!5]#Y#s1n#s$f*V$f;'S1n;'S;=`3P<%l?Ah1n?Ah?BY*V?BY?Mn1n?MnO*V!V!FSchS!a`!cpOq!G_qr!Eyrs!HUsv!Eyvw!Ncwx!Jvx!P!Ey!P!Q!G_!Q!_!Ey!_!a!G_!a!b##T!b#s!Ey#s$f!G_$f;'S!Ey;'S;=`#$i<%l?Ah!Ey?Ah?BY!G_?BY?Mn!Ey?MnO!G_!R!GfY!a`!cpOr!G_rs!HUsv!G_vw!Hpwx!Jvx!a!G_!a!b!Lv!b;'S!G_;'S;=`!N]<%lO!G_q!HZV!cpOv!HUvx!Hpx!a!HU!a!b!Iq!b;'S!HU;'S;=`!Jp<%lO!HUP!HsTO!a!Hp!a!b!IS!b;'S!Hp;'S;=`!Ik<%lO!HpP!IVTO!`!Hp!`!a!If!a;'S!Hp;'S;=`!Ik<%lO!HpP!IkOxPP!InP;=`<%l!Hpq!IvV!cpOv!HUvx!Hpx!`!HU!`!a!J]!a;'S!HU;'S;=`!Jp<%lO!HUq!JdS!cpxPOv(Vx;'S(V;'S;=`(h<%lO(Vq!JsP;=`<%l!HUa!J{X!a`Or!Jvrs!Hpsv!Jvvw!Hpw!a!Jv!a!b!Kh!b;'S!Jv;'S;=`!Lp<%lO!Jva!KmX!a`Or!Jvrs!Hpsv!Jvvw!Hpw!`!Jv!`!a!LY!a;'S!Jv;'S;=`!Lp<%lO!Jva!LaT!a`xPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!LsP;=`<%l!Jv!R!L}Y!a`!cpOr!G_rs!HUsv!G_vw!Hpwx!Jvx!`!G_!`!a!Mm!a;'S!G_;'S;=`!N]<%lO!G_!R!MvV!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!N`P;=`<%l!G_T!NhbhSOq!Hpqr!Ncrs!Hpsw!Ncwx!Hpx!P!Nc!P!Q!Hp!Q!_!Nc!_!a!Hp!a!b# p!b#s!Nc#s$f!Hp$f;'S!Nc;'S;=`#!}<%l?Ah!Nc?Ah?BY!Hp?BY?Mn!Nc?MnO!HpT# ubhSOq!Hpqr!Ncrs!Hpsw!Ncwx!Hpx!P!Nc!P!Q!Hp!Q!_!Nc!_!`!Hp!`!a!If!a#s!Nc#s$f!Hp$f;'S!Nc;'S;=`#!}<%l?Ah!Nc?Ah?BY!Hp?BY?Mn!Nc?MnO!HpT##QP;=`<%l!Nc!V##^chS!a`!cpOq!G_qr!Eyrs!HUsv!Eyvw!Ncwx!Jvx!P!Ey!P!Q!G_!Q!_!Ey!_!`!G_!`!a!Mm!a#s!Ey#s$f!G_$f;'S!Ey;'S;=`#$i<%l?Ah!Ey?Ah?BY!G_?BY?Mn!Ey?MnO!G_!V#$lP;=`<%l!Ey!V#$zXiS`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X\",\n tokenizers: [scriptTokens, styleTokens, textareaTokens, endTag, tagStart, commentContent, 0, 1, 2, 3, 4, 5],\n topRules: {\"Document\":[0,15]},\n dialects: {noMatch: 0, selfClosing: 485},\n tokenPrec: 487\n});\n\nfunction getAttrs(openTag, input) {\n let attrs = Object.create(null);\n for (let att of openTag.getChildren(Attribute)) {\n let name = att.getChild(AttributeName), value = att.getChild(AttributeValue) || att.getChild(UnquotedAttributeValue);\n if (name) attrs[input.read(name.from, name.to)] =\n !value ? \"\" : value.type.id == AttributeValue ? input.read(value.from + 1, value.to - 1) : input.read(value.from, value.to);\n }\n return attrs\n}\n\nfunction findTagName(openTag, input) {\n let tagNameNode = openTag.getChild(TagName);\n return tagNameNode ? input.read(tagNameNode.from, tagNameNode.to) : \" \"\n}\n\nfunction maybeNest(node, input, tags) {\n let attrs;\n for (let tag of tags) {\n if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(node.node.parent.firstChild, input))))\n return {parser: tag.parser}\n }\n return null\n}\n\n// tags?: {\n// tag: string,\n// attrs?: ({[attr: string]: string}) => boolean,\n// parser: Parser\n// }[]\n// attributes?: {\n// name: string,\n// tagName?: string,\n// parser: Parser\n// }[]\n \nfunction configureNesting(tags = [], attributes = []) {\n let script = [], style = [], textarea = [], other = [];\n for (let tag of tags) {\n let array = tag.tag == \"script\" ? script : tag.tag == \"style\" ? style : tag.tag == \"textarea\" ? textarea : other;\n array.push(tag);\n }\n let attrs = attributes.length ? Object.create(null) : null;\n for (let attr of attributes) (attrs[attr.name] || (attrs[attr.name] = [])).push(attr);\n\n return parseMixed((node, input) => {\n let id = node.type.id;\n if (id == ScriptText) return maybeNest(node, input, script)\n if (id == StyleText) return maybeNest(node, input, style)\n if (id == TextareaText) return maybeNest(node, input, textarea)\n\n if (id == OpenTag && other.length) {\n let n = node.node, tagName = findTagName(n, input), attrs;\n for (let tag of other) {\n if (tag.tag == tagName && (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(n, input))))) {\n let close = n.parent.lastChild;\n return {parser: tag.parser, overlay: [{from: node.to, to: close.type.id == CloseTag ? close.from : n.parent.to}]}\n }\n }\n }\n\n if (attrs && id == Attribute) {\n let n = node.node, nameNode;\n if (nameNode = n.firstChild) {\n let matches = attrs[input.read(nameNode.from, nameNode.to)];\n if (matches) for (let attr of matches) {\n if (attr.tagName && attr.tagName != findTagName(n.parent, input)) continue\n let value = n.lastChild;\n if (value.type.id == AttributeValue) {\n let from = value.from + 1;\n let last = value.lastChild, to = value.to - (last && last.isError ? 0 : 1);\n if (to > from) return {parser: attr.parser, overlay: [{from, to}]}\n } else if (value.type.id == UnquotedAttributeValue) {\n return {parser: attr.parser, overlay: [{from: value.from, to: value.to}]}\n }\n }\n }\n }\n return null\n })\n}\n\nexport { configureNesting, parser };\n","import { parser, configureNesting } from '@lezer/html';\nimport { cssLanguage, css } from '@codemirror/lang-css';\nimport { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from '@codemirror/lang-javascript';\nimport { EditorView } from '@codemirror/view';\nimport { EditorSelection } from '@codemirror/state';\nimport { syntaxTree, LRLanguage, indentNodeProp, foldNodeProp, bracketMatchingHandle, LanguageSupport } from '@codemirror/language';\n\nconst Targets = [\"_blank\", \"_self\", \"_top\", \"_parent\"];\nconst Charsets = [\"ascii\", \"utf-8\", \"utf-16\", \"latin1\", \"latin1\"];\nconst Methods = [\"get\", \"post\", \"put\", \"delete\"];\nconst Encs = [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"];\nconst Bool = [\"true\", \"false\"];\nconst S = {}; // Empty tag spec\nconst Tags = {\n a: {\n attrs: {\n href: null, ping: null, type: null,\n media: null,\n target: Targets,\n hreflang: null\n }\n },\n abbr: S,\n address: S,\n area: {\n attrs: {\n alt: null, coords: null, href: null, target: null, ping: null,\n media: null, hreflang: null, type: null,\n shape: [\"default\", \"rect\", \"circle\", \"poly\"]\n }\n },\n article: S,\n aside: S,\n audio: {\n attrs: {\n src: null, mediagroup: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"none\", \"metadata\", \"auto\"],\n autoplay: [\"autoplay\"],\n loop: [\"loop\"],\n controls: [\"controls\"]\n }\n },\n b: S,\n base: { attrs: { href: null, target: Targets } },\n bdi: S,\n bdo: S,\n blockquote: { attrs: { cite: null } },\n body: S,\n br: S,\n button: {\n attrs: {\n form: null, formaction: null, name: null, value: null,\n autofocus: [\"autofocus\"],\n disabled: [\"autofocus\"],\n formenctype: Encs,\n formmethod: Methods,\n formnovalidate: [\"novalidate\"],\n formtarget: Targets,\n type: [\"submit\", \"reset\", \"button\"]\n }\n },\n canvas: { attrs: { width: null, height: null } },\n caption: S,\n center: S,\n cite: S,\n code: S,\n col: { attrs: { span: null } },\n colgroup: { attrs: { span: null } },\n command: {\n attrs: {\n type: [\"command\", \"checkbox\", \"radio\"],\n label: null, icon: null, radiogroup: null, command: null, title: null,\n disabled: [\"disabled\"],\n checked: [\"checked\"]\n }\n },\n data: { attrs: { value: null } },\n datagrid: { attrs: { disabled: [\"disabled\"], multiple: [\"multiple\"] } },\n datalist: { attrs: { data: null } },\n dd: S,\n del: { attrs: { cite: null, datetime: null } },\n details: { attrs: { open: [\"open\"] } },\n dfn: S,\n div: S,\n dl: S,\n dt: S,\n em: S,\n embed: { attrs: { src: null, type: null, width: null, height: null } },\n eventsource: { attrs: { src: null } },\n fieldset: { attrs: { disabled: [\"disabled\"], form: null, name: null } },\n figcaption: S,\n figure: S,\n footer: S,\n form: {\n attrs: {\n action: null, name: null,\n \"accept-charset\": Charsets,\n autocomplete: [\"on\", \"off\"],\n enctype: Encs,\n method: Methods,\n novalidate: [\"novalidate\"],\n target: Targets\n }\n },\n h1: S, h2: S, h3: S, h4: S, h5: S, h6: S,\n head: {\n children: [\"title\", \"base\", \"link\", \"style\", \"meta\", \"script\", \"noscript\", \"command\"]\n },\n header: S,\n hgroup: S,\n hr: S,\n html: {\n attrs: { manifest: null }\n },\n i: S,\n iframe: {\n attrs: {\n src: null, srcdoc: null, name: null, width: null, height: null,\n sandbox: [\"allow-top-navigation\", \"allow-same-origin\", \"allow-forms\", \"allow-scripts\"],\n seamless: [\"seamless\"]\n }\n },\n img: {\n attrs: {\n alt: null, src: null, ismap: null, usemap: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"]\n }\n },\n input: {\n attrs: {\n alt: null, dirname: null, form: null, formaction: null,\n height: null, list: null, max: null, maxlength: null, min: null,\n name: null, pattern: null, placeholder: null, size: null, src: null,\n step: null, value: null, width: null,\n accept: [\"audio/*\", \"video/*\", \"image/*\"],\n autocomplete: [\"on\", \"off\"],\n autofocus: [\"autofocus\"],\n checked: [\"checked\"],\n disabled: [\"disabled\"],\n formenctype: Encs,\n formmethod: Methods,\n formnovalidate: [\"novalidate\"],\n formtarget: Targets,\n multiple: [\"multiple\"],\n readonly: [\"readonly\"],\n required: [\"required\"],\n type: [\"hidden\", \"text\", \"search\", \"tel\", \"url\", \"email\", \"password\", \"datetime\", \"date\", \"month\",\n \"week\", \"time\", \"datetime-local\", \"number\", \"range\", \"color\", \"checkbox\", \"radio\",\n \"file\", \"submit\", \"image\", \"reset\", \"button\"]\n }\n },\n ins: { attrs: { cite: null, datetime: null } },\n kbd: S,\n keygen: {\n attrs: {\n challenge: null, form: null, name: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n keytype: [\"RSA\"]\n }\n },\n label: { attrs: { for: null, form: null } },\n legend: S,\n li: { attrs: { value: null } },\n link: {\n attrs: {\n href: null, type: null,\n hreflang: null,\n media: null,\n sizes: [\"all\", \"16x16\", \"16x16 32x32\", \"16x16 32x32 64x64\"]\n }\n },\n map: { attrs: { name: null } },\n mark: S,\n menu: { attrs: { label: null, type: [\"list\", \"context\", \"toolbar\"] } },\n meta: {\n attrs: {\n content: null,\n charset: Charsets,\n name: [\"viewport\", \"application-name\", \"author\", \"description\", \"generator\", \"keywords\"],\n \"http-equiv\": [\"content-language\", \"content-type\", \"default-style\", \"refresh\"]\n }\n },\n meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },\n nav: S,\n noscript: S,\n object: {\n attrs: {\n data: null, type: null, name: null, usemap: null, form: null, width: null, height: null,\n typemustmatch: [\"typemustmatch\"]\n }\n },\n ol: { attrs: { reversed: [\"reversed\"], start: null, type: [\"1\", \"a\", \"A\", \"i\", \"I\"] },\n children: [\"li\", \"script\", \"template\", \"ul\", \"ol\"] },\n optgroup: { attrs: { disabled: [\"disabled\"], label: null } },\n option: { attrs: { disabled: [\"disabled\"], label: null, selected: [\"selected\"], value: null } },\n output: { attrs: { for: null, form: null, name: null } },\n p: S,\n param: { attrs: { name: null, value: null } },\n pre: S,\n progress: { attrs: { value: null, max: null } },\n q: { attrs: { cite: null } },\n rp: S,\n rt: S,\n ruby: S,\n samp: S,\n script: {\n attrs: {\n type: [\"text/javascript\"],\n src: null,\n async: [\"async\"],\n defer: [\"defer\"],\n charset: Charsets\n }\n },\n section: S,\n select: {\n attrs: {\n form: null, name: null, size: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n multiple: [\"multiple\"]\n }\n },\n slot: { attrs: { name: null } },\n small: S,\n source: { attrs: { src: null, type: null, media: null } },\n span: S,\n strong: S,\n style: {\n attrs: {\n type: [\"text/css\"],\n media: null,\n scoped: null\n }\n },\n sub: S,\n summary: S,\n sup: S,\n table: S,\n tbody: S,\n td: { attrs: { colspan: null, rowspan: null, headers: null } },\n template: S,\n textarea: {\n attrs: {\n dirname: null, form: null, maxlength: null, name: null, placeholder: null,\n rows: null, cols: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n readonly: [\"readonly\"],\n required: [\"required\"],\n wrap: [\"soft\", \"hard\"]\n }\n },\n tfoot: S,\n th: { attrs: { colspan: null, rowspan: null, headers: null, scope: [\"row\", \"col\", \"rowgroup\", \"colgroup\"] } },\n thead: S,\n time: { attrs: { datetime: null } },\n title: S,\n tr: S,\n track: {\n attrs: {\n src: null, label: null, default: null,\n kind: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"],\n srclang: null\n }\n },\n ul: { children: [\"li\", \"script\", \"template\", \"ul\", \"ol\"] },\n var: S,\n video: {\n attrs: {\n src: null, poster: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"auto\", \"metadata\", \"none\"],\n autoplay: [\"autoplay\"],\n mediagroup: [\"movie\"],\n muted: [\"muted\"],\n controls: [\"controls\"]\n }\n },\n wbr: S\n};\nconst GlobalAttrs = {\n accesskey: null,\n class: null,\n contenteditable: Bool,\n contextmenu: null,\n dir: [\"ltr\", \"rtl\", \"auto\"],\n draggable: [\"true\", \"false\", \"auto\"],\n dropzone: [\"copy\", \"move\", \"link\", \"string:\", \"file:\"],\n hidden: [\"hidden\"],\n id: null,\n inert: [\"inert\"],\n itemid: null,\n itemprop: null,\n itemref: null,\n itemscope: [\"itemscope\"],\n itemtype: null,\n lang: [\"ar\", \"bn\", \"de\", \"en-GB\", \"en-US\", \"es\", \"fr\", \"hi\", \"id\", \"ja\", \"pa\", \"pt\", \"ru\", \"tr\", \"zh\"],\n spellcheck: Bool,\n autocorrect: Bool,\n autocapitalize: Bool,\n style: null,\n tabindex: null,\n title: null,\n translate: [\"yes\", \"no\"],\n rel: [\"stylesheet\", \"alternate\", \"author\", \"bookmark\", \"help\", \"license\", \"next\", \"nofollow\", \"noreferrer\", \"prefetch\", \"prev\", \"search\", \"tag\"],\n role: /*@__PURE__*/\"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer\".split(\" \"),\n \"aria-activedescendant\": null,\n \"aria-atomic\": Bool,\n \"aria-autocomplete\": [\"inline\", \"list\", \"both\", \"none\"],\n \"aria-busy\": Bool,\n \"aria-checked\": [\"true\", \"false\", \"mixed\", \"undefined\"],\n \"aria-controls\": null,\n \"aria-describedby\": null,\n \"aria-disabled\": Bool,\n \"aria-dropeffect\": null,\n \"aria-expanded\": [\"true\", \"false\", \"undefined\"],\n \"aria-flowto\": null,\n \"aria-grabbed\": [\"true\", \"false\", \"undefined\"],\n \"aria-haspopup\": Bool,\n \"aria-hidden\": Bool,\n \"aria-invalid\": [\"true\", \"false\", \"grammar\", \"spelling\"],\n \"aria-label\": null,\n \"aria-labelledby\": null,\n \"aria-level\": null,\n \"aria-live\": [\"off\", \"polite\", \"assertive\"],\n \"aria-multiline\": Bool,\n \"aria-multiselectable\": Bool,\n \"aria-owns\": null,\n \"aria-posinset\": null,\n \"aria-pressed\": [\"true\", \"false\", \"mixed\", \"undefined\"],\n \"aria-readonly\": Bool,\n \"aria-relevant\": null,\n \"aria-required\": Bool,\n \"aria-selected\": [\"true\", \"false\", \"undefined\"],\n \"aria-setsize\": null,\n \"aria-sort\": [\"ascending\", \"descending\", \"none\", \"other\"],\n \"aria-valuemax\": null,\n \"aria-valuemin\": null,\n \"aria-valuenow\": null,\n \"aria-valuetext\": null\n};\nconst eventAttributes = /*@__PURE__*/(\"beforeunload copy cut dragstart dragover dragleave dragenter dragend \" +\n \"drag paste focus blur change click load mousedown mouseenter mouseleave \" +\n \"mouseup keydown keyup resize scroll unload\").split(\" \").map(n => \"on\" + n);\nfor (let a of eventAttributes)\n GlobalAttrs[a] = null;\nclass Schema {\n constructor(extraTags, extraAttrs) {\n this.tags = Object.assign(Object.assign({}, Tags), extraTags);\n this.globalAttrs = Object.assign(Object.assign({}, GlobalAttrs), extraAttrs);\n this.allTags = Object.keys(this.tags);\n this.globalAttrNames = Object.keys(this.globalAttrs);\n }\n}\nSchema.default = /*@__PURE__*/new Schema;\nfunction elementName(doc, tree, max = doc.length) {\n if (!tree)\n return \"\";\n let tag = tree.firstChild;\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, Math.min(name.to, max)) : \"\";\n}\nfunction findParentElement(tree, skip = false) {\n for (let cur = tree.parent; cur; cur = cur.parent)\n if (cur.name == \"Element\") {\n if (skip)\n skip = false;\n else\n return cur;\n }\n return null;\n}\nfunction allowedChildren(doc, tree, schema) {\n let parentInfo = schema.tags[elementName(doc, findParentElement(tree, true))];\n return (parentInfo === null || parentInfo === void 0 ? void 0 : parentInfo.children) || schema.allTags;\n}\nfunction openTags(doc, tree) {\n let open = [];\n for (let parent = tree; parent = findParentElement(parent);) {\n let tagName = elementName(doc, parent);\n if (tagName && parent.lastChild.name == \"CloseTag\")\n break;\n if (tagName && open.indexOf(tagName) < 0 && (tree.name == \"EndTag\" || tree.from >= parent.firstChild.to))\n open.push(tagName);\n }\n return open;\n}\nconst identifier = /^[:\\-\\.\\w\\u00b7-\\uffff]*$/;\nfunction completeTag(state, schema, tree, from, to) {\n let end = /\\s*>/.test(state.sliceDoc(to, to + 5)) ? \"\" : \">\";\n return { from, to,\n options: allowedChildren(state.doc, tree, schema).map(tagName => ({ label: tagName, type: \"type\" })).concat(openTags(state.doc, tree).map((tag, i) => ({ label: \"/\" + tag, apply: \"/\" + tag + end,\n type: \"type\", boost: 99 - i }))),\n validFor: /^\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/ };\n}\nfunction completeCloseTag(state, tree, from, to) {\n let end = /\\s*>/.test(state.sliceDoc(to, to + 5)) ? \"\" : \">\";\n return { from, to,\n options: openTags(state.doc, tree).map((tag, i) => ({ label: tag, apply: tag + end, type: \"type\", boost: 99 - i })),\n validFor: identifier };\n}\nfunction completeStartTag(state, schema, tree, pos) {\n let options = [], level = 0;\n for (let tagName of allowedChildren(state.doc, tree, schema))\n options.push({ label: \"<\" + tagName, type: \"type\" });\n for (let open of openTags(state.doc, tree))\n options.push({ label: \"\", type: \"type\", boost: 99 - level++ });\n return { from: pos, to: pos, options, validFor: /^<\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/ };\n}\nfunction completeAttrName(state, schema, tree, from, to) {\n let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;\n let localAttrs = info && info.attrs ? Object.keys(info.attrs) : [];\n let names = info && info.globalAttrs === false ? localAttrs\n : localAttrs.length ? localAttrs.concat(schema.globalAttrNames) : schema.globalAttrNames;\n return { from, to,\n options: names.map(attrName => ({ label: attrName, type: \"property\" })),\n validFor: identifier };\n}\nfunction completeAttrValue(state, schema, tree, from, to) {\n var _a;\n let nameNode = (_a = tree.parent) === null || _a === void 0 ? void 0 : _a.getChild(\"AttributeName\");\n let options = [], token = undefined;\n if (nameNode) {\n let attrName = state.sliceDoc(nameNode.from, nameNode.to);\n let attrs = schema.globalAttrs[attrName];\n if (!attrs) {\n let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;\n attrs = (info === null || info === void 0 ? void 0 : info.attrs) && info.attrs[attrName];\n }\n if (attrs) {\n let base = state.sliceDoc(from, to).toLowerCase(), quoteStart = '\"', quoteEnd = '\"';\n if (/^['\"]/.test(base)) {\n token = base[0] == '\"' ? /^[^\"]*$/ : /^[^']*$/;\n quoteStart = \"\";\n quoteEnd = state.sliceDoc(to, to + 1) == base[0] ? \"\" : base[0];\n base = base.slice(1);\n from++;\n }\n else {\n token = /^[^\\s<>='\"]*$/;\n }\n for (let value of attrs)\n options.push({ label: value, apply: quoteStart + value + quoteEnd, type: \"constant\" });\n }\n }\n return { from, to, options, validFor: token };\n}\nfunction htmlCompletionFor(schema, context) {\n let { state, pos } = context, around = syntaxTree(state).resolveInner(pos), tree = around.resolve(pos, -1);\n for (let scan = pos, before; around == tree && (before = tree.childBefore(scan));) {\n let last = before.lastChild;\n if (!last || !last.type.isError || last.from < last.to)\n break;\n around = tree = before;\n scan = last.from;\n }\n if (tree.name == \"TagName\") {\n return tree.parent && /CloseTag$/.test(tree.parent.name) ? completeCloseTag(state, tree, tree.from, pos)\n : completeTag(state, schema, tree, tree.from, pos);\n }\n else if (tree.name == \"StartTag\") {\n return completeTag(state, schema, tree, pos, pos);\n }\n else if (tree.name == \"StartCloseTag\" || tree.name == \"IncompleteCloseTag\") {\n return completeCloseTag(state, tree, pos, pos);\n }\n else if (context.explicit && (tree.name == \"OpenTag\" || tree.name == \"SelfClosingTag\") || tree.name == \"AttributeName\") {\n return completeAttrName(state, schema, tree, tree.name == \"AttributeName\" ? tree.from : pos, pos);\n }\n else if (tree.name == \"Is\" || tree.name == \"AttributeValue\" || tree.name == \"UnquotedAttributeValue\") {\n return completeAttrValue(state, schema, tree, tree.name == \"Is\" ? pos : tree.from, pos);\n }\n else if (context.explicit && (around.name == \"Element\" || around.name == \"Text\" || around.name == \"Document\")) {\n return completeStartTag(state, schema, tree, pos);\n }\n else {\n return null;\n }\n}\n/**\nHTML tag completion. Opens and closes tags and attributes in a\ncontext-aware way.\n*/\nfunction htmlCompletionSource(context) {\n return htmlCompletionFor(Schema.default, context);\n}\n/**\nCreate a completion source for HTML extended with additional tags\nor attributes.\n*/\nfunction htmlCompletionSourceWith(config) {\n let { extraTags, extraGlobalAttributes: extraAttrs } = config;\n let schema = extraAttrs || extraTags ? new Schema(extraTags, extraAttrs) : Schema.default;\n return (context) => htmlCompletionFor(schema, context);\n}\n\nconst defaultNesting = [\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/typescript\" || attrs.lang == \"ts\",\n parser: typescriptLanguage.parser },\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/babel\" || attrs.type == \"text/jsx\",\n parser: jsxLanguage.parser },\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/typescript-jsx\",\n parser: tsxLanguage.parser },\n { tag: \"script\",\n attrs(attrs) {\n return !attrs.type || /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);\n },\n parser: javascriptLanguage.parser },\n { tag: \"style\",\n attrs(attrs) {\n return (!attrs.lang || attrs.lang == \"css\") && (!attrs.type || /^(text\\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));\n },\n parser: cssLanguage.parser }\n];\nconst defaultAttrs = /*@__PURE__*/[\n { name: \"style\",\n parser: /*@__PURE__*/cssLanguage.parser.configure({ top: \"Styles\" }) }\n].concat(/*@__PURE__*/eventAttributes.map(name => ({ name, parser: javascriptLanguage.parser })));\n/**\nA language provider based on the [Lezer HTML\nparser](https://github.com/lezer-parser/html), extended with the\nJavaScript and CSS parsers to parse the content of `\n\n\n\n
\n\t
\n\t\t\n\t\t\n\t
\n
\n\n\n\n\n","\n\n\n\t\n\n\t\n\n","export { default as Component } from \"./Slider.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"number\"\n\t},\n\tdescription: {\n\t\tpayload: \"selected value\"\n\t},\n\texample_data: config.value ?? config.minimum\n});\n"],"names":[],"mappings":"whBAiCoC,yCAAA,iQADtB,qCAMN,gBACA,2MAaF,gBACA,4EAvBN,SACC,OACC,0BAGA,0BAYF,6DAPY,4DAgBC,qJAlBL,2BACA,uHAaF,2BACA,kMApDD,GAAM,yBAOC,QAAgB,MAChB,UAAkB,MAClB,UAAkB,QAClB,OAAe,MACf,WAAoB,OACpB,YACA,OAA2B,WAC3B,qBAEL,eAAiB,MACjB,EAAW,eAEO,GACvB,EAAS,UAAW,CAAK,OAIpB,YACL,EAAQ,KAAK,IAAI,KAAK,IAAI,EAAO,CAAO,EAAG,CAAO,mXAFhD,EAAS,SAAU,CAAK,6MCKR,4LAUR,QAAS,8PAVD,gMAUR,QAAS,0SAZJ,MAAM,WAAc,YAAc,KAAM,mNAAxC,MAAM,WAAc,YAAc,KAAM,iKApB7C,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAgB,MAChB,QAAgB,aAChB,OAA2B,WAC3B,eACA,cACA,cACA,WACA,WACA,iBAEA,uxBCnBC,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,kBAEV,aAAc,EAAO,OAAS,EAAO,OACtC"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.5aa71568.css b/gradio/templates/frontend/assets/index.5aa71568.css new file mode 100644 index 0000000000000000000000000000000000000000..1b457869043e5e2005c2331cb14abed07b7f6a88 --- /dev/null +++ b/gradio/templates/frontend/assets/index.5aa71568.css @@ -0,0 +1 @@ +span.svelte-s1r2yt{font-weight:var(--section-header-text-weight);font-size:var(--section-header-text-size)}.label-wrap.svelte-s1r2yt{display:flex;justify-content:space-between;cursor:pointer;width:var(--size-full)}.label-wrap.open.svelte-s1r2yt{margin-bottom:var(--size-2)}.icon.svelte-s1r2yt{transition:.15s} diff --git a/gradio/templates/frontend/assets/index.5c217706.css b/gradio/templates/frontend/assets/index.5c217706.css new file mode 100644 index 0000000000000000000000000000000000000000..53554c2d4778e15c578521c9ea35d1960c4f3969 --- /dev/null +++ b/gradio/templates/frontend/assets/index.5c217706.css @@ -0,0 +1 @@ +.preview.svelte-1tkea93.svelte-1tkea93{display:flex;position:absolute;inset:0;flex-direction:column;z-index:var(--layer-2);backdrop-filter:blur(8px);background:var(--background-fill-primary);height:var(--size-full)}.fixed-height.svelte-1tkea93.svelte-1tkea93{min-height:var(--size-80);max-height:55vh}@media (min-width: 1280px){.fixed-height.svelte-1tkea93.svelte-1tkea93{min-height:450px}}.preview.svelte-1tkea93 img.svelte-1tkea93{width:var(--size-full);height:calc(var(--size-full) - 60px);object-fit:contain}.preview.svelte-1tkea93 img.with-caption.svelte-1tkea93{height:calc(var(--size-full) - 80px)}.caption.svelte-1tkea93.svelte-1tkea93{padding:var(--size-2) var(--size-3);overflow:hidden;color:var(--block-label-text-color);font-weight:var(--weight-semibold);text-align:center;text-overflow:ellipsis;white-space:nowrap}.thumbnails.svelte-1tkea93.svelte-1tkea93{display:flex;position:absolute;bottom:0;justify-content:center;align-items:center;gap:var(--spacing-lg);width:var(--size-full);height:var(--size-14);overflow-x:scroll}.thumbnail-item.svelte-1tkea93.svelte-1tkea93{--ring-color:transparent;position:relative;outline:none;box-shadow:0 0 0 2px var(--ring-color),var(--shadow-drop);border:1px solid var(--border-color-primary);border-radius:var(--button-small-radius);background:var(--background-fill-secondary);aspect-ratio:var(--ratio-square);width:var(--size-full);height:var(--size-full);overflow:hidden}.thumbnail-item.svelte-1tkea93.svelte-1tkea93:hover{--ring-color:var(--border-color-accent);filter:brightness(1.1);border-color:var(--border-color-accent)}.thumbnail-small.svelte-1tkea93.svelte-1tkea93{flex:none;transform:scale(.9);transition:75ms;width:var(--size-9);height:var(--size-9)}.thumbnail-small.selected.svelte-1tkea93.svelte-1tkea93{--ring-color:var(--color-accent);transform:scale(1);border-color:var(--color-accent)}.thumbnail-small.svelte-1tkea93>img.svelte-1tkea93{width:var(--size-full);height:var(--size-full);overflow:hidden;object-fit:cover}.grid-wrap.svelte-1tkea93.svelte-1tkea93{padding:var(--size-2);height:var(--size-full);overflow-y:auto}.grid-container.svelte-1tkea93.svelte-1tkea93{display:grid;grid-template-columns:var(--grid-cols);gap:var(--spacing-lg)}@media (min-width: 640px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--sm-grid-cols)}}@media (min-width: 768px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--md-grid-cols)}}@media (min-width: 1024px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--lg-grid-cols)}}@media (min-width: 1280px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--xl-grid-cols)}}@media (min-width: 1536px){.grid-container.svelte-1tkea93.svelte-1tkea93{grid-template-columns:var(--2xl-grid-cols)}}.thumbnail-lg.svelte-1tkea93>img.svelte-1tkea93{width:var(--size-full);height:var(--size-full);overflow:hidden;object-fit:cover}.thumbnail-lg.svelte-1tkea93:hover .caption-label.svelte-1tkea93{opacity:.5}.caption-label.svelte-1tkea93.svelte-1tkea93{position:absolute;right:var(--block-label-margin);bottom:var(--block-label-margin);z-index:var(--layer-1);border-top:1px solid var(--border-color-primary);border-left:1px solid var(--border-color-primary);border-radius:var(--block-label-radius);background:var(--background-fill-secondary);padding:var(--block-label-padding);max-width:80%;overflow:hidden;font-size:var(--block-label-text-size);text-align:left;text-overflow:ellipsis;white-space:nowrap} diff --git a/gradio/templates/frontend/assets/index.60be8090.js b/gradio/templates/frontend/assets/index.60be8090.js new file mode 100644 index 0000000000000000000000000000000000000000..950234f95ac2c2dd9787e9a710e8c079652c501d --- /dev/null +++ b/gradio/templates/frontend/assets/index.60be8090.js @@ -0,0 +1,2 @@ +import{S as Z,i as q,s as D,A as V,B as m,f as k,D as v,E,p as w,e as z,F as y,G as L,H as N,C as A,O as M,I as Q,J as I,N as U,q as K,c as B,m as C,o as h,t as g,l as j,v as W,a7 as X,g as $,h as x,k as F,n as G,x as ee}from"./index.37b24c07.js";/* empty css */import{a as le}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{B as te}from"./BlockLabel.7ce695d8.js";import{E as ne}from"./Empty.ae5c2506.js";function se(s){let e,t;return{c(){e=V("svg"),t=V("path"),m(t,"fill","currentColor"),m(t,"d","M4 2H2v26a2 2 0 0 0 2 2h26v-2H4v-3h22v-8H4v-4h14V5H4Zm20 17v4H4v-4ZM16 7v4H4V7Z"),m(e,"xmlns","http://www.w3.org/2000/svg"),m(e,"xmlns:xlink","http://www.w3.org/1999/xlink"),m(e,"aria-hidden","true"),m(e,"role","img"),m(e,"class","iconify iconify--carbon"),m(e,"width","100%"),m(e,"height","100%"),m(e,"preserveAspectRatio","xMidYMid meet"),m(e,"viewBox","0 0 32 32")},m(l,n){k(l,e,n),v(e,t)},p:E,i:E,o:E,d(l){l&&w(e)}}}class P extends Z{constructor(e){super(),q(this,e,null,se,D,{})}}function J(s,e,t){const l=s.slice();return l[6]=e[t],l[8]=t,l}function O(s){let e,t=s[0].confidences,l=[];for(let n=0;n{n("select",{index:_,value:u.label})};return s.$$set=_=>{"value"in _&&t(0,l=_.value),"show_label"in _&&t(1,a=_.show_label),"color"in _&&t(2,i=_.color),"selectable"in _&&t(3,c=_.selectable)},[l,a,i,c,n,r]}class oe extends Z{constructor(e){super(),q(this,e,ie,ae,D,{value:0,show_label:1,color:2,selectable:3})}}function Y(s){let e,t;return e=new te({props:{Icon:P,label:s[5],disable:typeof s[6].container=="boolean"&&!s[6].container}}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,n){const a={};n&32&&(a.label=l[5]),n&64&&(a.disable=typeof l[6].container=="boolean"&&!l[6].container),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function ce(s){let e,t;return e=new ne({props:{$$slots:{default:[re]},$$scope:{ctx:s}}}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,n){const a={};n&4096&&(a.$$scope={dirty:n,ctx:l}),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function fe(s){let e,t;return e=new oe({props:{selectable:s[9],value:s[4],show_label:s[8],color:s[3]}}),e.$on("select",s[10]),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,n){const a={};n&512&&(a.selectable=l[9]),n&16&&(a.value=l[4]),n&256&&(a.show_label=l[8]),n&8&&(a.color=l[3]),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function re(s){let e,t;return e=new P({}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function ue(s){let e,t,l,n,a,i,c;const r=[s[7]];let _={};for(let f=0;f{u=null}),G());let S=n;n=b(f),n===S?d[n].p(f,o):(F(),g(d[S],1,1,()=>{d[S]=null}),G(),a=d[n],a?a.p(f,o):(a=d[n]=p[n](f),a.c()),h(a,1),a.m(i.parentNode,i))},i(f){c||(h(e.$$.fragment,f),h(u),h(a),c=!0)},o(f){g(e.$$.fragment,f),g(u),g(a),c=!1},d(f){j(e,f),f&&w(t),u&&u.d(f),f&&w(l),d[n].d(f),f&&w(i)}}}function _e(s){let e,t;return e=new le({props:{test_id:"label",visible:s[2],elem_id:s[0],elem_classes:s[1],disable:typeof s[6].container=="boolean"&&!s[6].container,$$slots:{default:[ue]},$$scope:{ctx:s}}}),{c(){B(e.$$.fragment)},m(l,n){C(e,l,n),t=!0},p(l,[n]){const a={};n&4&&(a.visible=l[2]),n&1&&(a.elem_id=l[0]),n&2&&(a.elem_classes=l[1]),n&64&&(a.disable=typeof l[6].container=="boolean"&&!l[6].container),n&5112&&(a.$$scope={dirty:n,ctx:l}),e.$set(a)},i(l){t||(h(e.$$.fragment,l),t=!0)},o(l){g(e.$$.fragment,l),t=!1},d(l){j(e,l)}}}function be(s,e,t){let{elem_id:l=""}=e,{elem_classes:n=[]}=e,{visible:a=!0}=e,{color:i=void 0}=e,{value:c}=e,{label:r="Label"}=e,{style:_={}}=e,{loading_status:u}=e,{show_label:p}=e,{selectable:d=!1}=e;const b=K();function f(o){ee.call(this,s,o)}return s.$$set=o=>{"elem_id"in o&&t(0,l=o.elem_id),"elem_classes"in o&&t(1,n=o.elem_classes),"visible"in o&&t(2,a=o.visible),"color"in o&&t(3,i=o.color),"value"in o&&t(4,c=o.value),"label"in o&&t(5,r=o.label),"style"in o&&t(6,_=o.style),"loading_status"in o&&t(7,u=o.loading_status),"show_label"in o&&t(8,p=o.show_label),"selectable"in o&&t(9,d=o.selectable)},s.$$.update=()=>{s.$$.dirty&16&&b("change")},[l,n,a,i,c,r,_,u,p,d,f]}class me extends Z{constructor(e){super(),q(this,e,be,_e,D,{elem_id:0,elem_classes:1,visible:2,color:3,value:4,label:5,style:6,loading_status:7,show_label:8,selectable:9})}}var we=me;const pe=["static"],ye=s=>({type:{payload:"{ label: string; confidences?: Array<{ label: string; confidence: number }>"},description:{payload:"output label and optional set of confidences per label"}});export{we as Component,ye as document,pe as modes}; +//# sourceMappingURL=index.60be8090.js.map diff --git a/gradio/templates/frontend/assets/index.60be8090.js.map b/gradio/templates/frontend/assets/index.60be8090.js.map new file mode 100644 index 0000000000000000000000000000000000000000..c1d02d78c3f66adca3fdeb3c8fdc28def8aed00f --- /dev/null +++ b/gradio/templates/frontend/assets/index.60be8090.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.60be8090.js","sources":["../../../../ui/packages/icons/src/LineChart.svelte","../../../../ui/packages/label/src/Label.svelte","../../../../ui/packages/app/src/components/Label/Label.svelte","../../../../ui/packages/app/src/components/Label/index.ts"],"sourcesContent":["\n\t\n\n","\n\n
\n\t\n\t\t{value.label}\n\t
\n\t{#if typeof value === \"object\" && value.confidences}\n\t\t{#each value.confidences as confidence_set, i}\n\t\t\t {\n\t\t\t\t\tdispatch(\"select\", { index: i, value: confidence_set.label });\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{confidence_set.label}
\n\t\t\t\t\t\t{#if value.confidences}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{Math.round(confidence_set.confidence * 100)}%\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t{/each}\n\t{/if}\n
\n\n\n","\n\n\n\t\n\t{#if show_label}\n\t\t\n\t{/if}\n\t{#if typeof value === \"object\" && value !== undefined && value !== null}\n\t\t
contributors',l=['\xA9 Carto',a].join(" "),c=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),i={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:a,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}]},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}]},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:l,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}]},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:l,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}]},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:c,tiles:["https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}]},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:c,tiles:["https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}]},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),tiles:["https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}]}},s=r(i);o.exports={requiredVersion:"1.10.1",styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:i,styleValuesNonMapbox:s,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install mapbox-gl@1.10.1."].join(` +`),noAccessTokenErrorMsg:["Missing Mapbox access token.","Mapbox trace type require a Mapbox access token to be registered.","For example:"," Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",s.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` +`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",path1:"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",path2:"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",polygon:"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner":"display: none;","ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner":"display: block; margin-top:2px","ctrl-attrib.mapboxgl-compact:hover":"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;","ctrl-attrib.mapboxgl-compact::after":`content: ""; cursor: pointer; position: absolute; background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;`,"ctrl-attrib.mapboxgl-compact":"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;","ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":`display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`}}},{"../../lib/sort_object_keys":526}],612:[function(e,o,f){var r=e("../../lib");o.exports=function(a,l){var c=a.split(" "),i=c[0],s=c[1],u=r.isArrayOrTypedArray(l)?r.mean(l):l,d=.5+u/100,h=1.5+u/100,m=["",""],g=[0,0];switch(i){case"top":m[0]="top",g[1]=-h;break;case"bottom":m[0]="bottom",g[1]=h}switch(s){case"left":m[1]="right",g[0]=-d;break;case"right":m[1]="left",g[0]=d}return{anchor:m[0]&&m[1]?m.join("-"):m[0]?m[0]:m[1]?m[1]:"center",offset:g}}},{"../../lib":503}],613:[function(e,o,f){var r=e("mapbox-gl/dist/mapbox-gl-unminified"),a=e("../../lib"),l=a.strTranslate,c=a.strScale,i=e("../../plots/get_data").getSubplotCalcData,s=e("../../constants/xmlns_namespaces"),u=e("@plotly/d3"),d=e("../../components/drawing"),h=e("../../lib/svg_text_utils"),m=e("./mapbox"),g=f.constants=e("./constants");function p(v){return typeof v=="string"&&(g.styleValuesMapbox.indexOf(v)!==-1||v.indexOf("mapbox://")===0)}f.name="mapbox",f.attr="subplot",f.idRoot="mapbox",f.idRegex=f.attrRegex=a.counterRegex("mapbox"),f.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}},f.layoutAttributes=e("./layout_attributes"),f.supplyLayoutDefaults=e("./layout_defaults"),f.plot=function(v){var y=v._fullLayout,x=v.calcdata,w=y._subplots.mapbox;if(r.version!==g.requiredVersion)throw new Error(g.wrongVersionErrorMsg);var k=function(M,E){var D=M._fullLayout;if(M._context.mapboxAccessToken==="")return"";for(var O=[],R=[],z=!1,L=!1,P=0;P1&&a.warn(g.multipleTokensErrorMsg),O[0]):(R.length&&a.log(["Listed mapbox access token(s)",R.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}(v,w);r.accessToken=k;for(var b=0;bR/2){var z=M.split("|").join("
");D.text(z).attr("data-unformatted",z).call(h.convertToTspans,v),O=d.bBox(D.node())}D.attr("transform",l(-3,8-O.height)),E.insert("rect",".static-attribution").attr({x:-O.width-6,y:-O.height-3,width:O.width+6,height:O.height+3,fill:"rgba(255, 255, 255, 0.75)"});var L=1;O.width+6>R&&(L=R/(O.width+6));var P=[w.l+w.w*T.x[1],w.t+w.h*(1-T.y[0])];E.attr("transform",l(P[0],P[1])+c(L))}},f.updateFx=function(v){for(var y=v._fullLayout,x=y._subplots.mapbox,w=0;w0){for(var g=0;g0}function d(h){var m={},g={};switch(h.type){case"circle":r.extendFlat(g,{"circle-radius":h.circle.radius,"circle-color":h.color,"circle-opacity":h.opacity});break;case"line":r.extendFlat(g,{"line-width":h.line.width,"line-color":h.color,"line-opacity":h.opacity,"line-dasharray":h.line.dash});break;case"fill":r.extendFlat(g,{"fill-color":h.color,"fill-outline-color":h.fill.outlinecolor,"fill-opacity":h.opacity});break;case"symbol":var p=h.symbol,v=l(p.textposition,p.iconsize);r.extendFlat(m,{"icon-image":p.icon+"-15","icon-size":p.iconsize/10,"text-field":p.text,"text-size":p.textfont.size,"text-anchor":v.anchor,"text-offset":v.offset,"symbol-placement":p.placement}),r.extendFlat(g,{"icon-color":h.color,"text-color":p.textfont.color,"text-opacity":h.opacity});break;case"raster":r.extendFlat(g,{"raster-fade-duration":0,"raster-opacity":h.opacity})}return{layout:m,paint:g}}s.update=function(h){this.visible?this.needsNewImage(h)?this.updateImage(h):this.needsNewSource(h)?(this.removeLayer(),this.updateSource(h),this.updateLayer(h)):this.needsNewLayer(h)?this.updateLayer(h):this.updateStyle(h):(this.updateSource(h),this.updateLayer(h)),this.visible=u(h)},s.needsNewImage=function(h){return this.subplot.map.getSource(this.idSource)&&this.sourceType==="image"&&h.sourcetype==="image"&&(this.source!==h.source||JSON.stringify(this.coordinates)!==JSON.stringify(h.coordinates))},s.needsNewSource=function(h){return this.sourceType!==h.sourcetype||JSON.stringify(this.source)!==JSON.stringify(h.source)||this.layerType!==h.type},s.needsNewLayer=function(h){return this.layerType!==h.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},s.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},s.updateImage=function(h){this.subplot.map.getSource(this.idSource).updateImage({url:h.source,coordinates:h.coordinates});var m=this.findFollowingMapboxLayerId(this.lookupBelow());m!==null&&this.subplot.map.moveLayer(this.idLayer,m)},s.updateSource=function(h){var m=this.subplot.map;if(m.getSource(this.idSource)&&m.removeSource(this.idSource),this.sourceType=h.sourcetype,this.source=h.source,u(h)){var g=function(p){var v,y=p.sourcetype,x=p.source,w={type:y};return y==="geojson"?v="data":y==="vector"?v=typeof x=="string"?"url":"tiles":y==="raster"?(v="tiles",w.tileSize=256):y==="image"&&(v="url",w.coordinates=p.coordinates),w[v]=x,p.sourceattribution&&(w.attribution=a(p.sourceattribution)),w}(h);m.addSource(this.idSource,g)}},s.findFollowingMapboxLayerId=function(h){if(h==="traces")for(var m=this.subplot.getMapLayers(),g=0;g1)for(O=0;O-1&&x(B.originalEvent,R,[O.xaxis],[O.yaxis],O.id,N),G.indexOf("event")>-1&&u.click(R,B.originalEvent)}}},T.updateFx=function(E){var D=this,O=D.map,R=D.gd;if(!D.isStatic){var z,L=E.dragmode;z=h(L)?function(B,G){(B.range={})[D.id]=[N([G.xmin,G.ymin]),N([G.xmax,G.ymax])]}:function(B,G,W){(B.lassoPoints={})[D.id]=W.filtered.map(N)};var P=D.dragOptions;D.dragOptions=a.extendDeep(P||{},{dragmode:E.dragmode,element:D.div,gd:R,plotinfo:{id:D.id,domain:E[D.id].domain,xaxis:D.xaxis,yaxis:D.yaxis,fillRangeItems:z},xaxes:[D.xaxis],yaxes:[D.yaxis],subplot:D.id}),O.off("click",D.onClickInPanHandler),g(L)||m(L)?(O.dragPan.disable(),O.on("zoomstart",D.clearSelect),D.dragOptions.prepFn=function(B,G,W){p(B,G,W,D.dragOptions,L)},s.init(D.dragOptions)):(O.dragPan.enable(),O.off("zoomstart",D.clearSelect),D.div.onmousedown=null,D.onClickInPanHandler=D.onClickInPanFn(D.dragOptions),O.on("click",D.onClickInPanHandler))}function N(B){var G=D.map.unproject(B);return[G.lng,G.lat]}},T.updateFramework=function(E){var D=E[this.id].domain,O=E._size,R=this.div.style;R.width=O.w*(D.x[1]-D.x[0])+"px",R.height=O.h*(D.y[1]-D.y[0])+"px",R.left=O.l+D.x[0]*O.w+"px",R.top=O.t+(1-D.y[1])*O.h+"px",this.xaxis._offset=O.l+D.x[0]*O.w,this.xaxis._length=O.w*(D.x[1]-D.x[0]),this.yaxis._offset=O.t+(1-D.y[1])*O.h,this.yaxis._length=O.h*(D.y[1]-D.y[0])},T.updateLayers=function(E){var D,O=E[this.id].layers,R=this.layerList;if(O.length!==R.length){for(D=0;D=K.width-20?(Z["text-anchor"]="start",Z.x=5):(Z["text-anchor"]="end",Z.x=K._paper.attr("width")-7),te.attr(Z);var re=te.select(".js-link-to-tool"),U=te.select(".js-link-spacer"),q=te.select(".js-sourcelinks");W._context.showSources&&W._context.showSources(W),W._context.showLink&&function($,ne){ne.text("");var H=ne.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text($._context.linkText+" "+String.fromCharCode(187));if($._context.sendData)H.on("click",function(){b.sendDataToCloud($)});else{var Q=window.location.pathname.split("/"),ee=window.location.search;H.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+Q[2].split(".")[0]+"/"+Q[1]+ee})}}(W,re),U.text(re.text()&&q.text()?" - ":"")}},b.sendDataToCloud=function(W){var K=(window.PLOTLYENV||{}).BASE_URL||W._context.plotlyServerURL;if(K){W.emit("plotly_beforeexport");var te=r.select(W).append("div").attr("id","hiddenform").style("display","none"),Y=te.append("form").attr({action:K+"/external",method:"post",target:"_blank"});return Y.append("input").attr({type:"text",name:"data"}).node().value=b.graphJson(W,!1,"keepdata"),Y.node().submit(),te.remove(),W.emit("plotly_afterexport"),!1}};var S=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],A=["year","month","dayMonth","dayMonthYear"];function M(W,K){var te=W._context.locale;te||(te="en-US");var Y=!1,Z={};function re(Q){for(var ee=!0,ie=0;ie1&&Te.length>1){for(i.getComponentMethod("grid","sizeDefaults")(U,re),Z=0;Z15&&Te.length>15&&re.shapes.length===0&&re.images.length===0,b.linkSubplots($,re,q,Y),b.cleanPlot($,re,q,Y);var ke=!(!Y._has||!Y._has("gl2d")),Ee=!(!re._has||!re._has("gl2d")),ze=!(!Y._has||!Y._has("cartesian"))||ke,Fe=!(!re._has||!re._has("cartesian"))||Ee;ze&&!Fe?Y._bgLayer.remove():Fe&&!ze&&(re._shouldCreateBgLayer=!0),Y._zoomlayer&&!W._dragging&&p({_fullLayout:Y}),function(qe,We){var Ye,nt=[];We.meta&&(Ye=We._meta={meta:We.meta,layout:{meta:We.meta}});for(var ft=0;ft0){var ne=1-2*U;Y=Math.round(ne*Y),Z=Math.round(ne*Z)}}var H=b.layoutAttributes.width.min,Q=b.layoutAttributes.height.min;Y1,ie=!K.height&&Math.abs(te.height-Z)>1;(ie||ee)&&(ee&&(te.width=Y),ie&&(te.height=Z)),W._initialAutoSize||(W._initialAutoSize={width:Y,height:Z}),b.sanitizeMargins(te)},b.supplyLayoutModuleDefaults=function(W,K,te,Y){var Z,re,U,q=i.componentsRegistry,$=K._basePlotModules,ne=i.subplotsRegistry.cartesian;for(Z in q)(U=q[Z]).includeBasePlot&&U.includeBasePlot(W,K);for(var H in $.length||$.push(ne),K._has("cartesian")&&(i.getComponentMethod("grid","contentDefaults")(W,K),ne.finalizeSubplots(W,K)),K._subplots)K._subplots[H].sort(d.subplotSort);for(re=0;re<$.length;re++)(U=$[re]).supplyLayoutDefaults&&U.supplyLayoutDefaults(W,K,te);var Q=K._modules;for(re=0;re1&&(te.l/=ae,te.r/=ae)}if(H){var ue=(te.t+te.b)/H;ue>1&&(te.t/=ue,te.b/=ue)}var le=te.xl!==void 0?te.xl:te.x,ge=te.xr!==void 0?te.xr:te.x,fe=te.yt!==void 0?te.yt:te.y,me=te.yb!==void 0?te.yb:te.y;Q[K]={l:{val:le,size:te.l+ie},r:{val:ge,size:te.r+ie},b:{val:me,size:te.b+ie},t:{val:fe,size:te.t+ie}},ee[K]=1}else delete Q[K],delete ee[K];if(!Y._replotting)return b.doAutoMargin(W)}},b.doAutoMargin=function(W){var K=W._fullLayout,te=K.width,Y=K.height;K._size||(K._size={}),z(K);var Z=K._size,re=K.margin,U=d.extendFlat({},Z),q=re.l,$=re.r,ne=re.t,H=re.b,Q=K._pushmargin,ee=K._pushmarginIds;if(K.margin.autoexpand!==!1){for(var ie in Q)ee[ie]||delete Q[ie];for(var ae in Q.base={l:{val:0,size:q},r:{val:1,size:$},t:{val:1,size:ne},b:{val:0,size:H}},Q){var ue=Q[ae].l||{},le=Q[ae].b||{},ge=ue.val,fe=ue.size,me=le.val,_e=le.size;for(var we in Q){if(c(fe)&&Q[we].r){var Te=Q[we].r.val,Oe=Q[we].r.size;if(Te>ge){var de=(fe*Te+(Oe-te)*ge)/(Te-ge),ye=(Oe*(1-ge)+(fe-te)*(1-Te))/(Te-ge);de+ye>q+$&&(q=de,$=ye)}}if(c(_e)&&Q[we].t){var Me=Q[we].t.val,ke=Q[we].t.size;if(Me>me){var Ee=(_e*Me+(ke-Y)*me)/(Me-me),ze=(ke*(1-me)+(_e-Y)*(1-Me))/(Me-me);Ee+ze>H+ne&&(H=Ee,ne=ze)}}}}}var Fe=d.constrain(te-re.l-re.r,2,64),Ve=d.constrain(Y-re.t-re.b,2,64),Ke=Math.max(0,te-Fe),Re=Math.max(0,Y-Ve);if(Ke){var qe=(q+$)/Ke;qe>1&&(q/=qe,$/=qe)}if(Re){var We=(H+ne)/Re;We>1&&(H/=We,ne/=We)}if(Z.l=Math.round(q),Z.r=Math.round($),Z.t=Math.round(ne),Z.b=Math.round(H),Z.p=Math.round(re.pad),Z.w=Math.round(te)-Z.l-Z.r,Z.h=Math.round(Y)-Z.t-Z.b,!K._replotting&&b.didMarginChange(U,Z)){"_redrawFromAutoMarginCount"in K?K._redrawFromAutoMarginCount++:K._redrawFromAutoMarginCount=1;var Ye=3*(1+Object.keys(ee).length);if(K._redrawFromAutoMarginCount0&&(W._transitioningWithDuration=!0),W._transitionData._interruptCallbacks.push(function(){Y=!0}),te.redraw&&W._transitionData._interruptCallbacks.push(function(){return i.call("redraw",W)}),W._transitionData._interruptCallbacks.push(function(){W.emit("plotly_transitioninterrupted",[])});var q=0,$=0;function ne(){return q++,function(){$++,Y||$!==q||function(H){!W._transitionData||(function(Q){if(Q)for(;Q.length;)Q.shift()}(W._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(te.redraw)return i.call("redraw",W)}).then(function(){W._transitioning=!1,W._transitioningWithDuration=!1,W.emit("plotly_transitioned",[])}).then(H))}(U)}}te.runFn(ne),setTimeout(ne())})}],re=d.syncOrAsync(Z,W);return re&&re.then||(re=Promise.resolve()),re.then(function(){return W})}b.didMarginChange=function(W,K){for(var te=0;te1)return!0}return!1},b.graphJson=function(W,K,te,Y,Z,re){(Z&&K&&!W._fullData||Z&&!K&&!W._fullLayout)&&b.supplyDefaults(W);var U=Z?W._fullData:W.data,q=Z?W._fullLayout:W.layout,$=(W._transitionData||{})._frames;function ne(ee,ie){if(typeof ee=="function")return ie?"_function_":null;if(d.isPlainObject(ee)){var ae,ue={};return Object.keys(ee).sort().forEach(function(le){if(["_","["].indexOf(le.charAt(0))===-1)if(typeof ee[le]!="function"){if(te==="keepdata"){if(le.substr(le.length-3)==="src")return}else if(te==="keepstream"){if(typeof(ae=ee[le+"src"])=="string"&&ae.indexOf(":")>0&&!d.isPlainObject(ee.stream))return}else if(te!=="keepall"&&typeof(ae=ee[le+"src"])=="string"&&ae.indexOf(":")>0)return;ue[le]=ne(ee[le],ie)}else ie&&(ue[le]="_function")}),ue}return Array.isArray(ee)?ee.map(function(le){return ne(le,ie)}):d.isTypedArray(ee)?d.simpleMap(ee,d.identity):d.isJSDate(ee)?d.ms2DateTimeLocal(+ee):ee}var H={data:(U||[]).map(function(ee){var ie=ne(ee);return K&&delete ie.fit,ie})};if(!K&&(H.layout=ne(q),Z)){var Q=q._size;H.layout.computed={margin:{b:Q.b,l:Q.l,r:Q.r,t:Q.t}}}return $&&(H.frames=ne($)),re&&(H.config=ne(W._context,!0)),Y==="object"?H:JSON.stringify(H)},b.modifyFrames=function(W,K){var te,Y,Z,re=W._transitionData._frames,U=W._transitionData._frameHash;for(te=0;te=0;re--)if(we[re].enabled){te._indexToPoints=we[re]._indexToPoints;break}Y&&Y.calc&&(_e=Y.calc(W,te))}Array.isArray(_e)&&_e[0]||(_e=[{x:m,y:m}]),_e[0].t||(_e[0].t={}),_e[0].trace=te,ne[fe]=_e}}for(B(U,q,$),Z=0;Z1e-10?g:0}function m(g,p,v){p=p||0,v=v||0;for(var y=g.length,x=new Array(y),w=0;w0?w:1/0}),y=r.mod(v+1,p.length);return[p[v],p[y]]},findIntersectionXY:u,findXYatLength:function(g,p,v,y){var x=-p*v,w=p*p+1,k=2*(p*x-v),b=x*x+v*v-g*g,T=Math.sqrt(k*k-4*w*b),_=(-k+T)/(2*w),S=(-k-T)/(2*w);return[[_,p*_+x+y],[S,p*S+x+y]]},clampTiny:h,pathPolygon:function(g,p,v,y,x,w){return"M"+m(d(g,p,v,y),x,w).join("L")},pathPolygonAnnulus:function(g,p,v,y,x,w,k){var b,T;g=90||Jt>90&&Be>=450?1:Tt<=0&&Pe<=0?0:Math.max(Tt,Pe),Pt=Jt<=180&&Be>=180||Jt>180&&Be>=540?-1:Ge>=0&&dt>=0?0:Math.min(Ge,dt),At=Jt<=270&&Be>=270||Jt>270&&Be>=630?-1:Tt>=0&&Pe>=0?0:Math.min(Tt,Pe),at=Be>=360?1:Ge<=0&&dt<=0?0:Math.max(Ge,dt),[Pt,At,at,et]}(ge),de=Oe[2]-Oe[0],ye=Oe[3]-Oe[1],Me=le/ue,ke=Math.abs(ye/de);Me>ke?(fe=ue,Te=(le-(me=ue*ke))/H.h/2,_e=[ie[0],ie[1]],we=[ae[0]+Te,ae[1]-Te]):(me=le,Te=(ue-(fe=le/ke))/H.w/2,_e=[ie[0]+Te,ie[1]-Te],we=[ae[0],ae[1]]),this.xLength2=fe,this.yLength2=me,this.xDomain2=_e,this.yDomain2=we;var Ee,ze=this.xOffset2=H.l+H.w*_e[0],Fe=this.yOffset2=H.t+H.h*(1-we[1]),Ve=this.radius=fe/de,Ke=this.innerRadius=this.getHole($)*Ve,Re=this.cx=ze-Ve*Oe[0],qe=this.cy=Fe+Ve*Oe[3],We=this.cxx=Re-ze,Ye=this.cyy=qe-Fe,nt=Q.side;nt==="counterclockwise"?(Ee=nt,nt="top"):nt==="clockwise"&&(Ee=nt,nt="bottom"),this.radialAxis=this.mockAxis(q,$,Q,{_id:"x",side:nt,_trueSide:Ee,domain:[Ke/H.w,Ve/H.w]}),this.angularAxis=this.mockAxis(q,$,ee,{side:"right",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(q,$),this.updateAngularAxis(q,$),this.updateRadialAxis(q,$),this.updateRadialAxisTitle(q,$),this.xaxis=this.mockCartesianAxis(q,$,{_id:"x",domain:_e}),this.yaxis=this.mockCartesianAxis(q,$,{_id:"y",domain:we});var ft=this.pathSubplot();this.clipPaths.forTraces.select("path").attr("d",ft).attr("transform",s(We,Ye)),ne.frontplot.attr("transform",s(ze,Fe)).call(d.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),ne.bg.attr("d",ft).attr("transform",s(Re,qe)).call(u.fill,$.bgcolor)},Y.mockAxis=function(q,$,ne,H){var Q=c.extendFlat({},ne,H);return p(Q,$,q),Q},Y.mockCartesianAxis=function(q,$,ne){var H=this,Q=H.isSmith,ee=ne._id,ie=c.extendFlat({type:"linear"},ne);g(ie,q);var ae={x:[0,2],y:[1,3]};return ie.setRange=function(){var ue=H.sectorBBox,le=ae[ee],ge=H.radialAxis._rl,fe=(ge[1]-ge[0])/(1-H.getHole($));ie.range=[ue[le[0]]*fe,ue[le[1]]*fe]},ie.isPtWithinRange=ee!=="x"||Q?function(){return!0}:function(ue){return H.isPtInside(ue)},ie.setRange(),ie.setScale(),ie},Y.doAutoRange=function(q,$){var ne=this.gd,H=this.radialAxis,Q=this.getRadial($);v(ne,H);var ee=H.range;Q.range=ee.slice(),Q._input.range=ee.slice(),H._rl=[H.r2l(ee[0],null,"gregorian"),H.r2l(ee[1],null,"gregorian")]},Y.updateRadialAxis=function(q,$){var ne=this,H=ne.gd,Q=ne.layers,ee=ne.radius,ie=ne.innerRadius,ae=ne.cx,ue=ne.cy,le=ne.getRadial($),ge=G(ne.getSector($)[0],360),fe=ne.radialAxis,me=ie90&&ge<=270&&(fe.tickangle=180);var we=_e?function(Ve){var Ke=N(ne,z([Ve.x,0]));return s(Ke[0]-ae,Ke[1]-ue)}:function(Ve){return s(fe.l2p(Ve.x)+ie,0)},Te=_e?function(Ve){return P(ne,Ve.x,-1/0,1/0)}:function(Ve){return ne.pathArc(fe.r2p(Ve.x)+ie)},Oe=Z(le);if(ne.radialTickLayout!==Oe&&(Q["radial-axis"].selectAll(".xtick").remove(),ne.radialTickLayout=Oe),me){fe.setScale();var de=0,ye=_e?(fe.tickvals||[]).filter(function(Ve){return Ve>=0}).map(function(Ve){return m.tickText(fe,Ve,!0,!1)}):m.calcTicks(fe),Me=_e?ye:m.clipEnds(fe,ye),ke=m.getTickSigns(fe)[2];_e&&((fe.ticks==="top"&&fe.side==="bottom"||fe.ticks==="bottom"&&fe.side==="top")&&(ke=-ke),fe.ticks==="top"&&fe.side==="top"&&(de=-fe.ticklen),fe.ticks==="bottom"&&fe.side==="bottom"&&(de=fe.ticklen)),m.drawTicks(H,fe,{vals:ye,layer:Q["radial-axis"],path:m.makeTickPath(fe,0,ke),transFn:we,crisp:!1}),m.drawGrid(H,fe,{vals:Me,layer:Q["radial-grid"],path:Te,transFn:c.noop,crisp:!1}),m.drawLabels(H,fe,{vals:ye,layer:Q["radial-axis"],transFn:we,labelFns:m.makeLabelFns(fe,de)})}var Ee=ne.radialAxisAngle=ne.vangles?K(re(W(le.angle),ne.vangles)):le.angle,ze=s(ae,ue),Fe=ze+i(-Ee);U(Q["radial-axis"],me&&(le.showticklabels||le.ticks),{transform:Fe}),U(Q["radial-grid"],me&&le.showgrid,{transform:_e?"":ze}),U(Q["radial-line"].select("line"),me&&le.showline,{x1:_e?-ee:ie,y1:0,x2:ee,y2:0,transform:Fe}).attr("stroke-width",le.linewidth).call(u.stroke,le.linecolor)},Y.updateRadialAxisTitle=function(q,$,ne){if(!this.isSmith){var H=this.gd,Q=this.radius,ee=this.cx,ie=this.cy,ae=this.getRadial($),ue=this.id+"title",le=0;if(ae.title){var ge=d.bBox(this.layers["radial-axis"].node()).height,fe=ae.title.font.size,me=ae.side;le=me==="top"?fe:me==="counterclockwise"?-(ge+.4*fe):ge+.8*fe}var _e=ne!==void 0?ne:this.radialAxisAngle,we=W(_e),Te=Math.cos(we),Oe=Math.sin(we),de=ee+Q/2*Te+le*Oe,ye=ie-Q/2*Oe+le*Te;this.layers["radial-axis-title"]=k.draw(H,ue,{propContainer:ae,propName:this.id+".radialaxis.title",placeholder:B(H,"Click to enter radial axis title"),attributes:{x:de,y:ye,"text-anchor":"middle"},transform:{rotate:-_e}})}},Y.updateAngularAxis=function(q,$){var ne=this,H=ne.gd,Q=ne.layers,ee=ne.radius,ie=ne.innerRadius,ae=ne.cx,ue=ne.cy,le=ne.getAngular($),ge=ne.angularAxis,fe=ne.isSmith;fe||(ne.fillViewInitialKey("angularaxis.rotation",le.rotation),ge.setGeometry(),ge.setScale());var me=fe?function(Ve){var Ke=N(ne,z([0,Ve.x]));return Math.atan2(Ke[0]-ae,Ke[1]-ue)-Math.PI/2}:function(Ve){return ge.t2g(Ve.x)};ge.type==="linear"&&ge.thetaunit==="radians"&&(ge.tick0=K(ge.tick0),ge.dtick=K(ge.dtick));var _e=function(Ve){return s(ae+ee*Math.cos(Ve),ue-ee*Math.sin(Ve))},we=fe?function(Ve){var Ke=N(ne,z([0,Ve.x]));return s(Ke[0],Ke[1])}:function(Ve){return _e(me(Ve))},Te=fe?function(Ve){var Ke=N(ne,z([0,Ve.x])),Re=Math.atan2(Ke[0]-ae,Ke[1]-ue)-Math.PI/2;return s(Ke[0],Ke[1])+i(-K(Re))}:function(Ve){var Ke=me(Ve);return _e(Ke)+i(-K(Ke))},Oe=fe?function(Ve){return L(ne,Ve.x,0,1/0)}:function(Ve){var Ke=me(Ve),Re=Math.cos(Ke),qe=Math.sin(Ke);return"M"+[ae+ie*Re,ue-ie*qe]+"L"+[ae+ee*Re,ue-ee*qe]},de=m.makeLabelFns(ge,0).labelStandoff,ye={xFn:function(Ve){var Ke=me(Ve);return Math.cos(Ke)*de},yFn:function(Ve){var Ke=me(Ve),Re=Math.sin(Ke)>0?.2:1;return-Math.sin(Ke)*(de+Ve.fontSize*Re)+Math.abs(Math.cos(Ke))*(Ve.fontSize*E)},anchorFn:function(Ve){var Ke=me(Ve),Re=Math.cos(Ke);return Math.abs(Re)<.1?"middle":Re>0?"start":"end"},heightFn:function(Ve,Ke,Re){var qe=me(Ve);return-.5*(1+Math.sin(qe))*Re}},Me=Z(le);ne.angularTickLayout!==Me&&(Q["angular-axis"].selectAll("."+ge._id+"tick").remove(),ne.angularTickLayout=Me);var ke,Ee=fe?[1/0].concat(ge.tickvals||[]).map(function(Ve){return m.tickText(ge,Ve,!0,!1)}):m.calcTicks(ge);if(fe&&(Ee[0].text="\u221E",Ee[0].fontSize*=1.75),$.gridshape==="linear"?(ke=Ee.map(me),c.angleDelta(ke[0],ke[1])<0&&(ke=ke.slice().reverse())):ke=null,ne.vangles=ke,ge.type==="category"&&(Ee=Ee.filter(function(Ve){return c.isAngleInsideSector(me(Ve),ne.sectorInRad)})),ge.visible){var ze=ge.ticks==="inside"?-1:1,Fe=(ge.linewidth||1)/2;m.drawTicks(H,ge,{vals:Ee,layer:Q["angular-axis"],path:"M"+ze*Fe+",0h"+ze*ge.ticklen,transFn:Te,crisp:!1}),m.drawGrid(H,ge,{vals:Ee,layer:Q["angular-grid"],path:Oe,transFn:c.noop,crisp:!1}),m.drawLabels(H,ge,{vals:Ee,layer:Q["angular-axis"],repositionOnUpdate:!0,transFn:we,labelFns:ye})}U(Q["angular-line"].select("path"),le.showline,{d:ne.pathSubplot(),transform:s(ae,ue)}).attr("stroke-width",le.linewidth).call(u.stroke,le.linecolor)},Y.updateFx=function(q,$){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(q),this.updateRadialDrag(q,$,0),this.updateRadialDrag(q,$,1)),this.updateHoverAndMainDrag(q))},Y.updateHoverAndMainDrag=function(q){var $,ne,H=this,Q=H.isSmith,ee=H.gd,ie=H.layers,ae=q._zoomlayer,ue=D.MINZOOM,le=D.OFFEDGE,ge=H.radius,fe=H.innerRadius,me=H.cx,_e=H.cy,we=H.cxx,Te=H.cyy,Oe=H.sectorInRad,de=H.vangles,ye=H.radialAxis,Me=O.clampTiny,ke=O.findXYatLength,Ee=O.findEnclosingVertexAngles,ze=D.cornerHalfWidth,Fe=D.cornerLen/2,Ve=y.makeDragger(ie,"path","maindrag","crosshair");r.select(Ve).attr("d",H.pathSubplot()).attr("transform",s(me,_e)),Ve.onmousemove=function(rt){w.hover(ee,rt,H.id),ee._fullLayout._lasthover=Ve,ee._fullLayout._hoversubplot=H.id},Ve.onmouseout=function(rt){ee._dragging||x.unhover(ee,rt)};var Ke,Re,qe,We,Ye,nt,ft,vt,Pt,At={element:Ve,gd:ee,subplot:H.id,plotinfo:{id:H.id,xaxis:H.xaxis,yaxis:H.yaxis},xaxes:[H.xaxis],yaxes:[H.yaxis]};function at(rt,lt){return Math.sqrt(rt*rt+lt*lt)}function et(rt,lt){return at(rt-we,lt-Te)}function Ot(rt,lt){return Math.atan2(Te-lt,rt-we)}function Wt(rt,lt){return[rt*Math.cos(lt),rt*Math.sin(-lt)]}function Jt(rt,lt){if(rt===0)return H.pathSector(2*ze);var ot=Fe/rt,kt=lt-ot,wt=lt+ot,Vt=Math.max(0,Math.min(rt,ge)),Ut=Vt-ze,tt=Vt+ze;return"M"+Wt(Ut,kt)+"A"+[Ut,Ut]+" 0,0,0 "+Wt(Ut,wt)+"L"+Wt(tt,wt)+"A"+[tt,tt]+" 0,0,1 "+Wt(tt,kt)+"Z"}function Be(rt,lt,ot){if(rt===0)return H.pathSector(2*ze);var kt,wt,Vt=Wt(rt,lt),Ut=Wt(rt,ot),tt=Me((Vt[0]+Ut[0])/2),bt=Me((Vt[1]+Ut[1])/2);if(tt&&bt){var zt=bt/tt,St=-1/zt,Dt=ke(ze,zt,tt,bt);kt=ke(Fe,St,Dt[0][0],Dt[0][1]),wt=ke(Fe,St,Dt[1][0],Dt[1][1])}else{var Le,Je;bt?(Le=Fe,Je=ze):(Le=ze,Je=Fe),kt=[[tt-Le,bt-Je],[tt+Le,bt-Je]],wt=[[tt-Le,bt+Je],[tt+Le,bt+Je]]}return"M"+kt.join("L")+"L"+wt.reverse().join("L")+"Z"}function Ge(rt,lt){return lt=Math.max(Math.min(lt,ge),fe),rtue?(rt-1&&rt===1&&T(lt,ee,[H.xaxis],[H.yaxis],H.id,At),ot.indexOf("event")>-1&&w.click(ee,lt,H.id)}At.prepFn=function(rt,lt,ot){var kt=ee._fullLayout.dragmode,wt=Ve.getBoundingClientRect();ee._fullLayout._calcInverseTransform(ee);var Vt=ee._fullLayout._invTransform;$=ee._fullLayout._invScaleX,ne=ee._fullLayout._invScaleY;var Ut=c.apply3DTransform(Vt)(lt-wt.left,ot-wt.top);if(Ke=Ut[0],Re=Ut[1],de){var tt=O.findPolygonOffset(ge,Oe[0],Oe[1],de);Ke+=we+tt[0],Re+=Te+tt[1]}switch(kt){case"zoom":At.clickFn=He,Q||(At.moveFn=de?Ie:dt,At.doneFn=Ae,function(){qe=null,We=null,Ye=H.pathSubplot(),nt=!1;var bt=ee._fullLayout[H.id];ft=a(bt.bgcolor).getLuminance(),(vt=y.makeZoombox(ae,ft,me,_e,Ye)).attr("fill-rule","evenodd"),Pt=y.makeCorners(ae,me,_e),_(ee)}());break;case"select":case"lasso":b(rt,lt,ot,At,kt)}},x.init(At)},Y.updateRadialDrag=function(q,$,ne){var H=this,Q=H.gd,ee=H.layers,ie=H.radius,ae=H.innerRadius,ue=H.cx,le=H.cy,ge=H.radialAxis,fe=D.radialDragBoxSize,me=fe/2;if(ge.visible){var _e,we,Te,Oe=W(H.radialAxisAngle),de=ge._rl,ye=de[0],Me=de[1],ke=de[ne],Ee=.75*(de[1]-de[0])/(1-H.getHole($))/ie;ne?(_e=ue+(ie+me)*Math.cos(Oe),we=le-(ie+me)*Math.sin(Oe),Te="radialdrag"):(_e=ue+(ae-me)*Math.cos(Oe),we=le-(ae-me)*Math.sin(Oe),Te="radialdrag-inner");var ze,Fe,Ve,Ke=y.makeRectDragger(ee,Te,"crosshair",-me,-me,fe,fe),Re={element:Ke,gd:Q};U(r.select(Ke),ge.visible&&ae0==(ne?Ve>ye:Vep?function(k){return k<=0}:function(k){return k>=0};d.c2g=function(k){var b=d.c2l(k)-g;return(w(b)?b:0)+x},d.g2c=function(k){return d.l2c(k+g-x)},d.g2p=function(k){return k*y},d.c2p=function(k){return d.g2p(d.c2g(k))}}})(i,s);break;case"angularaxis":(function(d,h){var m=d.type;if(m==="linear"){var g=d.d2c,p=d.c2d;d.d2c=function(v,y){return function(x,w){return w==="degrees"?l(x):x}(g(v),y)},d.c2d=function(v,y){return p(function(x,w){return w==="degrees"?c(x):x}(v,y))}}d.makeCalcdata=function(v,y){var x,w,k=v[y],b=v._length,T=function(E){return d.d2c(E,v.thetaunit)};if(k){if(r.isTypedArray(k)&&m==="linear"){if(b===k.length)return k;if(k.subarray)return k.subarray(0,b)}for(x=new Array(b),w=0;w0?1:0}function a(i){var s=i[0],u=i[1];if(!isFinite(s)||!isFinite(u))return[1,0];var d=(s+1)*(s+1)+u*u;return[(s*s+u*u-1)/d,2*u/d]}function l(i,s){var u=s[0],d=s[1];return[u*i.radius+i.cx,-d*i.radius+i.cy]}function c(i,s){return s*i.radius}o.exports={smith:a,reactanceArc:function(i,s,u,d){var h=l(i,a([u,s])),m=h[0],g=h[1],p=l(i,a([d,s])),v=p[0],y=p[1];if(s===0)return["M"+m+","+g,"L"+v+","+y].join(" ");var x=c(i,1/Math.abs(s));return["M"+m+","+g,"A"+x+","+x+" 0 0,"+(s<0?1:0)+" "+v+","+y].join(" ")},resistanceArc:function(i,s,u,d){var h=c(i,1/(s+1)),m=l(i,a([s,u])),g=m[0],p=m[1],v=l(i,a([s,d])),y=v[0],x=v[1];if(r(u)!==r(d)){var w=l(i,a([s,0]));return["M"+g+","+p,"A"+h+","+h+" 0 0,"+(00){for(var s=[],u=0;u=A&&(E.min=0,D.min=0,O.min=0,y.aaxis&&delete y.aaxis.min,y.baxis&&delete y.baxis.min,y.caxis&&delete y.caxis.min)}function v(y,x,w,k){var b=m[x._name];function T(D,O){return l.coerce(y,x,b,D,O)}T("uirevision",k.uirevision),x.type="linear";var _=T("color"),S=_!==b.color.dflt?_:w.font.color,A=x._name.charAt(0).toUpperCase(),M="Component "+A,E=T("title.text",M);x._hovertitle=E===M?E:A,l.coerceFont(T,"title.font",{family:w.font.family,size:l.bigFont(w.font.size),color:S}),T("min"),d(y,x,T,"linear"),s(y,x,T,"linear"),i(y,x,T,"linear"),u(y,x,T,{outerTicks:!0}),T("showticklabels")&&(l.coerceFont(T,"tickfont",{family:w.font.family,size:w.font.size,color:S}),T("tickangle"),T("tickformat")),h(y,x,T,{dfltColor:_,bgColor:w.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:b}),T("hoverformat"),T("layer")}o.exports=function(y,x,w){c(y,x,w,{type:"ternary",attributes:m,handleDefaults:p,font:x.font,paper_bgcolor:x.paper_bgcolor})}},{"../../components/color":366,"../../lib":503,"../../plot_api/plot_template":543,"../cartesian/line_grid_defaults":571,"../cartesian/prefix_suffix_defaults":573,"../cartesian/tick_label_defaults":578,"../cartesian/tick_mark_defaults":579,"../cartesian/tick_value_defaults":580,"../subplot_defaults":632,"./layout_attributes":635}],637:[function(e,o,f){var r=e("@plotly/d3"),a=e("tinycolor2"),l=e("../../registry"),c=e("../../lib"),i=c.strTranslate,s=c._,u=e("../../components/color"),d=e("../../components/drawing"),h=e("../cartesian/set_convert"),m=e("../../lib/extend").extendFlat,g=e("../plots"),p=e("../cartesian/axes"),v=e("../../components/dragelement"),y=e("../../components/fx"),x=e("../../components/dragelement/helpers"),w=x.freeMode,k=x.rectMode,b=e("../../components/titles"),T=e("../cartesian/select").prepSelect,_=e("../cartesian/select").selectOnClick,S=e("../cartesian/select").clearSelect,A=e("../cartesian/select").clearSelectionsCache,M=e("../cartesian/constants");function E(G,W){this.id=G.id,this.graphDiv=G.graphDiv,this.init(W),this.makeFramework(W),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}o.exports=E;var D=E.prototype;D.init=function(G){this.container=G._ternarylayer,this.defs=G._defs,this.layoutId=G._uid,this.traceHash={},this.layers={}},D.plot=function(G,W){var K=W[this.id],te=W._size;this._hasClipOnAxisFalse=!1;for(var Y=0;YO*ae?Y=(Z=ae)*O:Z=(Y=ie)/O,re=Q*Y/ie,U=ee*Z/ae,K=W.l+W.w*ne-Y/2,te=W.t+W.h*(1-H)-Z/2,q.x0=K,q.y0=te,q.w=Y,q.h=Z,q.sum=ue,q.xaxis={type:"linear",range:[le+2*fe-ue,ue-le-2*ge],domain:[ne-re/2,ne+re/2],_id:"x"},h(q.xaxis,q.graphDiv._fullLayout),q.xaxis.setScale(),q.xaxis.isPtWithinRange=function(ze){return ze.a>=q.aaxis.range[0]&&ze.a<=q.aaxis.range[1]&&ze.b>=q.baxis.range[1]&&ze.b<=q.baxis.range[0]&&ze.c>=q.caxis.range[1]&&ze.c<=q.caxis.range[0]},q.yaxis={type:"linear",range:[le,ue-ge-fe],domain:[H-U/2,H+U/2],_id:"y"},h(q.yaxis,q.graphDiv._fullLayout),q.yaxis.setScale(),q.yaxis.isPtWithinRange=function(){return!0};var me=q.yaxis.domain[0],_e=q.aaxis=m({},G.aaxis,{range:[le,ue-ge-fe],side:"left",tickangle:(+G.aaxis.tickangle||0)-30,domain:[me,me+U*O],anchor:"free",position:0,_id:"y",_length:Y});h(_e,q.graphDiv._fullLayout),_e.setScale();var we=q.baxis=m({},G.baxis,{range:[ue-le-fe,ge],side:"bottom",domain:q.xaxis.domain,anchor:"free",position:0,_id:"x",_length:Y});h(we,q.graphDiv._fullLayout),we.setScale();var Te=q.caxis=m({},G.caxis,{range:[ue-le-ge,fe],side:"right",tickangle:(+G.caxis.tickangle||0)+30,domain:[me,me+U*O],anchor:"free",position:0,_id:"y",_length:Y});h(Te,q.graphDiv._fullLayout),Te.setScale();var Oe="M"+K+","+(te+Z)+"h"+Y+"l-"+Y/2+",-"+Z+"Z";q.clipDef.select("path").attr("d",Oe),q.layers.plotbg.select("path").attr("d",Oe);var de="M0,"+Z+"h"+Y+"l-"+Y/2+",-"+Z+"Z";q.clipDefRelative.select("path").attr("d",de);var ye=i(K,te);q.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",ye),q.clipDefRelative.select("path").attr("transform",null);var Me=i(K-we._offset,te+Z);q.layers.baxis.attr("transform",Me),q.layers.bgrid.attr("transform",Me);var ke=i(K+Y/2,te)+"rotate(30)"+i(0,-_e._offset);q.layers.aaxis.attr("transform",ke),q.layers.agrid.attr("transform",ke);var Ee=i(K+Y/2,te)+"rotate(-30)"+i(0,-Te._offset);q.layers.caxis.attr("transform",Ee),q.layers.cgrid.attr("transform",Ee),q.drawAxes(!0),q.layers.aline.select("path").attr("d",_e.showline?"M"+K+","+(te+Z)+"l"+Y/2+",-"+Z:"M0,0").call(u.stroke,_e.linecolor||"#000").style("stroke-width",(_e.linewidth||0)+"px"),q.layers.bline.select("path").attr("d",we.showline?"M"+K+","+(te+Z)+"h"+Y:"M0,0").call(u.stroke,we.linecolor||"#000").style("stroke-width",(we.linewidth||0)+"px"),q.layers.cline.select("path").attr("d",Te.showline?"M"+(K+Y/2)+","+te+"l"+Y/2+","+Z:"M0,0").call(u.stroke,Te.linecolor||"#000").style("stroke-width",(Te.linewidth||0)+"px"),q.graphDiv._context.staticPlot||q.initInteractions(),d.setClipUrl(q.layers.frontplot,q._hasClipOnAxisFalse?null:q.clipId,q.graphDiv)},D.drawAxes=function(G){var W=this.graphDiv,K=this.id.substr(7)+"title",te=this.layers,Y=this.aaxis,Z=this.baxis,re=this.caxis;if(this.drawAx(Y),this.drawAx(Z),this.drawAx(re),G){var U=Math.max(Y.showticklabels?Y.tickfont.size/2:0,(re.showticklabels?.75*re.tickfont.size:0)+(re.ticks==="outside"?.87*re.ticklen:0)),q=(Z.showticklabels?Z.tickfont.size:0)+(Z.ticks==="outside"?Z.ticklen:0)+3;te["a-title"]=b.draw(W,"a"+K,{propContainer:Y,propName:this.id+".aaxis.title",placeholder:s(W,"Click to enter Component A title"),attributes:{x:this.x0+this.w/2,y:this.y0-Y.title.font.size/3-U,"text-anchor":"middle"}}),te["b-title"]=b.draw(W,"b"+K,{propContainer:Z,propName:this.id+".baxis.title",placeholder:s(W,"Click to enter Component B title"),attributes:{x:this.x0-q,y:this.y0+this.h+.83*Z.title.font.size+q,"text-anchor":"middle"}}),te["c-title"]=b.draw(W,"c"+K,{propContainer:re,propName:this.id+".caxis.title",placeholder:s(W,"Click to enter Component C title"),attributes:{x:this.x0+this.w+q,y:this.y0+this.h+.83*re.title.font.size+q,"text-anchor":"middle"}})}},D.drawAx=function(G){var W,K=this.graphDiv,te=G._name,Y=te.charAt(0),Z=G._id,re=this.layers[te],U=Y+"tickLayout",q=(W=G).ticks+String(W.ticklen)+String(W.showticklabels);this[U]!==q&&(re.selectAll("."+Z+"tick").remove(),this[U]=q),G.setScale();var $=p.calcTicks(G),ne=p.clipEnds(G,$),H=p.makeTransTickFn(G),Q=p.getTickSigns(G)[2],ee=c.deg2rad(30),ie=Q*(G.linewidth||1)/2,ae=Q*G.ticklen,ue=this.w,le=this.h,ge=Y==="b"?"M0,"+ie+"l"+Math.sin(ee)*ae+","+Math.cos(ee)*ae:"M"+ie+",0l"+Math.cos(ee)*ae+","+-Math.sin(ee)*ae,fe={a:"M0,0l"+le+",-"+ue/2,b:"M0,0l-"+ue/2+",-"+le,c:"M0,0l-"+le+","+ue/2}[Y];p.drawTicks(K,G,{vals:G.ticks==="inside"?ne:$,layer:re,path:ge,transFn:H,crisp:!1}),p.drawGrid(K,G,{vals:ne,layer:this.layers[Y+"grid"],path:fe,transFn:H,crisp:!1}),p.drawLabels(K,G,{vals:$,layer:re,transFn:H,labelFns:p.makeLabelFns(G,0,30)})};var R=M.MINZOOM/2+.87,z="m-0.87,.5h"+R+"v3h-"+(R+5.2)+"l"+(R/2+2.6)+",-"+(.87*R+4.5)+"l2.6,1.5l-"+R/2+","+.87*R+"Z",L="m0.87,.5h-"+R+"v3h"+(R+5.2)+"l-"+(R/2+2.6)+",-"+(.87*R+4.5)+"l-2.6,1.5l"+R/2+","+.87*R+"Z",P="m0,1l"+R/2+","+.87*R+"l2.6,-1.5l-"+(R/2+2.6)+",-"+(.87*R+4.5)+"l-"+(R/2+2.6)+","+(.87*R+4.5)+"l2.6,1.5l"+R/2+",-"+.87*R+"Z",N=!0;function B(G){r.select(G).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}D.clearSelect=function(){A(this.dragOptions),S(this.dragOptions.gd)},D.initInteractions=function(){var G,W,K,te,Y,Z,re,U,q,$,ne,H,Q=this,ee=Q.layers.plotbg.select("path").node(),ie=Q.graphDiv,ae=ie._fullLayout._zoomlayer;function ue(de){var ye={};return ye[Q.id+".aaxis.min"]=de.a,ye[Q.id+".baxis.min"]=de.b,ye[Q.id+".caxis.min"]=de.c,ye}function le(de,ye){var Me=ie._fullLayout.clickmode;B(ie),de===2&&(ie.emit("plotly_doubleclick",null),l.call("_guiRelayout",ie,ue({a:0,b:0,c:0}))),Me.indexOf("select")>-1&&de===1&&_(ye,ie,[Q.xaxis],[Q.yaxis],Q.id,Q.dragOptions),Me.indexOf("event")>-1&&y.click(ie,ye,Q.id)}function ge(de,ye){return 1-ye/Q.h}function fe(de,ye){return 1-(de+(Q.h-ye)/Math.sqrt(3))/Q.w}function me(de,ye){return(de-(Q.h-ye)/Math.sqrt(3))/Q.w}function _e(de,ye){var Me=K+de*G,ke=te+ye*W,Ee=Math.max(0,Math.min(1,ge(0,te),ge(0,ke))),ze=Math.max(0,Math.min(1,fe(K,te),fe(Me,ke))),Fe=Math.max(0,Math.min(1,me(K,te),me(Me,ke))),Ve=(Ee/2+Fe)*Q.w,Ke=(1-Ee/2-ze)*Q.w,Re=(Ve+Ke)/2,qe=Ke-Ve,We=(1-Ee)*Q.h,Ye=We-qe/O;qe.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),H.transition().style("opacity",1).duration(200),$=!0),ie.emit("plotly_relayouting",ue(re))}function we(){B(ie),re!==Y&&(l.call("_guiRelayout",ie,ue(re)),N&&ie.data&&ie._context.showTips&&(c.notifier(s(ie,"Double-click to zoom back out"),"long"),N=!1))}function Te(de,ye){var Me=de/Q.xaxis._m,ke=ye/Q.yaxis._m,Ee=[(re={a:Y.a-ke,b:Y.b+(Me+ke)/2,c:Y.c-(Me-ke)/2}).a,re.b,re.c].sort(c.sorterAsc),ze=Ee.indexOf(re.a),Fe=Ee.indexOf(re.b),Ve=Ee.indexOf(re.c);Ee[0]<0&&(Ee[1]+Ee[0]/2<0?(Ee[2]+=Ee[0]+Ee[1],Ee[0]=Ee[1]=0):(Ee[2]+=Ee[0]/2,Ee[1]+=Ee[0]/2,Ee[0]=0),re={a:Ee[ze],b:Ee[Fe],c:Ee[Ve]},ye=(Y.a-re.a)*Q.yaxis._m,de=(Y.c-re.c-Y.b+re.b)*Q.xaxis._m);var Ke=i(Q.x0+de,Q.y0+ye);Q.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",Ke);var Re=i(-de,-ye);Q.clipDefRelative.select("path").attr("transform",Re),Q.aaxis.range=[re.a,Q.sum-re.b-re.c],Q.baxis.range=[Q.sum-re.a-re.c,re.b],Q.caxis.range=[Q.sum-re.a-re.b,re.c],Q.drawAxes(!1),Q._hasClipOnAxisFalse&&Q.plotContainer.select(".scatterlayer").selectAll(".trace").call(d.hideOutsideRangePoints,Q),ie.emit("plotly_relayouting",ue(re))}function Oe(){l.call("_guiRelayout",ie,ue(re))}this.dragOptions={element:ee,gd:ie,plotinfo:{id:Q.id,domain:ie._fullLayout[Q.id].domain,xaxis:Q.xaxis,yaxis:Q.yaxis},subplot:Q.id,prepFn:function(de,ye,Me){Q.dragOptions.xaxes=[Q.xaxis],Q.dragOptions.yaxes=[Q.yaxis],G=ie._fullLayout._invScaleX,W=ie._fullLayout._invScaleY;var ke=Q.dragOptions.dragmode=ie._fullLayout.dragmode;w(ke)?Q.dragOptions.minDrag=1:Q.dragOptions.minDrag=void 0,ke==="zoom"?(Q.dragOptions.moveFn=_e,Q.dragOptions.clickFn=le,Q.dragOptions.doneFn=we,function(Ee,ze,Fe){var Ve=ee.getBoundingClientRect();K=ze-Ve.left,te=Fe-Ve.top,ie._fullLayout._calcInverseTransform(ie);var Ke=ie._fullLayout._invTransform,Re=c.apply3DTransform(Ke)(K,te);K=Re[0],te=Re[1],Y={a:Q.aaxis.range[0],b:Q.baxis.range[1],c:Q.caxis.range[1]},re=Y,Z=Q.aaxis.range[1]-Y.a,U=a(Q.graphDiv._fullLayout[Q.id].bgcolor).getLuminance(),q="M0,"+Q.h+"L"+Q.w/2+", 0L"+Q.w+","+Q.h+"Z",$=!1,ne=ae.append("path").attr("class","zoombox").attr("transform",i(Q.x0,Q.y0)).style({fill:U>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",q),H=ae.append("path").attr("class","zoombox-corners").attr("transform",i(Q.x0,Q.y0)).style({fill:u.background,stroke:u.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),Q.clearSelect(ie)}(0,ye,Me)):ke==="pan"?(Q.dragOptions.moveFn=Te,Q.dragOptions.clickFn=le,Q.dragOptions.doneFn=Oe,Y={a:Q.aaxis.range[0],b:Q.baxis.range[1],c:Q.caxis.range[1]},re=Y,Q.clearSelect(ie)):(k(ke)||w(ke))&&T(de,ye,Me,Q.dragOptions,ke)}},ee.onmousemove=function(de){y.hover(ie,de,Q.id),ie._fullLayout._lasthover=ee,ie._fullLayout._hoversubplot=Q.id},ee.onmouseout=function(de){ie._dragging||v.unhover(ie,de)},v.init(this.dragOptions)}},{"../../components/color":366,"../../components/dragelement":385,"../../components/dragelement/helpers":384,"../../components/drawing":388,"../../components/fx":406,"../../components/titles":464,"../../lib":503,"../../lib/extend":493,"../../registry":638,"../cartesian/axes":554,"../cartesian/constants":561,"../cartesian/select":575,"../cartesian/set_convert":576,"../plots":619,"@plotly/d3":58,tinycolor2:312}],638:[function(e,o,f){var r=e("./lib/loggers"),a=e("./lib/noop"),l=e("./lib/push_unique"),c=e("./lib/is_plain_object"),i=e("./lib/dom").addStyleRule,s=e("./lib/extend"),u=e("./plots/attributes"),d=e("./plots/layout_attributes"),h=s.extendFlat,m=s.extendDeepAll;function g(_){var S=_.name,A=_.categories,M=_.meta;if(f.modules[S])r.log("Type "+S+" already registered");else{f.subplotsRegistry[_.basePlotModule.name]||function(N){var B=N.name;if(f.subplotsRegistry[B])return void r.log("Plot type "+B+" already registered.");for(var G in x(N),f.subplotsRegistry[B]=N,f.componentsRegistry)b(G,N.name)}(_.basePlotModule);for(var E={},D=0;D-1&&(v[x[d]].title={text:""});for(d=0;d")!==-1?"":E.html(O).text()});return E.remove(),D}(A),A=(A=A.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(u,"'"),a.isIE()&&(A=(A=(A=A.replace(/"/gi,"'")).replace(/(\('#)([^']*)('\))/gi,'("#$2")')).replace(/(\\')/gi,'"')),A}},{"../components/color":366,"../components/drawing":388,"../constants/xmlns_namespaces":480,"../lib":503,"@plotly/d3":58}],647:[function(e,o,f){var r=e("../../lib");o.exports=function(a,l){for(var c=0;cO+E||!r(D))}for(var z=0;zd))return i}return s!==void 0?s:c.dflt},f.coerceColor=function(c,i,s){return a(i).isValid()?i:s!==void 0?s:c.dflt},f.coerceEnumerated=function(c,i,s){return c.coerceNumber&&(i=+i),c.values.indexOf(i)!==-1?i:s!==void 0?s:c.dflt},f.getValue=function(c,i){var s;return Array.isArray(c)?i0?ue+=le:w<0&&(ue-=le)}return ue}function U(ae){var ue=w,le=ae.b,ge=re(ae);return r.inbox(le-ue,ge-ue,R+(ge-ue)/(ge-le)-1)}var q=m[k+"a"],$=m[b+"a"];S=Math.abs(q.r2c(q.range[1])-q.r2c(q.range[0]));var ne=r.getDistanceFunction(v,T,_,function(ae){return(T(ae)+_(ae))/2});if(r.getClosest(A,ne,m),m.index!==!1&&A[m.index].p!==u){P||(K=function(ae){return Math.min(N(ae),ae.p-E.bargroupwidth/2)},te=function(ae){return Math.max(B(ae),ae.p+E.bargroupwidth/2)});var H=A[m.index],Q=M.base?H.b+H.s:H.s;m[b+"0"]=m[b+"1"]=$.c2p(H[b],!0),m[b+"LabelVal"]=Q;var ee=E.extents[E.extents.round(H.p)];m[k+"0"]=q.c2p(D?K(H):ee[0],!0),m[k+"1"]=q.c2p(D?te(H):ee[1],!0);var ie=H.orig_p!==void 0;return m[k+"LabelVal"]=ie?H.orig_p:H.p,m.labelLabel=s(q,m[k+"LabelVal"],M[k+"hoverformat"]),m.valueLabel=s($,m[b+"LabelVal"],M[b+"hoverformat"]),m.baseLabel=s($,H.b,M[b+"hoverformat"]),m.spikeDistance=(function(ae){var ue=w,le=ae.b,ge=re(ae);return r.inbox(le-ue,ge-ue,z+(ge-ue)/(ge-le)-1)}(H)+function(ae){return Y(N(ae),B(ae),z)}(H))/2,m[k+"Spike"]=q.c2p(H.p,!0),c(H,M,m),m.hovertemplate=M.hovertemplate,m}}function h(m,g){var p=g.mcc||m.marker.color,v=g.mlcc||m.marker.line.color,y=i(m,g);return l.opacity(p)?p:l.opacity(v)&&y?v:void 0}o.exports={hoverPoints:function(m,g,p,v,y){var x=d(m,g,p,v,y);if(x){var w=x.cd,k=w[0].trace,b=w[x.index];return x.color=h(k,b),a.getComponentMethod("errorbars","hoverInfo")(b,k,x),[x]}},hoverOnBars:d,getTraceColor:h}},{"../../components/color":366,"../../components/fx":406,"../../constants/numerical":479,"../../lib":503,"../../plots/cartesian/axes":554,"../../registry":638,"./helpers":654}],656:[function(e,o,f){o.exports={attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults").supplyDefaults,crossTraceDefaults:e("./defaults").crossTraceDefaults,supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc"),crossTraceCalc:e("./cross_trace_calc").crossTraceCalc,colorbar:e("../scatter/marker_colorbar"),arraysToCalcdata:e("./arrays_to_calcdata"),plot:e("./plot").plot,style:e("./style").style,styleOnSelect:e("./style").styleOnSelect,hoverPoints:e("./hover").hoverPoints,eventData:e("./event_data"),selectPoints:e("./select"),moduleType:"trace",name:"bar",basePlotModule:e("../../plots/cartesian"),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}},{"../../plots/cartesian":568,"../scatter/marker_colorbar":945,"./arrays_to_calcdata":647,"./attributes":648,"./calc":649,"./cross_trace_calc":651,"./defaults":652,"./event_data":653,"./hover":655,"./layout_attributes":657,"./layout_defaults":658,"./plot":659,"./select":660,"./style":662}],657:[function(e,o,f){o.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},{}],658:[function(e,o,f){var r=e("../../registry"),a=e("../../plots/cartesian/axes"),l=e("../../lib"),c=e("./layout_attributes");o.exports=function(i,s,u){function d(k,b){return l.coerce(i,s,c,k,b)}for(var h=!1,m=!1,g=!1,p={},v=d("barmode"),y=0;y0}function D(z){return z==="auto"?0:z}function O(z,L){var P=Math.PI/180*L,N=Math.abs(Math.sin(P)),B=Math.abs(Math.cos(P));return{x:z.width*B+z.height*N,y:z.width*N+z.height*B}}function R(z,L,P,N,B,G){var W=!!G.isHorizontal,K=!!G.constrained,te=G.angle||0,Y=G.anchor||"end",Z=Y==="end",re=Y==="start",U=((G.leftToRight||0)+1)/2,q=1-U,$=B.width,ne=B.height,H=Math.abs(L-z),Q=Math.abs(N-P),ee=H>2*T&&Q>2*T?T:0;H-=2*ee,Q-=2*ee;var ie=D(te);te!=="auto"||$<=H&&ne<=Q||!($>H||ne>Q)||($>Q||ne>H)&&$.01?ze:function(Re,qe,We){return We&&Re===qe?Re:Math.abs(Re-qe)>=2?ze(Re):Re>qe?Math.ceil(Re):Math.floor(Re)};Oe=Fe(Oe,de,Q),de=Fe(de,Oe,Q),ye=Fe(ye,Me,!Q),Me=Fe(Me,ye,!Q)}var Ve=M(l.ensureSingle(we,"path"),te,B,G);if(Ve.style("vector-effect","non-scaling-stroke").attr("d",isNaN((de-Oe)*(Me-ye))||ke&&z._context.staticPlot?"M0,0Z":"M"+Oe+","+ye+"V"+Me+"H"+de+"V"+ye+"Z").call(s.setClipUrl,L.layerClipId,z),!te.uniformtext.mode&&ee){var Ke=s.makePointStyleFns(U);s.singlePointStyle(ge,Ve,U,Ke,z)}(function(Re,qe,We,Ye,nt,ft,vt,Pt,At,at,et){var Ot,Wt=qe.xaxis,Jt=qe.yaxis,Be=Re._fullLayout;function Ge(Kt,Ht,mn){return l.ensureSingle(Kt,"text").text(Ht).attr({class:"bartext bartext-"+Ot,"text-anchor":"middle","data-notex":1}).call(s.font,mn).call(c.convertToTspans,Re)}var Tt=Ye[0].trace,dt=Tt.orientation==="h",Pe=function(Kt,Ht,mn,zn,pn){var tn,nn=Ht[0].trace;return tn=nn.texttemplate?function(sn,gn,bn,In,Hn){var Wn=gn[0].trace,ar=l.castOption(Wn,bn,"texttemplate");if(!ar)return"";var Or,vr,Er,Kn,Ln=Wn.type==="histogram",lr=Wn.type==="waterfall",Wr=Wn.type==="funnel",Mn=Wn.orientation==="h";Mn?(Or="y",vr=Hn,Er="x",Kn=In):(Or="x",vr=In,Er="y",Kn=Hn);function rr(_i){return d(Kn,Kn.c2l(_i),!0).text}var nr=gn[bn],Bn={};Bn.label=nr.p,Bn.labelLabel=Bn[Or+"Label"]=(Fr=nr.p,d(vr,vr.c2l(Fr),!0).text);var Fr,$r=l.castOption(Wn,nr.i,"text");($r===0||$r)&&(Bn.text=$r),Bn.value=nr.s,Bn.valueLabel=Bn[Er+"Label"]=rr(nr.s);var pr={};b(pr,Wn,nr.i),(Ln||pr.x===void 0)&&(pr.x=Mn?Bn.value:Bn.label),(Ln||pr.y===void 0)&&(pr.y=Mn?Bn.label:Bn.value),(Ln||pr.xLabel===void 0)&&(pr.xLabel=Mn?Bn.valueLabel:Bn.labelLabel),(Ln||pr.yLabel===void 0)&&(pr.yLabel=Mn?Bn.labelLabel:Bn.valueLabel),lr&&(Bn.delta=+nr.rawS||nr.s,Bn.deltaLabel=rr(Bn.delta),Bn.final=nr.v,Bn.finalLabel=rr(Bn.final),Bn.initial=Bn.final-Bn.delta,Bn.initialLabel=rr(Bn.initial)),Wr&&(Bn.value=nr.s,Bn.valueLabel=rr(Bn.value),Bn.percentInitial=nr.begR,Bn.percentInitialLabel=l.formatPercent(nr.begR),Bn.percentPrevious=nr.difR,Bn.percentPreviousLabel=l.formatPercent(nr.difR),Bn.percentTotal=nr.sumR,Bn.percenTotalLabel=l.formatPercent(nr.sumR));var qr=l.castOption(Wn,nr.i,"customdata");return qr&&(Bn.customdata=qr),l.texttemplateString(ar,Bn,sn._d3locale,pr,Bn,Wn._meta||{})}(Kt,Ht,mn,zn,pn):nn.textinfo?function(sn,gn,bn,In){var Hn=sn[0].trace,Wn=Hn.orientation==="h",ar=Hn.type==="waterfall",Or=Hn.type==="funnel";function vr(qr){return d(Wn?bn:In,+qr,!0).text}var Er,Kn=Hn.textinfo,Ln=sn[gn],lr=Kn.split("+"),Wr=[],Mn=function(qr){return lr.indexOf(qr)!==-1};Mn("label")&&Wr.push((rr=sn[gn].p,d(Wn?In:bn,rr,!0).text));var rr;if(Mn("text")&&((Er=l.castOption(Hn,Ln.i,"text"))===0||Er)&&Wr.push(Er),ar){var nr=+Ln.rawS||Ln.s,Bn=Ln.v,Fr=Bn-nr;Mn("initial")&&Wr.push(vr(Fr)),Mn("delta")&&Wr.push(vr(nr)),Mn("final")&&Wr.push(vr(Bn))}if(Or){Mn("value")&&Wr.push(vr(Ln.s));var $r=0;Mn("percent initial")&&$r++,Mn("percent previous")&&$r++,Mn("percent total")&&$r++;var pr=$r>1;Mn("percent initial")&&(Er=l.formatPercent(Ln.begR),pr&&(Er+=" of initial"),Wr.push(Er)),Mn("percent previous")&&(Er=l.formatPercent(Ln.difR),pr&&(Er+=" of previous"),Wr.push(Er)),Mn("percent total")&&(Er=l.formatPercent(Ln.sumR),pr&&(Er+=" of total"),Wr.push(Er))}return Wr.join("
")}(Ht,mn,zn,pn):v.getValue(nn.text,mn),v.coerceString(w,tn)}(Be,Ye,nt,Wt,Jt);Ot=function(Kt,Ht){var mn=v.getValue(Kt.textposition,Ht);return v.coerceEnumerated(k,mn)}(Tt,nt);var Ie=at.mode==="stack"||at.mode==="relative",Ae=Ye[nt],De=!Ie||Ae._outmost;if(!Pe||Ot==="none"||(Ae.isBlank||ft===vt||Pt===At)&&(Ot==="auto"||Ot==="inside"))return void We.select("text").remove();var He=Be.font,rt=p.getBarColor(Ye[nt],Tt),lt=p.getInsideTextFont(Tt,nt,He,rt),ot=p.getOutsideTextFont(Tt,nt,He),kt=We.datum();dt?Wt.type==="log"&&kt.s0<=0&&(ft=Wt.range[0]=Ut*(St/tt):St>=tt*(zt/Ut);Ut>0&&tt>0&&(Dt||Le||Je)?Ot="inside":(Ot="outside",wt.remove(),wt=null)}else Ot="inside";if(!wt){bt=l.ensureUniformFontSize(Re,Ot==="outside"?ot:lt);var st=(wt=Ge(We,Pe,bt)).attr("transform");if(wt.attr("transform",""),Vt=s.bBox(wt.node()),Ut=Vt.width,tt=Vt.height,wt.attr("transform",st),Ut<=0||tt<=0)return void wt.remove()}var Et,It,Zt=Tt.textangle;Ot==="outside"?(It=Tt.constraintext==="both"||Tt.constraintext==="outside",Et=function(Kt,Ht,mn,zn,pn,tn){var nn,sn=!!tn.isHorizontal,gn=!!tn.constrained,bn=tn.angle||0,In=pn.width,Hn=pn.height,Wn=Math.abs(Ht-Kt),ar=Math.abs(zn-mn);nn=sn?ar>2*T?T:0:Wn>2*T?T:0;var Or=1;gn&&(Or=sn?Math.min(1,ar/Hn):Math.min(1,Wn/In));var vr=D(bn),Er=O(pn,vr),Kn=(sn?Er.x:Er.y)/2,Ln=(pn.left+pn.right)/2,lr=(pn.top+pn.bottom)/2,Wr=(Kt+Ht)/2,Mn=(mn+zn)/2,rr=0,nr=0,Bn=sn?A(Ht,Kt):A(mn,zn);return sn?(Wr=Ht-Bn*nn,rr=Bn*Kn):(Mn=zn+Bn*nn,nr=-Bn*Kn),{textX:Ln,textY:lr,targetX:Wr,targetY:Mn,anchorX:rr,anchorY:nr,scale:Or,rotate:vr}}(ft,vt,Pt,At,Vt,{isHorizontal:dt,constrained:It,angle:Zt})):(It=Tt.constraintext==="both"||Tt.constraintext==="inside",Et=R(ft,vt,Pt,At,Vt,{isHorizontal:dt,constrained:It,angle:Zt,anchor:Tt.insidetextanchor})),Et.fontSize=bt.size,m(Tt.type==="histogram"?"bar":Tt.type,Et,Be),Ae.transform=Et,M(wt,Be,at,et).attr("transform",l.getTextTransform(Et))})(z,L,we,Z,fe,Oe,de,ye,Me,B,G),L.layerClipId&&s.hideOutsideRangePoint(ge,we.select("text"),W,K,U.xcalendar,U.ycalendar)});var le=U.cliponaxis===!1;s.setClipUrl(re,le?null:L.layerClipId,z)});u.getComponentMethod("errorbars","plot")(z,Y,L,B)},toMoveInsideBar:R}},{"../../components/color":366,"../../components/drawing":388,"../../components/fx/helpers":402,"../../lib":503,"../../lib/svg_text_utils":529,"../../plots/cartesian/axes":554,"../../registry":638,"./attributes":648,"./constants":650,"./helpers":654,"./style":662,"./uniform_text":664,"@plotly/d3":58,"fast-isnumeric":190}],660:[function(e,o,f){function r(a,l,c,i,s){var u=l.c2p(i?a.s0:a.p0,!0),d=l.c2p(i?a.s1:a.p1,!0),h=c.c2p(i?a.p0:a.s0,!0),m=c.c2p(i?a.p1:a.s1,!0);return s?[(u+d)/2,(h+m)/2]:i?[d,(h+m)/2]:[(u+d)/2,m]}o.exports=function(a,l){var c,i=a.cd,s=a.xaxis,u=a.yaxis,d=i[0].trace,h=d.type==="funnel",m=d.orientation==="h",g=[];if(l===!1)for(c=0;c1||M.bargap===0&&M.bargroupgap===0&&!E[0].trace.marker.line.width)&&r.select(this).attr("shape-rendering","crispEdges")}),S.selectAll("g.points").each(function(E){p(r.select(this),E[0].trace,_)}),i.getComponentMethod("errorbars","style")(S)},styleTextPoints:v,styleOnSelect:function(_,S,A){var M=S[0].trace;M.selectedpoints?function(E,D,O){l.selectedPointStyle(E.selectAll("path"),D),function(R,z,L){R.each(function(P){var N,B=r.select(this);if(P.selected){N=c.ensureUniformFontSize(L,y(B,P,z,L));var G=z.selected.textfont&&z.selected.textfont.color;G&&(N.color=G),l.font(B,N)}else l.selectedTextStyle(B,z)})}(E.selectAll("text"),D,O)}(A,M,_):(p(A,M,_),i.getComponentMethod("errorbars","style")(A))},getInsideTextFont:w,getOutsideTextFont:k,getBarColor:T,resizeText:s}},{"../../components/color":366,"../../components/drawing":388,"../../lib":503,"../../registry":638,"./attributes":648,"./helpers":654,"./uniform_text":664,"@plotly/d3":58}],663:[function(e,o,f){var r=e("../../components/color"),a=e("../../components/colorscale/helpers").hasColorscale,l=e("../../components/colorscale/defaults"),c=e("../../lib").coercePattern;o.exports=function(i,s,u,d,h){var m=u("marker.color",d),g=a(i,"marker");g&&l(i,s,h,u,{prefix:"marker.",cLetter:"c"}),u("marker.line.color",r.defaultLine),a(i,"marker.line")&&l(i,s,h,u,{prefix:"marker.line.",cLetter:"c"}),u("marker.line.width"),u("marker.opacity"),c(u,"marker.pattern",m,g),u("selected.marker.color"),u("unselected.marker.color")}},{"../../components/color":366,"../../components/colorscale/defaults":376,"../../components/colorscale/helpers":377,"../../lib":503}],664:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib");function l(c){return"_"+c+"Text_minsize"}o.exports={recordMinTextSize:function(c,i,s){if(s.uniformtext.mode){var u=l(c),d=s.uniformtext.minsize,h=i.scale*i.fontSize;i.hide=hv.range[1]&&(_+=Math.PI),r.getClosest(m,function(M){return w(T,_,[M.rp0,M.rp1],[M.thetag0,M.thetag1],x)?k+Math.min(1,Math.abs(M.thetag1-M.thetag0)/b)-1+(M.rp1-T)/(M.rp1-M.rp0)-1:1/0},u),u.index!==!1){var S=m[u.index];u.x0=u.x1=S.ct[0],u.y0=u.y1=S.ct[1];var A=a.extendFlat({},S,{r:S.s,theta:S.p});return c(S,g,u),i(A,g,p,u),u.hovertemplate=g.hovertemplate,u.color=l(g,S),u.xLabelVal=u.yLabelVal=void 0,S.s<0&&(u.idealAlign="left"),[u]}}},{"../../components/fx":406,"../../lib":503,"../../plots/polar/helpers":621,"../bar/hover":655,"../scatterpolar/hover":1006}],669:[function(e,o,f){o.exports={moduleType:"trace",name:"barpolar",basePlotModule:e("../../plots/polar"),categories:["polar","bar","showLegend"],attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults"),supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc").calc,crossTraceCalc:e("./calc").crossTraceCalc,plot:e("./plot"),colorbar:e("../scatter/marker_colorbar"),formatLabels:e("../scatterpolar/format_labels"),style:e("../bar/style").style,styleOnSelect:e("../bar/style").styleOnSelect,hoverPoints:e("./hover"),selectPoints:e("../bar/select"),meta:{}}},{"../../plots/polar":622,"../bar/select":660,"../bar/style":662,"../scatter/marker_colorbar":945,"../scatterpolar/format_labels":1005,"./attributes":665,"./calc":666,"./defaults":667,"./hover":668,"./layout_attributes":670,"./layout_defaults":671,"./plot":672}],670:[function(e,o,f){o.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}},{}],671:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes");o.exports=function(l,c,i){var s,u={};function d(g,p){return r.coerce(l[s]||{},c[s],a,g,p)}for(var h=0;h0?(A=_,M=S):(A=S,M=_);var E=[i.findEnclosingVertexAngles(A,x.vangles)[0],(A+M)/2,i.findEnclosingVertexAngles(M,x.vangles)[1]];return i.pathPolygonAnnulus(b,T,A,M,E,w,k)}:function(b,T,_,S){return l.pathAnnulus(b,T,_,S,w,k)}}(u),y=u.layers.frontplot.select("g.barlayer");l.makeTraceGroups(y,d,"trace bars").each(function(){var x=r.select(this),w=l.ensureSingle(x,"g","points").selectAll("g.point").data(l.identity);w.enter().append("g").style("vector-effect","non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),w.exit().remove(),w.each(function(k){var b,T=r.select(this),_=k.rp0=g.c2p(k.s0),S=k.rp1=g.c2p(k.s1),A=k.thetag0=p.c2g(k.p0),M=k.thetag1=p.c2g(k.p1);if(a(_)&&a(S)&&a(A)&&a(M)&&_!==S&&A!==M){var E=g.c2g(k.s1),D=(A+M)/2;k.ct=[h.c2p(E*Math.cos(D)),m.c2p(E*Math.sin(D))],b=v(_,S,A,M)}else b="M0,0Z";l.ensureSingle(T,"path").attr("d",b)}),c.setClipUrl(x,u._hasClipOnAxisFalse?u.clipIds.forTraces:null,s)})}},{"../../components/drawing":388,"../../lib":503,"../../plots/polar/helpers":621,"@plotly/d3":58,"fast-isnumeric":190}],673:[function(e,o,f){var r=e("../scatter/attributes"),a=e("../bar/attributes"),l=e("../../components/color/attributes"),c=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,i=e("../../plots/template_attributes").hovertemplateAttrs,s=e("../../lib/extend").extendFlat,u=r.marker,d=u.line;o.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:r.xperiod,yperiod:r.yperiod,xperiod0:r.xperiod0,yperiod0:r.yperiod0,xperiodalignment:r.xperiodalignment,yperiodalignment:r.yperiodalignment,xhoverformat:c("x"),yhoverformat:c("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:s({},u.symbol,{arrayOk:!1,editType:"plot"}),opacity:s({},u.opacity,{arrayOk:!1,dflt:1,editType:"style"}),size:s({},u.size,{arrayOk:!1,editType:"calc"}),color:s({},u.color,{arrayOk:!1,editType:"style"}),line:{color:s({},d.color,{arrayOk:!1,dflt:l.defaultLine,editType:"style"}),width:s({},d.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:r.fillcolor,whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},offsetgroup:a.offsetgroup,alignmentgroup:a.alignmentgroup,selected:{marker:r.selected.marker,editType:"style"},unselected:{marker:r.unselected.marker,editType:"style"},text:s({},r.text,{}),hovertext:s({},r.hovertext,{}),hovertemplate:i({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"}}},{"../../components/color/attributes":365,"../../lib/extend":493,"../../plots/cartesian/axis_format_attributes":557,"../../plots/template_attributes":633,"../bar/attributes":648,"../scatter/attributes":927}],674:[function(e,o,f){var r=e("fast-isnumeric"),a=e("../../plots/cartesian/axes"),l=e("../../plots/cartesian/align_period"),c=e("../../lib"),i=e("../../constants/numerical").BADNUM,s=c._;o.exports=function(w,k){var b,T,_,S,A,M,E,D=w._fullLayout,O=a.getFromId(w,k.xaxis||"x"),R=a.getFromId(w,k.yaxis||"y"),z=[],L=k.type==="violin"?"_numViolins":"_numBoxes";k.orientation==="h"?(_=O,S="x",A=R,M="y",E=!!k.yperiodalignment):(_=R,S="y",A=O,M="x",E=!!k.xperiodalignment);var P,N,B,G,W,K,te=function(We,Ye,nt,ft){var vt,Pt=Ye+"0"in We,At="d"+Ye in We;if(Ye in We||Pt&&At){var at=nt.makeCalcdata(We,Ye);return[l(We,nt,Ye,at).vals,at]}vt=Pt?We[Ye+"0"]:"name"in We&&(nt.type==="category"||r(We.name)&&["linear","log"].indexOf(nt.type)!==-1||c.isDateTime(We.name)&&nt.type==="date")?We.name:ft;for(var et=nt.type==="multicategory"?nt.r2c_just_indices(vt):nt.d2c(vt,0,We[Ye+"calendar"]),Ot=We._length,Wt=new Array(Ot),Jt=0;JtP.uf};if(k._hasPreCompStats){var ne=k[S],H=function(We){return _.d2c((k[We]||[])[b])},Q=1/0,ee=-1/0;for(b=0;b=P.q1&&P.q3>=P.med){var ae=H("lowerfence");P.lf=ae!==i&&ae<=P.q1?ae:g(P,B,G);var ue=H("upperfence");P.uf=ue!==i&&ue>=P.q3?ue:p(P,B,G);var le=H("mean");P.mean=le!==i?le:G?c.mean(B,G):(P.q1+P.q3)/2;var ge=H("sd");P.sd=le!==i&&ge>=0?ge:G?c.stdev(B,G,P.mean):P.q3-P.q1,P.lo=v(P),P.uo=y(P);var fe=H("notchspan");fe=fe!==i&&fe>0?fe:x(P,G),P.ln=P.med-fe,P.un=P.med+fe;var me=P.lf,_e=P.uf;k.boxpoints&&B.length&&(me=Math.min(me,B[0]),_e=Math.max(_e,B[G-1])),k.notched&&(me=Math.min(me,P.ln),_e=Math.max(_e,P.un)),P.min=me,P.max=_e}else{var we;c.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+P.q1,"median = "+P.med,"q3 = "+P.q3].join(` +`)),we=P.med!==i?P.med:P.q1!==i?P.q3!==i?(P.q1+P.q3)/2:P.q1:P.q3!==i?P.q3:0,P.med=we,P.q1=P.q3=we,P.lf=P.uf=we,P.mean=P.sd=we,P.ln=P.un=we,P.min=P.max=we}Q=Math.min(Q,P.min),ee=Math.max(ee,P.max),P.pts2=N.filter($),z.push(P)}}k._extremes[_._id]=a.findExtremes(_,[Q,ee],{padded:!0})}else{var Te=_.makeCalcdata(k,S),Oe=function(We,Ye){for(var nt=We.length,ft=new Array(nt+1),vt=0;vt=0&&Me0){var Ke,Re;(P={}).pos=P[M]=U[b],N=P.pts=ye[b].sort(h),G=(B=P[S]=N.map(m)).length,P.min=B[0],P.max=B[G-1],P.mean=c.mean(B,G),P.sd=c.stdev(B,G,P.mean),P.med=c.interp(B,.5),G%2&&(Fe||Ve)?(Fe?(Ke=B.slice(0,G/2),Re=B.slice(G/2+1)):Ve&&(Ke=B.slice(0,G/2+1),Re=B.slice(G/2)),P.q1=c.interp(Ke,.5),P.q3=c.interp(Re,.5)):(P.q1=c.interp(B,.25),P.q3=c.interp(B,.75)),P.lf=g(P,B,G),P.uf=p(P,B,G),P.lo=v(P),P.uo=y(P);var qe=x(P,G);P.ln=P.med-qe,P.un=P.med+qe,ke=Math.min(ke,P.ln),Ee=Math.max(Ee,P.un),P.pts2=N.filter($),z.push(P)}k._extremes[_._id]=a.findExtremes(_,k.notched?Te.concat([ke,Ee]):Te,{padded:!0})}return function(We,Ye){if(c.isArrayOrTypedArray(Ye.selectedpoints))for(var nt=0;nt0?(z[0].t={num:D[L],dPos:q,posLetter:M,valLetter:S,labels:{med:s(w,"median:"),min:s(w,"min:"),q1:s(w,"q1:"),q3:s(w,"q3:"),max:s(w,"max:"),mean:k.boxmean==="sd"?s(w,"mean \xB1 \u03C3:"):s(w,"mean:"),lf:s(w,"lower fence:"),uf:s(w,"upper fence:")}},D[L]++,z):[{t:{empty:!0}}]};var u={text:"tx",hovertext:"htx"};function d(w,k,b){for(var T in u)c.isArrayOrTypedArray(k[T])&&(Array.isArray(b)?c.isArrayOrTypedArray(k[T][b[0]])&&(w[u[T]]=k[T][b[0]][b[1]]):w[u[T]]=k[T][b])}function h(w,k){return w.v-k.v}function m(w){return w.v}function g(w,k,b){return b===0?w.q1:Math.min(w.q1,k[Math.min(c.findBin(2.5*w.q1-1.5*w.q3,k,!0)+1,b-1)])}function p(w,k,b){return b===0?w.q3:Math.max(w.q3,k[Math.max(c.findBin(2.5*w.q3-1.5*w.q1,k),0)])}function v(w){return 4*w.q1-3*w.q3}function y(w){return 4*w.q3-3*w.q1}function x(w,k){return k===0?0:1.57*(w.q3-w.q1)/Math.sqrt(k)}},{"../../constants/numerical":479,"../../lib":503,"../../plots/cartesian/align_period":551,"../../plots/cartesian/axes":554,"fast-isnumeric":190}],675:[function(e,o,f){var r=e("../../plots/cartesian/axes"),a=e("../../lib"),l=e("../../plots/cartesian/constraints").getAxisGroup,c=["v","h"];function i(s,u,d,h){var m,g,p,v=u.calcdata,y=u._fullLayout,x=h._id,w=x.charAt(0),k=[],b=0;for(m=0;m1,M=1-y[s+"gap"],E=1-y[s+"groupgap"];for(m=0;m0){var ie=N.pointpos,ae=N.jitter,ue=N.marker.size/2,le=0;ie+ae>=0&&((le=Q*(ie+ae))>L?(ee=!0,ne=ue,q=le):le>re&&(ne=ue,q=L)),le<=L&&(q=L);var ge=0;ie-ae<=0&&((ge=-Q*(ie-ae))>P?(ee=!0,H=ue,$=ge):ge>U&&(H=ue,$=P)),ge<=P&&($=P)}else q=L,$=P;var fe=new Array(p.length);for(g=0;g0?(A="v",M=D>0?Math.min(R,O):Math.min(O)):D>0?(A="h",M=Math.min(R)):M=0;if(M){g._length=M;var G=p("orientation",A);g._hasPreCompStats?G==="v"&&D===0?(p("x0",0),p("dx",1)):G==="h"&&E===0&&(p("y0",0),p("dy",1)):G==="v"&&D===0?p("x0"):G==="h"&&E===0&&p("y0"),a.getComponentMethod("calendars","handleTraceDefaults")(m,g,["x","y"],v)}else g.visible=!1}function h(m,g,p,v){var y=v.prefix,x=r.coerce2(m,g,u,"marker.outliercolor"),w=p("marker.line.outliercolor"),k="outliers";g._hasPreCompStats?k="all":(x||w)&&(k="suspectedoutliers");var b=p(y+"points",k);b?(p("jitter",b==="all"?.3:0),p("pointpos",b==="all"?-1.5:0),p("marker.symbol"),p("marker.opacity"),p("marker.size"),p("marker.color",g.line.color),p("marker.line.color"),p("marker.line.width"),b==="suspectedoutliers"&&(p("marker.line.outliercolor",g.marker.color),p("marker.line.outlierwidth")),p("selected.marker.color"),p("unselected.marker.color"),p("selected.marker.size"),p("unselected.marker.size"),p("text"),p("hovertext")):delete g.marker;var T=p("hoveron");T!=="all"&&T.indexOf("points")===-1||p("hovertemplate"),r.coerceSelectionMarkerOpacity(g,p)}o.exports={supplyDefaults:function(m,g,p,v){function y(S,A){return r.coerce(m,g,u,S,A)}if(d(m,g,y,v),g.visible!==!1){c(m,g,v,y),y("xhoverformat"),y("yhoverformat");var x=g._hasPreCompStats;x&&(y("lowerfence"),y("upperfence")),y("line.color",(m.marker||{}).color||p),y("line.width"),y("fillcolor",l.addOpacity(g.line.color,.5));var w=!1;if(x){var k=y("mean"),b=y("sd");k&&k.length&&(w=!0,b&&b.length&&(w="sd"))}y("boxmean",w),y("whiskerwidth"),y("width"),y("quartilemethod");var T=!1;if(x){var _=y("notchspan");_&&_.length&&(T=!0)}else r.validate(m.notchwidth,u.notchwidth)&&(T=!0);y("notched",T)&&y("notchwidth"),h(m,g,y,{prefix:"box"})}},crossTraceDefaults:function(m,g){var p,v;function y(k){return r.coerce(v._input,v,u,k)}for(var x=0;xb.lo&&(B.so=!0)}return S});k.enter().append("path").classed("point",!0),k.exit().remove(),k.call(l.translatePoints,g,p)}function s(u,d,h,m){var g,p,v=d.val,y=d.pos,x=!!y.rangebreaks,w=m.bPos,k=m.bPosPxOffset||0,b=h.boxmean||(h.meanline||{}).visible;Array.isArray(m.bdPos)?(g=m.bdPos[0],p=m.bdPos[1]):(g=m.bdPos,p=m.bdPos);var T=u.selectAll("path.mean").data(h.type==="box"&&h.boxmean||h.type==="violin"&&h.box.visible&&h.meanline.visible?a.identity:[]);T.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),T.exit().remove(),T.each(function(_){var S=y.c2l(_.pos+w,!0),A=y.l2p(S-g)+k,M=y.l2p(S+p)+k,E=x?(A+M)/2:y.l2p(S)+k,D=v.c2p(_.mean,!0),O=v.c2p(_.mean-_.sd,!0),R=v.c2p(_.mean+_.sd,!0);h.orientation==="h"?r.select(this).attr("d","M"+D+","+A+"V"+M+(b==="sd"?"m0,0L"+O+","+E+"L"+D+","+A+"L"+R+","+E+"Z":"")):r.select(this).attr("d","M"+A+","+D+"H"+M+(b==="sd"?"m0,0L"+E+","+O+"L"+A+","+D+"L"+E+","+R+"Z":""))})}o.exports={plot:function(u,d,h,m){var g=d.xaxis,p=d.yaxis;a.makeTraceGroups(m,h,"trace boxes").each(function(v){var y,x,w=r.select(this),k=v[0],b=k.t,T=k.trace;b.wdPos=b.bdPos*T.whiskerwidth,T.visible!==!0||b.empty?w.remove():(T.orientation==="h"?(y=p,x=g):(y=g,x=p),c(w,{pos:y,val:x},T,b),i(w,{x:g,y:p},T,b),s(w,{pos:y,val:x},T,b))})},plotBoxAndWhiskers:c,plotPoints:i,plotBoxMean:s}},{"../../components/drawing":388,"../../lib":503,"@plotly/d3":58}],683:[function(e,o,f){o.exports=function(r,a){var l,c,i=r.cd,s=r.xaxis,u=r.yaxis,d=[];if(a===!1)for(l=0;l=10)return null;for(var s=1/0,u=-1/0,d=c.length,h=0;h0?Math.floor:Math.ceil,G=P>0?Math.ceil:Math.floor,W=P>0?Math.min:Math.max,K=P>0?Math.max:Math.min,te=B(z+N),Y=G(L-N),Z=[[p=R(z)]];for(s=te;s*P=0;i--)s[g-i]=r[p][i],u[g-i]=a[p][i];for(d.push({x:s,y:u,bicubic:h}),i=p,s=[],u=[];i>=0;i--)s[p-i]=r[i][0],u[p-i]=a[i][0];return d.push({x:s,y:u,bicubic:m}),d}},{}],697:[function(e,o,f){var r=e("../../plots/cartesian/axes"),a=e("../../lib/extend").extendFlat;o.exports=function(l,c,i){var s,u,d,h,m,g,p,v,y,x,w,k,b,T,_=l["_"+c],S=l[c+"axis"],A=S._gridlines=[],M=S._minorgridlines=[],E=S._boundarylines=[],D=l["_"+i],O=l[i+"axis"];S.tickmode==="array"&&(S.tickvals=_.slice());var R=l._xctrl,z=l._yctrl,L=R[0].length,P=R.length,N=l._a.length,B=l._b.length;r.prepTicks(S),S.tickmode==="array"&&delete S.tickvals;var G=S.smoothing?3:1;function W(te){var Y,Z,re,U,q,$,ne,H,Q,ee,ie,ae,ue=[],le=[],ge={};if(c==="b")for(Z=l.b2j(te),re=Math.floor(Math.max(0,Math.min(B-2,Z))),U=Z-re,ge.length=B,ge.crossLength=N,ge.xy=function(fe){return l.evalxy([],fe,Z)},ge.dxy=function(fe,me){return l.dxydi([],fe,re,me,U)},Y=0;Y0&&(Q=l.dxydi([],Y-1,re,0,U),ue.push(q[0]+Q[0]/3),le.push(q[1]+Q[1]/3),ee=l.dxydi([],Y-1,re,1,U),ue.push(H[0]-ee[0]/3),le.push(H[1]-ee[1]/3)),ue.push(H[0]),le.push(H[1]),q=H;else for(Y=l.a2i(te),$=Math.floor(Math.max(0,Math.min(N-2,Y))),ne=Y-$,ge.length=N,ge.crossLength=B,ge.xy=function(fe){return l.evalxy([],Y,fe)},ge.dxy=function(fe,me){return l.dxydj([],$,fe,ne,me)},Z=0;Z0&&(ie=l.dxydj([],$,Z-1,ne,0),ue.push(q[0]+ie[0]/3),le.push(q[1]+ie[1]/3),ae=l.dxydj([],$,Z-1,ne,1),ue.push(H[0]-ae[0]/3),le.push(H[1]-ae[1]/3)),ue.push(H[0]),le.push(H[1]),q=H;return ge.axisLetter=c,ge.axis=S,ge.crossAxis=O,ge.value=te,ge.constvar=i,ge.index=v,ge.x=ue,ge.y=le,ge.smoothing=O.smoothing,ge}function K(te){var Y,Z,re,U,q,$=[],ne=[],H={};if(H.length=_.length,H.crossLength=D.length,c==="b")for(re=Math.max(0,Math.min(B-2,te)),q=Math.min(1,Math.max(0,te-re)),H.xy=function(Q){return l.evalxy([],Q,te)},H.dxy=function(Q,ee){return l.dxydi([],Q,re,ee,q)},Y=0;Y_.length-1||A.push(a(K(u),{color:S.gridcolor,width:S.gridwidth}));for(v=g;v_.length-1||w<0||w>_.length-1))for(k=_[d],b=_[w],s=0;s_[_.length-1]||M.push(a(W(x),{color:S.minorgridcolor,width:S.minorgridwidth}));S.startline&&E.push(a(K(0),{color:S.startlinecolor,width:S.startlinewidth})),S.endline&&E.push(a(K(_.length-1),{color:S.endlinecolor,width:S.endlinewidth}))}else{for(h=5e-15,g=(m=[Math.floor((_[_.length-1]-S.tick0)/S.dtick*(1+h)),Math.ceil((_[0]-S.tick0)/S.dtick/(1+h))].sort(function(te,Y){return te-Y}))[0],p=m[1],v=g;v<=p;v++)y=S.tick0+S.dtick*v,A.push(a(W(y),{color:S.gridcolor,width:S.gridwidth}));for(v=g-1;v_[_.length-1]||M.push(a(W(x),{color:S.minorgridcolor,width:S.minorgridwidth}));S.startline&&E.push(a(W(_[0]),{color:S.startlinecolor,width:S.startlinewidth})),S.endline&&E.push(a(W(_[_.length-1]),{color:S.endlinecolor,width:S.endlinewidth}))}}},{"../../lib/extend":493,"../../plots/cartesian/axes":554}],698:[function(e,o,f){var r=e("../../plots/cartesian/axes"),a=e("../../lib/extend").extendFlat;o.exports=function(l,c){var i,s,u,d=c._labels=[],h=c._gridlines;for(i=0;il.length&&(a=a.slice(0,l.length)):a=[],i=0;i90&&(y-=180,h=-h),{angle:y,flip:h,p:r.c2p(c,a,l),offsetMultplier:m}}},{}],712:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../components/drawing"),l=e("./map_1d_array"),c=e("./makepath"),i=e("./orient_text"),s=e("../../lib/svg_text_utils"),u=e("../../lib"),d=u.strRotate,h=u.strTranslate,m=e("../../constants/alignment");function g(w,k,b,T,_,S){var A="const-"+_+"-lines",M=b.selectAll("."+A).data(S);M.enter().append("path").classed(A,!0).style("vector-effect","non-scaling-stroke"),M.each(function(E){var D=E,O=D.x,R=D.y,z=l([],O,w.c2p),L=l([],R,k.c2p),P="M"+c(z,L,D.smoothing);r.select(this).attr("d",P).style("stroke-width",D.width).style("stroke",D.color).style("fill","none")}),M.exit().remove()}function p(w,k,b,T,_,S,A,M){var E=S.selectAll("text."+M).data(A);E.enter().append("text").classed(M,!0);var D=0,O={};return E.each(function(R,z){var L;if(R.axis.tickangle==="auto")L=i(T,k,b,R.xy,R.dxy);else{var P=(R.axis.tickangle+180)*Math.PI/180;L=i(T,k,b,R.xy,[Math.cos(P),Math.sin(P)])}z||(O={angle:L.angle,flip:L.flip});var N=(R.endAnchor?-1:1)*L.flip,B=r.select(this).attr({"text-anchor":N>0?"start":"end","data-notex":1}).call(a.font,R.font).text(R.text).call(s.convertToTspans,w),G=a.bBox(this);B.attr("transform",h(L.p[0],L.p[1])+d(L.angle)+h(R.axis.labelpadding*N,.3*G.height)),D=Math.max(D,G.width+R.axis.labelpadding)}),E.exit().remove(),O.maxExtent=D,O}o.exports=function(w,k,b,T){var _=k.xaxis,S=k.yaxis,A=w._fullLayout._clips;u.makeTraceGroups(T,b,"trace").each(function(M){var E=r.select(this),D=M[0],O=D.trace,R=O.aaxis,z=O.baxis,L=u.ensureSingle(E,"g","minorlayer"),P=u.ensureSingle(E,"g","majorlayer"),N=u.ensureSingle(E,"g","boundarylayer"),B=u.ensureSingle(E,"g","labellayer");E.style("opacity",O.opacity),g(_,S,P,R,"a",R._gridlines),g(_,S,P,z,"b",z._gridlines),g(_,S,L,R,"a",R._minorgridlines),g(_,S,L,z,"b",z._minorgridlines),g(_,S,N,R,"a-boundary",R._boundarylines),g(_,S,N,z,"b-boundary",z._boundarylines);var G=p(w,_,S,O,D,B,R._labels,"a-label"),W=p(w,_,S,O,D,B,z._labels,"b-label");(function(K,te,Y,Z,re,U,q,$){var ne,H,Q,ee,ie=u.aggNums(Math.min,null,Y.a),ae=u.aggNums(Math.max,null,Y.a),ue=u.aggNums(Math.min,null,Y.b),le=u.aggNums(Math.max,null,Y.b);ne=.5*(ie+ae),H=ue,Q=Y.ab2xy(ne,H,!0),ee=Y.dxyda_rough(ne,H),q.angle===void 0&&u.extendFlat(q,i(Y,re,U,Q,Y.dxydb_rough(ne,H))),x(K,te,Y,Z,Q,ee,Y.aaxis,re,U,q,"a-title"),ne=ie,H=.5*(ue+le),Q=Y.ab2xy(ne,H,!0),ee=Y.dxydb_rough(ne,H),$.angle===void 0&&u.extendFlat($,i(Y,re,U,Q,Y.dxyda_rough(ne,H))),x(K,te,Y,Z,Q,ee,Y.baxis,re,U,$,"b-title")})(w,B,O,D,_,S,G,W),function(K,te,Y,Z,re){var U,q,$,ne,H=Y.select("#"+K._clipPathId);H.size()||(H=Y.append("clipPath").classed("carpetclip",!0));var Q=u.ensureSingle(H,"path","carpetboundary"),ee=te.clipsegments,ie=[];for(ne=0;ne90&&B<270,W=r.select(this);W.text(A.title.text).call(s.convertToTspans,w),G&&(L=(-s.lineCount(W)+y)*v*N-L),W.attr("transform",h(P.p[0],P.p[1])+d(P.angle)+h(0,L)).attr("text-anchor","middle").call(a.font,A.title.font)}),z.exit().remove()}},{"../../components/drawing":388,"../../constants/alignment":471,"../../lib":503,"../../lib/svg_text_utils":529,"./makepath":709,"./map_1d_array":710,"./orient_text":711,"@plotly/d3":58}],713:[function(e,o,f){var r=e("./constants"),a=e("../../lib/search").findBin,l=e("./compute_control_points"),c=e("./create_spline_evaluator"),i=e("./create_i_derivative_evaluator"),s=e("./create_j_derivative_evaluator");o.exports=function(u){var d=u._a,h=u._b,m=d.length,g=h.length,p=u.aaxis,v=u.baxis,y=d[0],x=d[m-1],w=h[0],k=h[g-1],b=d[d.length-1]-d[0],T=h[h.length-1]-h[0],_=b*r.RELATIVE_CULL_TOLERANCE,S=T*r.RELATIVE_CULL_TOLERANCE;y-=_,x+=_,w-=S,k+=S,u.isVisible=function(A,M){return A>y&&Aw&&Mx||Mk},u.setScale=function(){var A=u._x,M=u._y,E=l(u._xctrl,u._yctrl,A,M,p.smoothing,v.smoothing);u._xctrl=E[0],u._yctrl=E[1],u.evalxy=c([u._xctrl,u._yctrl],m,g,p.smoothing,v.smoothing),u.dxydi=i([u._xctrl,u._yctrl],p.smoothing,v.smoothing),u.dxydj=s([u._xctrl,u._yctrl],p.smoothing,v.smoothing)},u.i2a=function(A){var M=Math.max(0,Math.floor(A[0]),m-2),E=A[0]-M;return(1-E)*d[M]+E*d[M+1]},u.j2b=function(A){var M=Math.max(0,Math.floor(A[1]),m-2),E=A[1]-M;return(1-E)*h[M]+E*h[M+1]},u.ij2ab=function(A){return[u.i2a(A[0]),u.j2b(A[1])]},u.a2i=function(A){var M=Math.max(0,Math.min(a(A,d),m-2)),E=d[M],D=d[M+1];return Math.max(0,Math.min(m-1,M+(A-E)/(D-E)))},u.b2j=function(A){var M=Math.max(0,Math.min(a(A,h),g-2)),E=h[M],D=h[M+1];return Math.max(0,Math.min(g-1,M+(A-E)/(D-E)))},u.ab2ij=function(A){return[u.a2i(A[0]),u.b2j(A[1])]},u.i2c=function(A,M){return u.evalxy([],A,M)},u.ab2xy=function(A,M,E){if(!E&&(Ad[m-1]|Mh[g-1]))return[!1,!1];var D=u.a2i(A),O=u.b2j(M),R=u.evalxy([],D,O);if(E){var z,L,P,N,B=0,G=0,W=[];Ad[m-1]?(z=m-2,L=1,B=(A-d[m-1])/(d[m-1]-d[m-2])):L=D-(z=Math.max(0,Math.min(m-2,Math.floor(D)))),Mh[g-1]?(P=g-2,N=1,G=(M-h[g-1])/(h[g-1]-h[g-2])):N=O-(P=Math.max(0,Math.min(g-2,Math.floor(O)))),B&&(u.dxydi(W,z,P,L,N),R[0]+=W[0]*B,R[1]+=W[1]*B),G&&(u.dxydj(W,z,P,L,N),R[0]+=W[0]*G,R[1]+=W[1]*G)}return R},u.c2p=function(A,M,E){return[M.c2p(A[0]),E.c2p(A[1])]},u.p2x=function(A,M,E){return[M.p2c(A[0]),E.p2c(A[1])]},u.dadi=function(A){var M=Math.max(0,Math.min(d.length-2,A));return d[M+1]-d[M]},u.dbdj=function(A){var M=Math.max(0,Math.min(h.length-2,A));return h[M+1]-h[M]},u.dxyda=function(A,M,E,D){var O=u.dxydi(null,A,M,E,D),R=u.dadi(A,E);return[O[0]/R,O[1]/R]},u.dxydb=function(A,M,E,D){var O=u.dxydj(null,A,M,E,D),R=u.dbdj(M,D);return[O[0]/R,O[1]/R]},u.dxyda_rough=function(A,M,E){var D=b*(E||.1),O=u.ab2xy(A+D,M,!0),R=u.ab2xy(A-D,M,!0);return[.5*(O[0]-R[0])/D,.5*(O[1]-R[1])/D]},u.dxydb_rough=function(A,M,E){var D=T*(E||.1),O=u.ab2xy(A,M+D,!0),R=u.ab2xy(A,M-D,!0);return[.5*(O[0]-R[0])/D,.5*(O[1]-R[1])/D]},u.dpdx=function(A){return A._m},u.dpdy=function(A){return A._m}}},{"../../lib/search":523,"./compute_control_points":701,"./constants":702,"./create_i_derivative_evaluator":703,"./create_j_derivative_evaluator":704,"./create_spline_evaluator":705}],714:[function(e,o,f){var r=e("../../lib");o.exports=function(a,l,c){var i,s,u,d=[],h=[],m=a[0].length,g=a.length;function p(te,Y){var Z,re=0,U=0;return te>0&&(Z=a[Y][te-1])!==void 0&&(U++,re+=Z),te0&&(Z=a[Y-1][te])!==void 0&&(U++,re+=Z),Y0&&s0&&i1e-5);return r.log("Smoother converged to",D,"after",O,"iterations"),a}},{"../../lib":503}],715:[function(e,o,f){var r=e("../../lib").isArray1D;o.exports=function(a,l,c){var i=c("x"),s=i&&i.length,u=c("y"),d=u&&u.length;if(!s&&!d)return!1;if(l._cheater=!i,s&&!r(i)||d&&!r(u))l._length=null;else{var h=s?i.length:1/0;d&&(h=Math.min(h,u.length)),l.a&&l.a.length&&(h=Math.min(h,l.a.length)),l.b&&l.b.length&&(h=Math.min(h,l.b.length)),l._length=h}return!0}},{"../../lib":503}],716:[function(e,o,f){var r=e("../../plots/template_attributes").hovertemplateAttrs,a=e("../scattergeo/attributes"),l=e("../../components/colorscale/attributes"),c=e("../../plots/attributes"),i=e("../../components/color/attributes").defaultLine,s=e("../../lib/extend").extendFlat,u=a.marker.line;o.exports=s({locations:{valType:"data_array",editType:"calc"},locationmode:a.locationmode,z:{valType:"data_array",editType:"calc"},geojson:s({},a.geojson,{}),featureidkey:a.featureidkey,text:s({},a.text,{}),hovertext:s({},a.hovertext,{}),marker:{line:{color:s({},u.color,{dflt:i}),width:s({},u.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:a.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:a.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:s({},c.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:r(),showlegend:s({},c.showlegend,{dflt:!1})},l("",{cLetter:"z",editTypeOverride:"calc"}))},{"../../components/color/attributes":365,"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plots/attributes":550,"../../plots/template_attributes":633,"../scattergeo/attributes":969}],717:[function(e,o,f){var r=e("fast-isnumeric"),a=e("../../constants/numerical").BADNUM,l=e("../../components/colorscale/calc"),c=e("../scatter/arrays_to_calcdata"),i=e("../scatter/calc_selection");function s(u){return u&&typeof u=="string"}o.exports=function(u,d){var h,m=d._length,g=new Array(m);h=d.geojson?function(w){return s(w)||r(w)}:s;for(var p=0;p")}}(c,p,u),[c]}},{"../../lib":503,"../../plots/cartesian/axes":554,"./attributes":716}],721:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../heatmap/colorbar"),calc:e("./calc"),calcGeoJSON:e("./plot").calcGeoJSON,plot:e("./plot").plot,style:e("./style").style,styleOnSelect:e("./style").styleOnSelect,hoverPoints:e("./hover"),eventData:e("./event_data"),selectPoints:e("./select"),moduleType:"trace",name:"choropleth",basePlotModule:e("../../plots/geo"),categories:["geo","noOpacity","showLegend"],meta:{}}},{"../../plots/geo":589,"../heatmap/colorbar":795,"./attributes":716,"./calc":717,"./defaults":718,"./event_data":719,"./hover":720,"./plot":722,"./select":723,"./style":724}],722:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=e("../../lib/geo_location_utils"),c=e("../../lib/topojson_utils").getTopojsonFeatures,i=e("../../plots/cartesian/autorange").findExtremes,s=e("./style").style;o.exports={calcGeoJSON:function(u,d){for(var h=u[0].trace,m=d[h.geo],g=m._subplot,p=h.locationmode,v=h._length,y=p==="geojson-id"?l.extractTraceFeature(u):c(h,g.topojson),x=[],w=[],k=0;k=0;c--){var i=l[c].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var s=c+1;s=0;d--)s.removeLayer(u[d][1])},i.dispose=function(){var s=this.subplot.map;this._removeLayers(),s.removeSource(this.sourceId)},o.exports=function(s,u){var d=u[0].trace,h=new c(s,d.uid),m=h.sourceId,g=r(u),p=h.below=s.belowLookup["trace-"+d.uid];return s.map.addSource(m,{type:"geojson",data:g.geojson}),h._addLayers(g,p),u[0].trace._glTrace=h,h}},{"../../plots/mapbox/constants":611,"./convert":726}],730:[function(e,o,f){var r=e("../../components/colorscale/attributes"),a=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,l=e("../../plots/template_attributes").hovertemplateAttrs,c=e("../mesh3d/attributes"),i=e("../../plots/attributes"),s=e("../../lib/extend").extendFlat,u={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:l({editType:"calc"},{keys:["norm"]}),uhoverformat:a("u",1),vhoverformat:a("v",1),whoverformat:a("w",1),xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z"),showlegend:s({},i.showlegend,{dflt:!1})};s(u,r("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"})),["opacity","lightposition","lighting"].forEach(function(d){u[d]=c[d]}),u.hoverinfo=s({},i.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"}),u.transforms=void 0,o.exports=u},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plots/attributes":550,"../../plots/cartesian/axis_format_attributes":557,"../../plots/template_attributes":633,"../mesh3d/attributes":867}],731:[function(e,o,f){var r=e("../../components/colorscale/calc");o.exports=function(a,l){for(var c=l.u,i=l.v,s=l.w,u=Math.min(l.x.length,l.y.length,l.z.length,c.length,i.length,s.length),d=-1/0,h=1/0,m=0;mu.level||u.starts.length&&s===u.level)}break;case"constraint":if(c.prefixBoundary=!1,c.edgepaths.length)return;var d=c.x.length,h=c.y.length,m=-1/0,g=1/0;for(l=0;l":y>m&&(c.prefixBoundary=!0);break;case"<":(ym||c.starts.length&&v===g)&&(c.prefixBoundary=!0);break;case"][":p=Math.min(y[0],y[1]),v=Math.max(y[0],y[1]),pm&&(c.prefixBoundary=!0)}}}},{}],738:[function(e,o,f){var r=e("../../components/colorscale"),a=e("./make_color_map"),l=e("./end_plus");o.exports={min:"zmin",max:"zmax",calc:function(c,i,s){var u=i.contours,d=i.line,h=u.size||1,m=u.coloring,g=a(i,{isColorbar:!0});if(m==="heatmap"){var p=r.extractOpts(i);s._fillgradient=p.reversescale?r.flipScale(p.colorscale):p.colorscale,s._zrange=[p.min,p.max]}else m==="fill"&&(s._fillcolor=g);s._line={color:m==="lines"?g:d.color,width:u.showlines!==!1?d.width:0,dash:d.dash},s._levels={start:u.start,end:l(u),size:h}}}},{"../../components/colorscale":378,"./end_plus":746,"./make_color_map":751}],739:[function(e,o,f){o.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(e,o,f){var r=e("fast-isnumeric"),a=e("./label_defaults"),l=e("../../components/color"),c=l.addOpacity,i=l.opacity,s=e("../../constants/filter_ops"),u=s.CONSTRAINT_REDUCTION,d=s.COMPARISON_OPS2;o.exports=function(h,m,g,p,v,y){var x,w,k,b=m.contours,T=g("contours.operation");b._operation=u[T],function(_,S){var A;d.indexOf(S.operation)===-1?(_("contours.value",[0,1]),Array.isArray(S.value)?S.value.length>2?S.value=S.value.slice(2):S.length===0?S.value=[0,1]:S.length<2?(A=parseFloat(S.value[0]),S.value=[A,A+1]):S.value=[parseFloat(S.value[0]),parseFloat(S.value[1])]:r(S.value)&&(A=parseFloat(S.value),S.value=[A,A+1])):(_("contours.value",0),r(S.value)||(Array.isArray(S.value)?S.value=parseFloat(S.value[0]):S.value=0))}(g,b),T==="="?x=b.showlines=!0:(x=g("contours.showlines"),k=g("fillcolor",c((h.line||{}).color||v,.5))),x&&(w=g("line.color",k&&i(k)?c(m.fillcolor,1):v),g("line.width",2),g("line.dash")),g("line.smoothing"),a(g,p,w,y)}},{"../../components/color":366,"../../constants/filter_ops":475,"./label_defaults":750,"fast-isnumeric":190}],741:[function(e,o,f){var r=e("../../constants/filter_ops"),a=e("fast-isnumeric");function l(s,u){var d,h=Array.isArray(u);function m(g){return a(g)?+g:null}return r.COMPARISON_OPS2.indexOf(s)!==-1?d=m(h?u[0]:u):r.INTERVAL_OPS.indexOf(s)!==-1?d=h?[m(u[0]),m(u[1])]:[m(u),m(u)]:r.SET_OPS.indexOf(s)!==-1&&(d=h?u.map(m):[m(u)]),d}function c(s){return function(u){u=l(s,u);var d=Math.min(u[0],u[1]),h=Math.max(u[0],u[1]);return{start:d,end:h,size:h-d}}}function i(s){return function(u){return{start:u=l(s,u),end:1/0,size:1/0}}}o.exports={"[]":c("[]"),"][":c("]["),">":i(">"),"<":i("<"),"=":i("=")}},{"../../constants/filter_ops":475,"fast-isnumeric":190}],742:[function(e,o,f){o.exports=function(r,a,l,c){var i=c("contours.start"),s=c("contours.end"),u=i===!1||s===!1,d=l("contours.size");!(u?a.autocontour=!0:l("autocontour",!1))&&d||l("ncontours")}},{}],743:[function(e,o,f){var r=e("../../lib");function a(l){return r.extendFlat({},l,{edgepaths:r.extendDeep([],l.edgepaths),paths:r.extendDeep([],l.paths),starts:r.extendDeep([],l.starts)})}o.exports=function(l,c){var i,s,u,d=function(g){return g.reverse()},h=function(g){return g};switch(c){case"=":case"<":return l;case">":for(l.length!==1&&r.warn("Contour data invalid for the specified inequality operation."),s=l[0],i=0;i1e3){r.warn("Too many contours, clipping at 1000",c);break}return h}},{"../../lib":503,"./constraint_mapping":741,"./end_plus":746}],746:[function(e,o,f){o.exports=function(r){return r.end+r.size/1e6}},{}],747:[function(e,o,f){var r=e("../../lib"),a=e("./constants");function l(s,u,d,h){return Math.abs(s[0]-u[0])20&&ee?Q===208||Q===1114?ae=ie[0]===0?1:-1:ue=ie[1]===0?1:-1:a.BOTTOMSTART.indexOf(Q)!==-1?ue=1:a.LEFTSTART.indexOf(Q)!==-1?ae=1:a.TOPSTART.indexOf(Q)!==-1?ue=-1:ae=-1,[ae,ue]}(v,d,u),x=[i(s,u,[-y[0],-y[1]])],w=s.z.length,k=s.z[0].length,b=u.slice(),T=y.slice();for(g=0;g<1e4;g++){if(v>20?(v=a.CHOOSESADDLE[v][(y[0]||y[1])<0?0:1],s.crossings[p]=a.SADDLEREMAINDER[v]):delete s.crossings[p],!(y=a.NEWDELTA[v])){r.log("Found bad marching index:",v,u,s.level);break}x.push(i(s,u,y)),u[0]+=y[0],u[1]+=y[1],p=u.join(","),l(x[x.length-1],x[x.length-2],h,m)&&x.pop();var _=y[0]&&(u[0]<0||u[0]>k-2)||y[1]&&(u[1]<0||u[1]>w-2);if(u[0]===b[0]&&u[1]===b[1]&&y[0]===T[0]&&y[1]===T[1]||d&&_)break;v=s.crossings[p]}g===1e4&&r.log("Infinite loop in contour?");var S,A,M,E,D,O,R,z,L,P,N,B,G,W,K,te=l(x[0],x[x.length-1],h,m),Y=0,Z=.2*s.smoothing,re=[],U=0;for(g=1;g=U;g--)if((S=re[g])=U&&S+re[A]z&&L--,s.edgepaths[L]=N.concat(x,P));break}H||(s.edgepaths[z]=x.concat(P))}for(z=0;zl?0:1)+(c[0][1]>l?0:2)+(c[1][1]>l?0:4)+(c[1][0]>l?0:8);return i===5||i===10?l>(c[0][0]+c[0][1]+c[1][0]+c[1][1])/4?i===5?713:1114:i===5?104:208:i===15?0:i}o.exports=function(l){var c,i,s,u,d,h,m,g,p,v=l[0].z,y=v.length,x=v[0].length,w=y===2||x===2;for(i=0;i=0&&(A=K,E=D):Math.abs(S[1]-A[1])<.01?Math.abs(S[1]-K[1])<.01&&(K[0]-S[0])*(A[0]-K[0])>=0&&(A=K,E=D):a.log("endpt to newendpt is not vert. or horz.",S,A,K)}if(S=A,E>=0)break;z+="L"+A}if(E===T.edgepaths.length){a.log("unclosed perimeter path");break}L=E,(N=P.indexOf(L)===-1)&&(L=P[0],z+="Z")}for(L=0;LA.center?A.right-D:D-A.left)/(z+Math.abs(Math.sin(R)*E)),N=(O>A.middle?A.bottom-O:O-A.top)/(Math.abs(L)+Math.cos(R)*E);if(P<1||N<1)return 1/0;var B=x.EDGECOST*(1/(P-1)+1/(N-1));B+=x.ANGLECOST*R*R;for(var G=D-z,W=O-L,K=D+z,te=O+L,Y=0;Y2*x.MAXCOST)break;N&&(D/=2),O=(E=R-D/2)+1.5*D}if(P<=x.MAXCOST)return z},f.addLabelData=function(T,_,S,A){var M=_.fontSize,E=_.width+M/3,D=Math.max(0,_.height-M/3),O=T.x,R=T.y,z=T.theta,L=Math.sin(z),P=Math.cos(z),N=function(G,W){return[O+G*P-W*L,R+G*L+W*P]},B=[N(-E/2,-D/2),N(-E/2,D/2),N(E/2,D/2),N(E/2,-D/2)];S.push({text:_.text,x:O,y:R,dy:_.dy,theta:z,level:_.level,width:E,height:D}),A.push(B)},f.drawLabels=function(T,_,S,A,M){var E=T.selectAll("text").data(_,function(R){return R.text+","+R.x+","+R.y+","+R.theta});if(E.exit().remove(),E.enter().append("text").attr({"data-notex":1,"text-anchor":"middle"}).each(function(R){var z=R.x+Math.sin(R.theta)*R.dy,L=R.y-Math.cos(R.theta)*R.dy;r.select(this).text(R.text).attr({x:z,y:L,transform:"rotate("+180*R.theta/Math.PI+" "+z+" "+L+")"}).call(i.convertToTspans,S)}),M){for(var D="",O=0;Os.end&&(s.start=s.end=(s.start+s.end)/2),c._input.contours||(c._input.contours={}),a.extendFlat(c._input.contours,{start:s.start,end:s.end,size:s.size}),c._input.autocontour=!0}else if(s.type!=="constraint"){var m,g=s.start,p=s.end,v=c._input.contours;g>p&&(s.start=v.start=p,p=s.end=v.end=g,g=s.start),!(s.size>0)&&(m=g===p?1:l(g,p,c.ncontours).dtick,v.size=s.size=m)}}},{"../../lib":503,"../../plots/cartesian/axes":554}],755:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../components/drawing"),l=e("../heatmap/style"),c=e("./make_color_map");o.exports=function(i){var s=r.select(i).selectAll("g.contour");s.style("opacity",function(u){return u[0].trace.opacity}),s.each(function(u){var d=r.select(this),h=u[0].trace,m=h.contours,g=h.line,p=m.size||1,v=m.start,y=m.type==="constraint",x=!y&&m.coloring==="lines",w=!y&&m.coloring==="fill",k=x||w?c(h):null;d.selectAll("g.contourlevel").each(function(_){r.select(this).selectAll("path").call(a.lineGroupStyle,g.width,x?k(_.level):g.color,g.dash)});var b=m.labelfont;if(d.selectAll("g.contourlabels text").each(function(_){a.font(r.select(this),{family:b.family,size:b.size,color:b.color||(x?k(_.level):g.color)})}),y)d.selectAll("g.contourfill path").style("fill",h.fillcolor);else if(w){var T;d.selectAll("g.contourfill path").style("fill",function(_){return T===void 0&&(T=_.level),k(_.level+.5*p)}),T===void 0&&(T=v),d.selectAll("g.contourbg path").style("fill",k(T-.5*p))}}),l(i)}},{"../../components/drawing":388,"../heatmap/style":805,"./make_color_map":751,"@plotly/d3":58}],756:[function(e,o,f){var r=e("../../components/colorscale/defaults"),a=e("./label_defaults");o.exports=function(l,c,i,s,u){var d,h=i("contours.coloring"),m="";h==="fill"&&(d=i("contours.showlines")),d!==!1&&(h!=="lines"&&(m=i("line.color","#000")),i("line.width",.5),i("line.dash")),h!=="none"&&(l.showlegend!==!0&&(c.showlegend=!1),c._dfltShowLegend=!1,r(l,c,s,i,{prefix:"",cLetter:"z"})),i("line.smoothing"),a(i,s,m,u)}},{"../../components/colorscale/defaults":376,"./label_defaults":750}],757:[function(e,o,f){var r=e("../heatmap/attributes"),a=e("../contour/attributes"),l=e("../../components/colorscale/attributes"),c=e("../../lib/extend").extendFlat,i=a.contours;o.exports=c({carpet:{valType:"string",editType:"calc"},z:r.z,a:r.x,a0:r.x0,da:r.dx,b:r.y,b0:r.y0,db:r.dy,text:r.text,hovertext:r.hovertext,transpose:r.transpose,atype:r.xtype,btype:r.ytype,fillcolor:a.fillcolor,autocontour:a.autocontour,ncontours:a.ncontours,contours:{type:i.type,start:i.start,end:i.end,size:i.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:i.showlines,showlabels:i.showlabels,labelfont:i.labelfont,labelformat:i.labelformat,operation:i.operation,value:i.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:a.line.color,width:a.line.width,dash:a.line.dash,smoothing:a.line.smoothing,editType:"plot"},transforms:void 0},l("",{cLetter:"z",autoColorDflt:!1}))},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../contour/attributes":735,"../heatmap/attributes":792}],758:[function(e,o,f){var r=e("../../components/colorscale/calc"),a=e("../../lib"),l=e("../heatmap/convert_column_xyz"),c=e("../heatmap/clean_2d_array"),i=e("../heatmap/interp2d"),s=e("../heatmap/find_empties"),u=e("../heatmap/make_bound_array"),d=e("./defaults"),h=e("../carpet/lookup_carpetid"),m=e("../contour/set_contours");o.exports=function(g,p){var v=p._carpetTrace=h(g,p);if(v&&v.visible&&v.visible!=="legendonly"){if(!p.a||!p.b){var y=g.data[v.index],x=g.data[p.index];x.a||(x.a=y.a),x.b||(x.b=y.b),d(x,p,p._defaultColor,g._fullLayout)}var w=function(k,b){var T,_,S,A,M,E,D,O=b._carpetTrace,R=O.aaxis,z=O.baxis;R._minDtick=0,z._minDtick=0,a.isArray1D(b.z)&&l(b,R,z,"a","b",["z"]),T=b._a=b._a||b.a,A=b._b=b._b||b.b,T=T?R.makeCalcdata(b,"_a"):[],A=A?z.makeCalcdata(b,"_b"):[],_=b.a0||0,S=b.da||1,M=b.b0||0,E=b.db||1,D=b._z=c(b._z||b.z,b.transpose),b._emptypoints=s(D),i(D,b._emptypoints);var L=a.maxRowLength(D),P=b.xtype==="scaled"?"":T,N=u(b,P,_,S,L,R),B=b.ytype==="scaled"?"":A,G=u(b,B,M,E,D.length,z),W={a:N,b:G,z:D};return b.contours.type==="levels"&&b.contours.coloring!=="none"&&r(k,b,{vals:D,containerStr:"",cLetter:"z"}),[W]}(g,p);return m(p,p._z),w}}},{"../../components/colorscale/calc":374,"../../lib":503,"../carpet/lookup_carpetid":708,"../contour/set_contours":754,"../heatmap/clean_2d_array":794,"../heatmap/convert_column_xyz":796,"../heatmap/find_empties":798,"../heatmap/interp2d":801,"../heatmap/make_bound_array":803,"./defaults":759}],759:[function(e,o,f){var r=e("../../lib"),a=e("../heatmap/xyz_defaults"),l=e("./attributes"),c=e("../contour/constraint_defaults"),i=e("../contour/contours_defaults"),s=e("../contour/style_defaults");o.exports=function(u,d,h,m){function g(p,v){return r.coerce(u,d,l,p,v)}if(g("carpet"),u.a&&u.b){if(!a(u,d,g,m,"a","b"))return void(d.visible=!1);g("text"),g("contours.type")==="constraint"?c(u,d,g,m,h,{hasHover:!1}):(i(u,d,g,function(p){return r.coerce2(u,d,l,p)}),s(u,d,g,m,{hasHover:!1}))}else d._defaultColor=h,d._length=null}},{"../../lib":503,"../contour/constraint_defaults":740,"../contour/contours_defaults":742,"../contour/style_defaults":756,"../heatmap/xyz_defaults":807,"./attributes":757}],760:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../contour/colorbar"),calc:e("./calc"),plot:e("./plot"),style:e("../contour/style"),moduleType:"trace",name:"contourcarpet",basePlotModule:e("../../plots/cartesian"),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}},{"../../plots/cartesian":568,"../contour/colorbar":738,"../contour/style":755,"./attributes":757,"./calc":758,"./defaults":759,"./plot":761}],761:[function(e,o,f){var r=e("@plotly/d3"),a=e("../carpet/map_1d_array"),l=e("../carpet/makepath"),c=e("../../components/drawing"),i=e("../../lib"),s=e("../contour/make_crossings"),u=e("../contour/find_all_paths"),d=e("../contour/plot"),h=e("../contour/constants"),m=e("../contour/convert_to_constraints"),g=e("../contour/empty_pathinfo"),p=e("../contour/close_boundaries"),v=e("../carpet/lookup_carpetid"),y=e("../carpet/axis_aligned_line");function x(b,T,_){var S=b.getPointAtLength(T),A=b.getPointAtLength(_),M=A.x-S.x,E=A.y-S.y,D=Math.sqrt(M*M+E*E);return[M/D,E/D]}function w(b){var T=Math.sqrt(b[0]*b[0]+b[1]*b[1]);return[b[0]/T,b[1]/T]}function k(b,T){var _=Math.abs(b[0]*T[0]+b[1]*T[1]);return Math.sqrt(1-_*_)/_}o.exports=function(b,T,_,S){var A=T.xaxis,M=T.yaxis;i.makeTraceGroups(S,_,"contour").each(function(E){var D=r.select(this),O=E[0],R=O.trace,z=R._carpetTrace=v(b,R),L=b.calcdata[z.index][0];if(z.visible&&z.visible!=="legendonly"){var P=O.a,N=O.b,B=R.contours,G=g(B,T,O),W=B.type==="constraint",K=B._operation,te=W?K==="="?"lines":"fill":B.coloring,Y=[[P[0],N[N.length-1]],[P[P.length-1],N[N.length-1]],[P[P.length-1],N[0]],[P[0],N[0]]];s(G);var Z=1e-8*(P[P.length-1]-P[0]),re=1e-8*(N[N.length-1]-N[0]);u(G,Z,re);var U,q,$,ne,H=G;B.type==="constraint"&&(H=m(G,K)),function(ae,ue){var le,ge,fe,me,_e,we,Te,Oe,de;for(le=0;le=0;ne--)U=L.clipsegments[ne],q=a([],U.x,A.c2p),$=a([],U.y,M.c2p),q.reverse(),$.reverse(),Q.push(l(q,$,U.bicubic));var ee="M"+Q.join("L")+"Z";(function(ae,ue,le,ge,fe,me){var _e,we,Te,Oe,de=i.ensureSingle(ae,"g","contourbg").selectAll("path").data(me!=="fill"||fe?[]:[0]);de.enter().append("path"),de.exit().remove();var ye=[];for(Oe=0;Oe=0&&(vt=He,At=at):Math.abs(ft[1]-vt[1])=0&&(vt=He,At=at):i.log("endpt to newendpt is not vert. or horz.",ft,vt,He)}if(At>=0)break;Ot+=Ae(ft,vt),ft=vt}if(At===Fe.edgepaths.length){i.log("unclosed perimeter path");break}nt=At,(Jt=Wt.indexOf(nt)===-1)&&(nt=Wt[0],Ot+=Ae(ft,vt)+"Z",ft=null)}for(nt=0;ntUt&&(Tt.max=Ut),Tt.len=Tt.max-Tt.min}(this,At,vt,at,_e,Pt.height),!(at.len<(Pt.width+Pt.height)*h.LABELMIN)))for(var et=Math.min(Math.ceil(at.len/ft),h.LABELMAX),Ot=0;Ot0?+y[g]:0),p.push({type:"Feature",geometry:{type:"Point",coordinates:b},properties:T})}}var S=c.extractOpts(d),A=S.reversescale?c.flipScale(S.colorscale):S.colorscale,M=A[0][1],E=["interpolate",["linear"],["heatmap-density"],0,l.opacity(M)<1?M:l.addOpacity(M,0)];for(g=1;g=0;u--)i.removeLayer(s[u][1])},c.dispose=function(){var i=this.subplot.map;this._removeLayers(),i.removeSource(this.sourceId)},o.exports=function(i,s){var u=s[0].trace,d=new l(i,u.uid),h=d.sourceId,m=r(s),g=d.below=i.belowLookup["trace-"+u.uid];return i.map.addSource(h,{type:"geojson",data:m.geojson}),d._addLayers(m,g),d}},{"../../plots/mapbox/constants":611,"./convert":764}],770:[function(e,o,f){var r=e("../../lib");o.exports=function(a,l){for(var c=0;c"),h.color=function(T,_){var S=T.marker,A=_.mc||S.color,M=_.mlc||S.line.color,E=_.mlw||S.line.width;if(r(A))return A;if(r(M)&&E)return M}(g,v),[h]}}},{"../../components/color":366,"../../lib":503,"../bar/hover":655}],778:[function(e,o,f){o.exports={attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults").supplyDefaults,crossTraceDefaults:e("./defaults").crossTraceDefaults,supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc"),crossTraceCalc:e("./cross_trace_calc"),plot:e("./plot"),style:e("./style").style,hoverPoints:e("./hover"),eventData:e("./event_data"),selectPoints:e("../bar/select"),moduleType:"trace",name:"funnel",basePlotModule:e("../../plots/cartesian"),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},{"../../plots/cartesian":568,"../bar/select":660,"./attributes":771,"./calc":772,"./cross_trace_calc":774,"./defaults":775,"./event_data":776,"./hover":777,"./layout_attributes":779,"./layout_defaults":780,"./plot":781,"./style":782}],779:[function(e,o,f){o.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},{}],780:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes");o.exports=function(l,c,i){var s=!1;function u(m,g){return r.coerce(l,c,a,m,g)}for(var d=0;d path").each(function(x){if(!x.isBlank){var w=y.marker;r.select(this).call(l.fill,x.mc||w.color).call(l.stroke,x.mlc||w.line.color).call(a.dashLine,w.line.dash,x.mlw||w.line.width).style("opacity",y.selectedpoints&&!x.selected?c:1)}}),u(v,y,d),v.selectAll(".regions").each(function(){r.select(this).selectAll("path").style("stroke-width",0).call(l.fill,y.connector.fillcolor)}),v.selectAll(".lines").each(function(){var x=y.connector.line;a.lineGroupStyle(r.select(this).selectAll("path"),x.width,x.color,x.dash)})})}}},{"../../components/color":366,"../../components/drawing":388,"../../constants/interactions":478,"../bar/style":662,"../bar/uniform_text":664,"@plotly/d3":58}],783:[function(e,o,f){var r=e("../pie/attributes"),a=e("../../plots/attributes"),l=e("../../plots/domain").attributes,c=e("../../plots/template_attributes").hovertemplateAttrs,i=e("../../plots/template_attributes").texttemplateAttrs,s=e("../../lib/extend").extendFlat;o.exports={labels:r.labels,label0:r.label0,dlabel:r.dlabel,values:r.values,marker:{colors:r.marker.colors,line:{color:s({},r.marker.line.color,{dflt:null}),width:s({},r.marker.line.width,{dflt:1}),editType:"calc"},editType:"calc"},text:r.text,hovertext:r.hovertext,scalegroup:s({},r.scalegroup,{}),textinfo:s({},r.textinfo,{flags:["label","text","value","percent"]}),texttemplate:i({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:s({},a.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:c({},{keys:["label","color","value","text","percent"]}),textposition:s({},r.textposition,{values:["inside","none"],dflt:"inside"}),textfont:r.textfont,insidetextfont:r.insidetextfont,title:{text:r.title.text,font:r.title.font,position:s({},r.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:l({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}},{"../../lib/extend":493,"../../plots/attributes":550,"../../plots/domain":584,"../../plots/template_attributes":633,"../pie/attributes":901}],784:[function(e,o,f){var r=e("../../plots/plots");f.name="funnelarea",f.plot=function(a,l,c,i){r.plotBasePlot(f.name,a,l,c,i)},f.clean=function(a,l,c,i){r.cleanBasePlot(f.name,a,l,c,i)}},{"../../plots/plots":619}],785:[function(e,o,f){var r=e("../pie/calc");o.exports={calc:function(a,l){return r.calc(a,l)},crossTraceCalc:function(a){r.crossTraceCalc(a,{type:"funnelarea"})}}},{"../pie/calc":903}],786:[function(e,o,f){var r=e("../../lib"),a=e("./attributes"),l=e("../../plots/domain").defaults,c=e("../bar/defaults").handleText,i=e("../pie/defaults").handleLabelsAndValues;o.exports=function(s,u,d,h){function m(T,_){return r.coerce(s,u,a,T,_)}var g=m("labels"),p=m("values"),v=i(g,p),y=v.len;if(u._hasLabels=v.hasLabels,u._hasValues=v.hasValues,!u._hasLabels&&u._hasValues&&(m("label0"),m("dlabel")),y){u._length=y,m("marker.line.width")&&m("marker.line.color",h.paper_bgcolor),m("marker.colors"),m("scalegroup");var x,w=m("text"),k=m("texttemplate");if(k||(x=m("textinfo",Array.isArray(w)?"text+percent":"percent")),m("hovertext"),m("hovertemplate"),k||x&&x!=="none"){var b=m("textposition");c(s,u,h,m,b,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}l(u,h,m),m("title.text")&&(m("title.position"),r.coerceFont(m,"title.font",h.font)),m("aspectratio"),m("baseratio")}else u.visible=!1}},{"../../lib":503,"../../plots/domain":584,"../bar/defaults":652,"../pie/defaults":904,"./attributes":783}],787:[function(e,o,f){o.exports={moduleType:"trace",name:"funnelarea",basePlotModule:e("./base_plot"),categories:["pie-like","funnelarea","showLegend"],attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults"),supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc").calc,crossTraceCalc:e("./calc").crossTraceCalc,plot:e("./plot"),style:e("./style"),styleOne:e("../pie/style_one"),meta:{}}},{"../pie/style_one":912,"./attributes":783,"./base_plot":784,"./calc":785,"./defaults":786,"./layout_attributes":788,"./layout_defaults":789,"./plot":790,"./style":791}],788:[function(e,o,f){var r=e("../pie/layout_attributes").hiddenlabels;o.exports={hiddenlabels:r,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}},{"../pie/layout_attributes":908}],789:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes");o.exports=function(l,c){function i(s,u){return r.coerce(l,c,a,s,u)}i("hiddenlabels"),i("funnelareacolorway",c.colorway),i("extendfunnelareacolors")}},{"../../lib":503,"./layout_attributes":788}],790:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../components/drawing"),l=e("../../lib"),c=l.strScale,i=l.strTranslate,s=e("../../lib/svg_text_utils"),u=e("../bar/plot").toMoveInsideBar,d=e("../bar/uniform_text"),h=d.recordMinTextSize,m=d.clearMinTextSize,g=e("../pie/helpers"),p=e("../pie/plot"),v=p.attachFxHandlers,y=p.determineInsideTextFont,x=p.layoutAreas,w=p.prerenderTitles,k=p.positionTitleOutside,b=p.formatSliceLabel;function T(_,S){return"l"+(S[0]-_[0])+","+(S[1]-_[1])}o.exports=function(_,S){var A=_._fullLayout;m("funnelarea",A),w(S,_),x(S,A._size),l.makeTraceGroups(A._funnelarealayer,S,"trace").each(function(M){var E=r.select(this),D=M[0],O=D.trace;(function(R){if(!R.length)return;var z=R[0],L=z.trace,P=L.aspectratio,N=L.baseratio;N>.999&&(N=.999);var B,G=Math.pow(N,2),W=z.vTotal,K=W,te=W*G/(1-G)/W;function Y(){var Te,Oe={x:Te=Math.sqrt(te),y:-Te};return[Oe.x,Oe.y]}var Z,re,U=[];for(U.push(Y()),Z=R.length-1;Z>-1;Z--)if(!(re=R[Z]).hidden){var q=re.v/K;te+=q,U.push(Y())}var $=1/0,ne=-1/0;for(Z=0;Z-1;Z--)if(!(re=R[Z]).hidden){var fe=U[ge+=1][0],me=U[ge][1];re.TL=[-fe,me],re.TR=[fe,me],re.BL=ue,re.BR=le,re.pxmid=(_e=re.TR,we=re.BR,[.5*(_e[0]+we[0]),.5*(_e[1]+we[1])]),ue=re.TL,le=re.TR}var _e,we})(M),E.each(function(){var R=r.select(this).selectAll("g.slice").data(M);R.enter().append("g").classed("slice",!0),R.exit().remove(),R.each(function(L,P){if(L.hidden)r.select(this).selectAll("path,g").remove();else{L.pointNumber=L.i,L.curveNumber=O.index;var N=D.cx,B=D.cy,G=r.select(this),W=G.selectAll("path.surface").data([L]);W.enter().append("path").classed("surface",!0).style({"pointer-events":"all"}),G.call(v,_,M);var K="M"+(N+L.TR[0])+","+(B+L.TR[1])+T(L.TR,L.BR)+T(L.BR,L.BL)+T(L.BL,L.TL)+"Z";W.attr("d",K),b(_,L,D);var te=g.castOption(O.textposition,L.pts),Y=G.selectAll("g.slicetext").data(L.text&&te!=="none"?[0]:[]);Y.enter().append("g").classed("slicetext",!0),Y.exit().remove(),Y.each(function(){var Z=l.ensureSingle(r.select(this),"text","",function(ee){ee.attr("data-notex",1)}),re=l.ensureUniformFontSize(_,y(O,L,A.font));Z.text(L.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(a.font,re).call(s.convertToTspans,_);var U,q,$,ne=a.bBox(Z.node()),H=Math.min(L.BL[1],L.BR[1])+B,Q=Math.max(L.TL[1],L.TR[1])+B;q=Math.max(L.TL[0],L.BL[0])+N,$=Math.min(L.TR[0],L.BR[0])+N,(U=u(q,$,H,Q,ne,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"})).fontSize=re.size,h(O.type,U,A),M[P].transform=U,Z.attr("transform",l.getTextTransform(U))})}});var z=r.select(this).selectAll("g.titletext").data(O.title.text?[0]:[]);z.enter().append("g").classed("titletext",!0),z.exit().remove(),z.each(function(){var L=l.ensureSingle(r.select(this),"text","",function(B){B.attr("data-notex",1)}),P=O.title.text;O._meta&&(P=l.templateString(P,O._meta)),L.text(P).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(a.font,O.title.font).call(s.convertToTspans,_);var N=k(D,A._size);L.attr("transform",i(N.x,N.y)+c(Math.min(1,N.scale))+i(N.tx,N.ty))})})})}},{"../../components/drawing":388,"../../lib":503,"../../lib/svg_text_utils":529,"../bar/plot":659,"../bar/uniform_text":664,"../pie/helpers":906,"../pie/plot":910,"@plotly/d3":58}],791:[function(e,o,f){var r=e("@plotly/d3"),a=e("../pie/style_one"),l=e("../bar/uniform_text").resizeText;o.exports=function(c){var i=c._fullLayout._funnelarealayer.selectAll(".trace");l(c,i,"funnelarea"),i.each(function(s){var u=s[0].trace,d=r.select(this);d.style({opacity:u.opacity}),d.selectAll("path.surface").each(function(h){r.select(this).call(a,h,u)})})}},{"../bar/uniform_text":664,"../pie/style_one":912,"@plotly/d3":58}],792:[function(e,o,f){var r=e("../scatter/attributes"),a=e("../../plots/attributes"),l=e("../../plots/font_attributes"),c=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,i=e("../../plots/template_attributes").hovertemplateAttrs,s=e("../../plots/template_attributes").texttemplateAttrs,u=e("../../components/colorscale/attributes"),d=e("../../lib/extend").extendFlat;o.exports=d({z:{valType:"data_array",editType:"calc"},x:d({},r.x,{impliedEdits:{xtype:"array"}}),x0:d({},r.x0,{impliedEdits:{xtype:"scaled"}}),dx:d({},r.dx,{impliedEdits:{xtype:"scaled"}}),y:d({},r.y,{impliedEdits:{ytype:"array"}}),y0:d({},r.y0,{impliedEdits:{ytype:"scaled"}}),dy:d({},r.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:d({},r.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:d({},r.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:d({},r.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:d({},r.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:d({},r.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:d({},r.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:c("x"),yhoverformat:c("y"),zhoverformat:c("z",1),hovertemplate:i(),texttemplate:s({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:l({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:d({},a.showlegend,{dflt:!1})},{transforms:void 0},u("",{cLetter:"z",autoColorDflt:!1}))},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plots/attributes":550,"../../plots/cartesian/axis_format_attributes":557,"../../plots/font_attributes":585,"../../plots/template_attributes":633,"../scatter/attributes":927}],793:[function(e,o,f){var r=e("../../registry"),a=e("../../lib"),l=e("../../plots/cartesian/axes"),c=e("../../plots/cartesian/align_period"),i=e("../histogram2d/calc"),s=e("../../components/colorscale/calc"),u=e("./convert_column_xyz"),d=e("./clean_2d_array"),h=e("./interp2d"),m=e("./find_empties"),g=e("./make_bound_array"),p=e("../../constants/numerical").BADNUM;function v(y){for(var x=[],w=y.length,k=0;kte){W("x scale is not linear");break}}if(_.length&&B==="fast"){var Y=(_[_.length-1]-_[0])/(_.length-1),Z=Math.abs(Y/100);for(D=0;D<_.length-1;D++)if(Math.abs(_[D+1]-_[D]-Y)>Z){W("y scale is not linear");break}}}}var re=a.maxRowLength(E),U=x.xtype==="scaled"?"":w,q=g(x,U,k,b,re,R),$=x.ytype==="scaled"?"":_,ne=g(x,$,S,A,E.length,z);N||(x._extremes[R._id]=l.findExtremes(R,q),x._extremes[z._id]=l.findExtremes(z,ne));var H={x:q,y:ne,z:E,text:x._text||x.text,hovertext:x._hovertext||x.hovertext};if(x.xperiodalignment&&T&&(H.orig_x=T),x.yperiodalignment&&M&&(H.orig_y=M),U&&U.length===q.length-1&&(H.xCenter=U),$&&$.length===ne.length-1&&(H.yCenter=$),P&&(H.xRanges=O.xRanges,H.yRanges=O.yRanges,H.pts=O.pts),L||s(y,x,{vals:E,cLetter:"z"}),L&&x.contours&&x.contours.coloring==="heatmap"){var Q={type:x.type==="contour"?"heatmap":"histogram2d",xcalendar:x.xcalendar,ycalendar:x.ycalendar};H.xfill=g(Q,U,k,b,re,R),H.yfill=g(Q,$,S,A,E.length,z)}return[H]}},{"../../components/colorscale/calc":374,"../../constants/numerical":479,"../../lib":503,"../../plots/cartesian/align_period":551,"../../plots/cartesian/axes":554,"../../registry":638,"../histogram2d/calc":826,"./clean_2d_array":794,"./convert_column_xyz":796,"./find_empties":798,"./interp2d":801,"./make_bound_array":803}],794:[function(e,o,f){var r=e("fast-isnumeric"),a=e("../../lib"),l=e("../../constants/numerical").BADNUM;o.exports=function(c,i,s,u){var d,h,m,g,p,v;function y(_){if(r(_))return+_}if(i&&i.transpose){for(d=0,p=0;p=0;u--)(d=((p[[(c=(s=v[u])[0])-1,i=s[1]]]||w)[2]+(p[[c+1,i]]||w)[2]+(p[[c,i-1]]||w)[2]+(p[[c,i+1]]||w)[2])/20)&&(h[s]=[c,i,d],v.splice(u,1),m=!0);if(!m)throw"findEmpties iterated with no new neighbors";for(s in h)p[s]=h[s],g.push(h[s])}return g.sort(function(b,T){return T[2]-b[2]})}},{"../../lib":503}],799:[function(e,o,f){var r=e("../../components/fx"),a=e("../../lib"),l=e("../../plots/cartesian/axes"),c=e("../../components/colorscale").extractOpts;o.exports=function(i,s,u,d,h){h||(h={});var m,g,p,v,y=h.isContour,x=i.cd[0],w=x.trace,k=i.xa,b=i.ya,T=x.x,_=x.y,S=x.z,A=x.xCenter,M=x.yCenter,E=x.zmask,D=w.zhoverformat,O=T,R=_;if(i.index!==!1){try{p=Math.round(i.index[1]),v=Math.round(i.index[0])}catch{return void a.error("Error hovering on heatmap, pointNumber must be [row,col], found:",i.index)}if(p<0||p>=S[0].length||v<0||v>S.length)return}else{if(r.inbox(s-T[0],s-T[T.length-1],0)>0||r.inbox(u-_[0],u-_[_.length-1],0)>0)return;if(y){var z;for(O=[2*T[0]-T[1]],z=1;zT&&(S=Math.max(S,Math.abs(i[h][m]-b)/(_-T))))}return S}o.exports=function(i,s){var u,d=1;for(c(i,s),u=0;u.01;u++)d=c(i,s,l(d));return d>.01&&r.log("interp2d didn't converge quickly",d),i}},{"../../lib":503}],802:[function(e,o,f){var r=e("../../lib");o.exports=function(a,l){a("texttemplate");var c=r.extendFlat({},l.font,{color:"auto",size:"auto"});r.coerceFont(a,"textfont",c)}},{"../../lib":503}],803:[function(e,o,f){var r=e("../../registry"),a=e("../../lib").isArrayOrTypedArray;o.exports=function(l,c,i,s,u,d){var h,m,g,p=[],v=r.traceIs(l,"contour"),y=r.traceIs(l,"histogram"),x=r.traceIs(l,"gl2d");if(a(c)&&c.length>1&&!y&&d.type!=="category"){var w=c.length;if(!(w<=u))return v?c.slice(0,u):c.slice(0,u+1);if(v||x)p=c.slice(0,u);else if(u===1)p=[c[0]-.5,c[0]+.5];else{for(p=[1.5*c[0]-.5*c[1]],g=1;g0;)R=M.c2p(U[N]),N--;for(R0;)P=E.c2p(q[N]),N--;if(PJe||Je>E._length))for(B=zt;BEt||Et>M._length)){var It=d({x:st,y:Le},te,T._fullLayout);It.x=st,It.y=Le;var Zt=K.z[N][B];Zt===void 0?(It.z="",It.zLabel=""):(It.z=Zt,It.zLabel=i.tickText(Vt,Zt,"hover").text);var Kt=K.text&&K.text[N]&&K.text[N][B];Kt!==void 0&&Kt!==!1||(Kt=""),It.text=Kt;var Ht=s.texttemplateString(kt,It,T._fullLayout._d3locale,It,te._meta||{});if(Ht){var mn=Ht.split("
"),zn=mn.length,pn=0;for(G=0;G0&&(T=!0);for(var A=0;As){var u=s-c[a];return c[a]=s,u}}return 0},max:function(a,l,c,i){var s=i[l];if(r(s)){if(s=Number(s),!r(c[a]))return c[a]=s,s;if(c[a]u?v>c?v>1.1*a?a:v>1.1*l?l:c:v>i?i:v>s?s:u:Math.pow(10,Math.floor(Math.log(v)/Math.LN10))}function g(v,y,x,w,k,b){if(w&&v>c){var T=p(y,k,b),_=p(x,k,b),S=v===a?0:1;return T[S]!==_[S]}return Math.floor(x/v)-Math.floor(y/v)>.1}function p(v,y,x){var w=y.c2d(v,a,x).split("-");return w[0]===""&&(w.unshift(),w[0]="-"+w[0]),w}o.exports=function(v,y,x,w,k){var b,T,_=-1.1*y,S=-.1*y,A=v-S,M=x[0],E=x[1],D=Math.min(h(M+S,M+A,w,k),h(E+S,E+A,w,k)),O=Math.min(h(M+_,M+S,w,k),h(E+_,E+S,w,k));if(D>O&&Oc){var R=b===a?1:6,z=b===a?"M12":"M1";return function(L,P){var N=w.c2d(L,a,k),B=N.indexOf("-",R);B>0&&(N=N.substr(0,B));var G=w.d2c(N,0,k);if(Gv.r2l(H)&&(ee=c.tickIncrement(ee,O.size,!0,T)),U.start=v.l2r(ee),ne||a.nestedProperty(p,M+".start").set(U.start)}var ie=O.end,ae=v.r2l(re.end),ue=ae!==void 0;if((O.endFound||ue)&&ae!==v.r2l(ie)){var le=ue?ae:a.aggNums(Math.max,null,_);U.end=v.l2r(le),ue||a.nestedProperty(p,M+".start").set(U.end)}var ge="autobin"+y;return p._input[ge]===!1&&(p._input[M]=a.extendFlat({},p[M]||{}),delete p._input[ge],delete p[ge]),[U,_]}o.exports={calc:function(g,p){var v,y,x,w,k=[],b=[],T=p.orientation==="h",_=c.getFromId(g,T?p.yaxis:p.xaxis),S=T?"y":"x",A={x:"y",y:"x"}[S],M=p[S+"calendar"],E=p.cumulative,D=m(g,p,_,S),O=D[0],R=D[1],z=typeof O.size=="string",L=[],P=z?L:O,N=[],B=[],G=[],W=0,K=p.histnorm,te=p.histfunc,Y=K.indexOf("density")!==-1;E.enabled&&Y&&(K=K.replace(/ ?density$/,""),Y=!1);var Z,re=te==="max"||te==="min"?null:0,U=s.count,q=u[K],$=!1,ne=function(de){return _.r2c(de,0,M)};for(a.isArrayOrTypedArray(p[A])&&te!=="count"&&(Z=p[A],$=te==="avg",U=s[te]),v=ne(O.start),x=ne(O.end)+(v-c.tickIncrement(v,O.size,!1,M))/1e6;v=0&&w=0;ke--)Ve(ke);else if(ye==="increasing"){for(ke=1;ke=0;ke--)de[ke]+=de[ke+1];Me==="exclude"&&(de.push(0),de.shift())}}(b,E.direction,E.currentbin);var me=Math.min(k.length,b.length),_e=[],we=0,Te=me-1;for(v=0;v=we;v--)if(b[v]){Te=v;break}for(v=we;v<=Te;v++)if(r(k[v])&&r(b[v])){var Oe={p:k[v],s:b[v],b:0};E.enabled||(Oe.pts=G[v],ae?Oe.ph0=Oe.ph1=G[v].length?R[G[v][0]]:k[v]:(p._computePh=!0,Oe.ph0=ee(L[v]),Oe.ph1=ee(L[v+1],!0))),_e.push(Oe)}return _e.length===1&&(_e[0].width1=c.tickIncrement(_e[0].p,O.size,!1,M)-_e[0].p),i(_e,p),a.isArrayOrTypedArray(p.selectedpoints)&&a.tagSelected(_e,p,ge),_e},calcAllAutoBins:m}},{"../../lib":503,"../../plots/cartesian/axes":554,"../../registry":638,"../bar/arrays_to_calcdata":647,"./average":813,"./bin_functions":815,"./bin_label_vals":816,"./norm_functions":824,"fast-isnumeric":190}],818:[function(e,o,f){o.exports={eventDataKeys:["binNumber"]}},{}],819:[function(e,o,f){var r=e("../../lib"),a=e("../../plots/cartesian/axis_ids"),l=e("../../registry").traceIs,c=e("../bar/defaults").handleGroupingDefaults,i=r.nestedProperty,s=e("../../plots/cartesian/constraints").getAxisGroup,u=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],d=["x","y"];o.exports=function(h,m){var g,p,v,y,x,w,k,b=m._histogramBinOpts={},T=[],_={},S=[];function A(Y,Z){return r.coerce(g._input,g,g._module.attributes,Y,Z)}function M(Y){return Y.orientation==="v"?"x":"y"}function E(Y,Z,re){var U=Y.uid+"__"+re;Z||(Z=U);var q=function(Q,ee){return a.getFromTrace({_fullLayout:m},Q,ee).type}(Y,re),$=Y[re+"calendar"]||"",ne=b[Z],H=!0;ne&&(q===ne.axType&&$===ne.calendar?(H=!1,ne.traces.push(Y),ne.dirs.push(re)):(Z=U,q!==ne.axType&&r.warn(["Attempted to group the bins of trace",Y.index,"set on a","type:"+q,"axis","with bins on","type:"+ne.axType,"axis."].join(" ")),$!==ne.calendar&&r.warn(["Attempted to group the bins of trace",Y.index,"set with a",$,"calendar","with bins",ne.calendar?"on a "+ne.calendar+" calendar":"w/o a set calendar"].join(" ")))),H&&(b[Z]={traces:[Y],dirs:[re],axType:q,calendar:Y[re+"calendar"]||""}),Y["_"+re+"bingroup"]=Z}for(x=0;xL&&D.splice(L,D.length-L),z.length>L&&z.splice(L,z.length-L);var P=[],N=[],B=[],G=typeof E.size=="string",W=typeof R.size=="string",K=[],te=[],Y=G?K:E,Z=W?te:R,re=0,U=[],q=[],$=p.histnorm,ne=p.histfunc,H=$.indexOf("density")!==-1,Q=ne==="max"||ne==="min"?null:0,ee=l.count,ie=c[$],ae=!1,ue=[],le=[],ge="z"in p?p.z:"marker"in p&&Array.isArray(p.marker.color)?p.marker.color:"";ge&&ne!=="count"&&(ae=ne==="avg",ee=l[ne]);var fe=E.size,me=S(E.start),_e=S(E.end)+(me-a.tickIncrement(me,fe,!1,T))/1e6;for(v=me;v<_e;v=a.tickIncrement(v,fe,!1,T))N.push(Q),K.push(v),ae&&B.push(0);K.push(v);var we,Te=N.length,Oe=(v-me)/Te,de=(we=me+Oe/2,k.c2r(we,0,T)),ye=R.size,Me=A(R.start),ke=A(R.end)+(Me-a.tickIncrement(Me,ye,!1,_))/1e6;for(v=Me;v=0&&x=0&&w-1,flipY:L.tiling.flip.indexOf("y")>-1,orientation:L.tiling.orientation,pad:{inner:L.tiling.pad},maxDepth:L._maxDepth}).descendants(),W=1/0,K=-1/0;G.forEach(function(U){var q=U.depth;q>=L._maxDepth?(U.x0=U.x1=(U.x0+U.x1)/2,U.y0=U.y1=(U.y0+U.y1)/2):(W=Math.min(W,q),K=Math.max(K,q))}),y=y.data(G,d.getPtId),L._maxVisibleLayers=isFinite(K)?K-W+1:0,y.enter().append("g").classed("slice",!0),E(y,!1,{},[w,k],_),y.order();var te=null;if(M&&R){var Y=d.getPtId(R);y.each(function(U){te===null&&d.getPtId(U)===Y&&(te={x0:U.x0,x1:U.x1,y0:U.y0,y1:U.y1})})}var Z=function(){return te||{x0:0,x1:w,y0:0,y1:k}},re=y;return M&&(re=re.transition().each("end",function(){var U=r.select(this);d.setSliceCursor(U,g,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),re.each(function(U){U._x0=b(U.x0),U._x1=b(U.x1),U._y0=T(U.y0),U._y1=T(U.y1),U._hoverX=b(U.x1-L.tiling.pad),U._hoverY=T(B?U.y1-L.tiling.pad/2:U.y0+L.tiling.pad/2);var q=r.select(this),$=a.ensureSingle(q,"path","surface",function(ee){ee.style("pointer-events","all")});M?$.transition().attrTween("d",function(ee){var ie=D(ee,!1,Z(),[w,k],{orientation:L.tiling.orientation,flipX:L.tiling.flip.indexOf("x")>-1,flipY:L.tiling.flip.indexOf("y")>-1});return function(ae){return _(ie(ae))}}):$.attr("d",_),q.call(h,v,g,p,{styleOne:s,eventDataKeys:u.eventDataKeys,transitionTime:u.CLICK_TRANSITION_TIME,transitionEasing:u.CLICK_TRANSITION_EASING}).call(d.setSliceCursor,g,{isTransitioning:g._transitioning}),$.call(s,U,L,{hovered:!1}),U.x0===U.x1||U.y0===U.y1?U._text="":U._text=m(U,v,L,p,z)||"";var ne=a.ensureSingle(q,"g","slicetext"),H=a.ensureSingle(ne,"text","",function(ee){ee.attr("data-notex",1)}),Q=a.ensureUniformFontSize(g,d.determineTextFont(L,U,z.font));H.text(U._text||" ").classed("slicetext",!0).attr("text-anchor",N?"end":P?"start":"middle").call(l.font,Q).call(c.convertToTspans,g),U.textBB=l.bBox(H.node()),U.transform=S(U,{fontSize:Q.size}),U.transform.fontSize=Q.size,M?H.transition().attrTween("transform",function(ee){var ie=O(ee,!1,Z(),[w,k]);return function(ae){return A(ie(ae))}}):H.attr("transform",A(U))}),te}},{"../../components/drawing":388,"../../lib":503,"../../lib/svg_text_utils":529,"../sunburst/fx":1054,"../sunburst/helpers":1055,"../sunburst/plot":1059,"../treemap/constants":1078,"./partition":842,"./style":844,"@plotly/d3":58}],839:[function(e,o,f){o.exports={moduleType:"trace",name:"icicle",basePlotModule:e("./base_plot"),categories:[],animatable:!0,attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults"),supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc").calc,crossTraceCalc:e("./calc").crossTraceCalc,plot:e("./plot"),style:e("./style").style,colorbar:e("../scatter/marker_colorbar"),meta:{}}},{"../scatter/marker_colorbar":945,"./attributes":834,"./base_plot":835,"./calc":836,"./defaults":837,"./layout_attributes":840,"./layout_defaults":841,"./plot":843,"./style":844}],840:[function(e,o,f){o.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}},{}],841:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes");o.exports=function(l,c){function i(s,u){return r.coerce(l,c,a,s,u)}i("iciclecolorway",c.colorway),i("extendiciclecolors")}},{"../../lib":503,"./layout_attributes":840}],842:[function(e,o,f){var r=e("d3-hierarchy"),a=e("../treemap/flip_tree");o.exports=function(l,c,i){var s=i.flipX,u=i.flipY,d=i.orientation==="h",h=i.maxDepth,m=c[0],g=c[1];h&&(m=(l.height+1)*c[0]/Math.min(l.height+1,h),g=(l.height+1)*c[1]/Math.min(l.height+1,h));var p=r.partition().padding(i.pad.inner).size(d?[c[1],m]:[c[0],g])(l);return(d||s||u)&&a(p,c,{swapXY:d,flipX:s,flipY:u}),p}},{"../treemap/flip_tree":1083,"d3-hierarchy":115}],843:[function(e,o,f){var r=e("../treemap/draw"),a=e("./draw_descendants");o.exports=function(l,c,i,s){return r(l,c,i,s,{type:"icicle",drawDescendants:a})}},{"../treemap/draw":1080,"./draw_descendants":838}],844:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../components/color"),l=e("../../lib"),c=e("../bar/uniform_text").resizeText;function i(s,u,d){var h=u.data.data,m=!u.children,g=h.i,p=l.castOption(d,g,"marker.line.color")||a.defaultLine,v=l.castOption(d,g,"marker.line.width")||0;s.style("stroke-width",v).call(a.fill,h.color).call(a.stroke,p).style("opacity",m?d.leaf.opacity:null)}o.exports={style:function(s){var u=s._fullLayout._iciclelayer.selectAll(".trace");c(s,u,"icicle"),u.each(function(d){var h=r.select(this),m=d[0].trace;h.style("opacity",m.opacity),h.selectAll("path.surface").each(function(g){r.select(this).call(i,g,m)})})},styleOne:i}},{"../../components/color":366,"../../lib":503,"../bar/uniform_text":664,"@plotly/d3":58}],845:[function(e,o,f){for(var r=e("../../plots/attributes"),a=e("../../plots/template_attributes").hovertemplateAttrs,l=e("../../lib/extend").extendFlat,c=e("./constants").colormodel,i=["rgb","rgba","rgba256","hsl","hsla"],s=[],u=[],d=0;d0||r.inbox(s-u.y0,s-(u.y0+u.h*d.dy),0)>0)){var g,p=Math.floor((i-u.x0)/d.dx),v=Math.floor(Math.abs(s-u.y0)/d.dy);if(d._hasZ?g=u.z[v][p]:d._hasSource&&(g=d._canvas.el.getContext("2d").getImageData(p,v,1,1).data),g){var y,x=u.hi||d.hoverinfo;if(x){var w=x.split("+");w.indexOf("all")!==-1&&(w=["color"]),w.indexOf("color")!==-1&&(y=!0)}var k,b=l.colormodel[d.colormodel],T=b.colormodel||d.colormodel,_=T.length,S=d._scaler(g),A=b.suffix,M=[];(d.hovertemplate||y)&&(M.push("["+[S[0]+A[0],S[1]+A[1],S[2]+A[2]].join(", ")),_===4&&M.push(", "+S[3]+A[3]),M.push("]"),M=M.join(""),c.extraText=T.toUpperCase()+": "+M),Array.isArray(d.hovertext)&&Array.isArray(d.hovertext[v])?k=d.hovertext[v][p]:Array.isArray(d.text)&&Array.isArray(d.text[v])&&(k=d.text[v][p]);var E=m.c2p(u.y0+(v+.5)*d.dy),D=u.x0+(p+.5)*d.dx,O=u.y0+(v+.5)*d.dy,R="["+g.slice(0,d.colormodel.length).join(", ")+"]";return[a.extendFlat(c,{index:[v,p],x0:h.c2p(u.x0+p*d.dx),x1:h.c2p(u.x0+(p+1)*d.dx),y0:E,y1:E,color:S,xVal:D,xLabelVal:D,yVal:O,yLabelVal:O,zLabelVal:R,text:k,hovertemplateLabels:{zLabel:R,colorLabel:M,"color[0]Label":S[0]+A[0],"color[1]Label":S[1]+A[1],"color[2]Label":S[2]+A[2],"color[3]Label":S[3]+A[3]}})]}}}},{"../../components/fx":406,"../../lib":503,"./constants":847}],852:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),calc:e("./calc"),plot:e("./plot"),style:e("./style"),hoverPoints:e("./hover"),eventData:e("./event_data"),moduleType:"trace",name:"image",basePlotModule:e("../../plots/cartesian"),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}},{"../../plots/cartesian":568,"./attributes":845,"./calc":846,"./defaults":848,"./event_data":849,"./hover":851,"./plot":853,"./style":854}],853:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=a.strTranslate,c=e("../../constants/xmlns_namespaces"),i=e("./constants"),s=a.isIOS()||a.isSafari()||a.isIE();o.exports=function(u,d,h,m){var g=d.xaxis,p=d.yaxis,v=!(s||u._context._exportedPlot);a.makeTraceGroups(m,h,"im").each(function(y){var x=r.select(this),w=y[0],k=w.trace,b=(k.zsmooth==="fast"||k.zsmooth===!1&&v)&&!k._hasZ&&k._hasSource&&g.type==="linear"&&p.type==="linear";k._realImage=b;var T,_,S,A,M,E,D=w.z,O=w.x0,R=w.y0,z=w.w,L=w.h,P=k.dx,N=k.dy;for(E=0;T===void 0&&E0;)_=g.c2p(O+E*P),E--;for(E=0;A===void 0&&E0;)M=p.c2p(R+E*N),E--;_Y[0];if(Z||re){var U=T+B/2,q=A+G/2;K+="transform:"+l(U+"px",q+"px")+"scale("+(Z?-1:1)+","+(re?-1:1)+")"+l(-U+"px",-q+"px")+";"}}W.attr("style",K);var $=new Promise(function(H){if(k._hasZ)H();else if(k._hasSource)if(k._canvas&&k._canvas.el.width===z&&k._canvas.el.height===L&&k._canvas.source===k.source)H();else{var Q=document.createElement("canvas");Q.width=z,Q.height=L;var ee=Q.getContext("2d");k._image=k._image||new Image;var ie=k._image;ie.onload=function(){ee.drawImage(ie,0,0),k._canvas={el:Q,source:k.source},H()},ie.setAttribute("src",k.source)}}).then(function(){var H;if(k._hasZ)H=ne(function(ee,ie){return D[ie][ee]}).toDataURL("image/png");else if(k._hasSource)if(b)H=k.source;else{var Q=k._canvas.el.getContext("2d").getImageData(0,0,z,L).data;H=ne(function(ee,ie){var ae=4*(ie*z+ee);return[Q[ae],Q[ae+1],Q[ae+2],Q[ae+3]]}).toDataURL("image/png")}W.attr({"xlink:href":H,height:G,width:B,x:T,y:A})});u._promises.push($)}function ne(H){var Q=document.createElement("canvas");Q.width=B,Q.height=G;var ee,ie=Q.getContext("2d"),ae=function(de){return a.constrain(Math.round(g.c2p(O+de*P)-T),0,B)},ue=function(de){return a.constrain(Math.round(p.c2p(R+de*N)-A),0,G)},le=i.colormodel[k.colormodel],ge=le.colormodel||k.colormodel,fe=le.fmt;for(E=0;E0}function S(O){O.each(function(R){w.stroke(r.select(this),R.line.color)}).each(function(R){w.fill(r.select(this),R.color)}).style("stroke-width",function(R){return R.line.width})}function A(O,R,z){var L=O._fullLayout,P=c.extendFlat({type:"linear",ticks:"outside",range:z,showline:!0},R),N={type:"linear",_id:"x"+R._id},B={letter:"x",font:L.font,noHover:!0,noTickson:!0};function G(W,K){return c.coerce(P,N,x,W,K)}return v(P,N,G,B,L),y(P,N,G,B),N}function M(O,R,z){return[Math.min(R/O.width,z/O.height),O,R+"x"+z]}function E(O,R,z,L){var P=document.createElementNS("http://www.w3.org/2000/svg","text"),N=r.select(P);return N.text(O).attr("x",0).attr("y",0).attr("text-anchor",z).attr("data-unformatted",O).call(g.convertToTspans,L).call(h.font,R),h.bBox(N.node())}function D(O,R,z,L,P,N){var B="_cache"+R;O[B]&&O[B].key===P||(O[B]={key:P,value:z});var G=c.aggNums(N,null,[O[B].value,L],2);return O[B].value=G,G}o.exports=function(O,R,z,L){var P,N=O._fullLayout;_(z)&&L&&(P=L()),c.makeTraceGroups(N._indicatorlayer,R,"trace").each(function(B){var G,W,K,te,Y,Z=B[0].trace,re=r.select(this),U=Z._hasGauge,q=Z._isAngular,$=Z._isBullet,ne=Z.domain,H={w:N._size.w*(ne.x[1]-ne.x[0]),h:N._size.h*(ne.y[1]-ne.y[0]),l:N._size.l+N._size.w*ne.x[0],r:N._size.r+N._size.w*(1-ne.x[1]),t:N._size.t+N._size.h*(1-ne.y[1]),b:N._size.b+N._size.h*ne.y[0]},Q=H.l+H.w/2,ee=H.t+H.h/2,ie=Math.min(H.w/2,H.h),ae=m.innerRadius*ie,ue=Z.align||"center";if(W=ee,U){if(q&&(G=Q,W=ee+ie/2,K=function(Oe){return function(de,ye){var Me=Math.sqrt(de.width/2*(de.width/2)+de.height*de.height);return[ye/Me,de,ye]}(Oe,.9*ae)}),$){var le=m.bulletPadding,ge=1-m.bulletNumberDomainSize+le;G=H.l+(ge+(1-ge)*b[ue])*H.w,K=function(Oe){return M(Oe,(m.bulletNumberDomainSize-le)*H.w,H.h)}}}else G=H.l+b[ue]*H.w,K=function(Oe){return M(Oe,H.w,H.h)};(function(Oe,de,ye,Me){var ke,Ee,ze,Fe=ye[0].trace,Ve=Me.numbersX,Ke=Me.numbersY,Re=Fe.align||"center",qe=k[Re],We=Me.transitionOpts,Ye=Me.onComplete,nt=c.ensureSingle(de,"g","numbers"),ft=[];Fe._hasNumber&&ft.push("number"),Fe._hasDelta&&(ft.push("delta"),Fe.delta.position==="left"&&ft.reverse());var vt=nt.selectAll("text").data(ft);function Pt(Ge,Tt,dt,Pe){if(!Ge.match("s")||dt>=0==Pe>=0||Tt(dt).slice(-1).match(T)||Tt(Pe).slice(-1).match(T))return Tt;var Ie=Ge.slice().replace("s","f").replace(/\d+/,function(De){return parseInt(De)-1}),Ae=A(Oe,{tickformat:Ie});return function(De){return Math.abs(De)<1?p.tickText(Ae,De).text:Tt(De)}}vt.enter().append("text"),vt.attr("text-anchor",function(){return qe}).attr("class",function(Ge){return Ge}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),vt.exit().remove();var At,at=Fe.mode+Fe.align;if(Fe._hasDelta&&(At=function(){var Ge=A(Oe,{tickformat:Fe.delta.valueformat},Fe._range);Ge.setScale(),p.prepTicks(Ge);var Tt=function(He){return p.tickText(Ge,He).text},dt=function(He){return Fe.delta.relative?He.relativeDelta:He.delta},Pe=function(He,rt){return He===0||typeof He!="number"||isNaN(He)?"-":(He>0?Fe.delta.increasing.symbol:Fe.delta.decreasing.symbol)+rt(He)},Ie=function(He){return He.delta>=0?Fe.delta.increasing.color:Fe.delta.decreasing.color};Fe._deltaLastValue===void 0&&(Fe._deltaLastValue=dt(ye[0]));var Ae=nt.select("text.delta");function De(){Ae.text(Pe(dt(ye[0]),Tt)).call(w.fill,Ie(ye[0])).call(g.convertToTspans,Oe)}return Ae.call(h.font,Fe.delta.font).call(w.fill,Ie({delta:Fe._deltaLastValue})),_(We)?Ae.transition().duration(We.duration).ease(We.easing).tween("text",function(){var He=r.select(this),rt=dt(ye[0]),lt=Fe._deltaLastValue,ot=Pt(Fe.delta.valueformat,Tt,lt,rt),kt=l(lt,rt);return Fe._deltaLastValue=rt,function(wt){He.text(Pe(kt(wt),ot)),He.call(w.fill,Ie({delta:kt(wt)}))}}).each("end",function(){De(),Ye&&Ye()}).each("interrupt",function(){De(),Ye&&Ye()}):De(),Ee=E(Pe(dt(ye[0]),Tt),Fe.delta.font,qe,Oe),Ae}(),at+=Fe.delta.position+Fe.delta.font.size+Fe.delta.font.family+Fe.delta.valueformat,at+=Fe.delta.increasing.symbol+Fe.delta.decreasing.symbol,ze=Ee),Fe._hasNumber&&(function(){var Ge=A(Oe,{tickformat:Fe.number.valueformat},Fe._range);Ge.setScale(),p.prepTicks(Ge);var Tt=function(De){return p.tickText(Ge,De).text},dt=Fe.number.suffix,Pe=Fe.number.prefix,Ie=nt.select("text.number");function Ae(){var De=typeof ye[0].y=="number"?Pe+Tt(ye[0].y)+dt:"-";Ie.text(De).call(h.font,Fe.number.font).call(g.convertToTspans,Oe)}_(We)?Ie.transition().duration(We.duration).ease(We.easing).each("end",function(){Ae(),Ye&&Ye()}).each("interrupt",function(){Ae(),Ye&&Ye()}).attrTween("text",function(){var De=r.select(this),He=l(ye[0].lastY,ye[0].y);Fe._lastValue=ye[0].y;var rt=Pt(Fe.number.valueformat,Tt,ye[0].lastY,ye[0].y);return function(lt){De.text(Pe+rt(He(lt))+dt)}}):Ae(),ke=E(Pe+Tt(ye[0].y)+dt,Fe.number.font,qe,Oe)}(),at+=Fe.number.font.size+Fe.number.font.family+Fe.number.valueformat+Fe.number.suffix+Fe.number.prefix,ze=ke),Fe._hasDelta&&Fe._hasNumber){var et,Ot,Wt=[(ke.left+ke.right)/2,(ke.top+ke.bottom)/2],Jt=[(Ee.left+Ee.right)/2,(Ee.top+Ee.bottom)/2],Be=.75*Fe.delta.font.size;Fe.delta.position==="left"&&(et=D(Fe,"deltaPos",0,-1*(ke.width*b[Fe.align]+Ee.width*(1-b[Fe.align])+Be),at,Math.min),Ot=Wt[1]-Jt[1],ze={width:ke.width+Ee.width+Be,height:Math.max(ke.height,Ee.height),left:Ee.left+et,right:ke.right,top:Math.min(ke.top,Ee.top+Ot),bottom:Math.max(ke.bottom,Ee.bottom+Ot)}),Fe.delta.position==="right"&&(et=D(Fe,"deltaPos",0,ke.width*(1-b[Fe.align])+Ee.width*b[Fe.align]+Be,at,Math.max),Ot=Wt[1]-Jt[1],ze={width:ke.width+Ee.width+Be,height:Math.max(ke.height,Ee.height),left:ke.left,right:Ee.right+et,top:Math.min(ke.top,Ee.top+Ot),bottom:Math.max(ke.bottom,Ee.bottom+Ot)}),Fe.delta.position==="bottom"&&(et=null,Ot=Ee.height,ze={width:Math.max(ke.width,Ee.width),height:ke.height+Ee.height,left:Math.min(ke.left,Ee.left),right:Math.max(ke.right,Ee.right),top:ke.bottom-ke.height,bottom:ke.bottom+Ee.height}),Fe.delta.position==="top"&&(et=null,Ot=ke.top,ze={width:Math.max(ke.width,Ee.width),height:ke.height+Ee.height,left:Math.min(ke.left,Ee.left),right:Math.max(ke.right,Ee.right),top:ke.bottom-ke.height-Ee.height,bottom:ke.bottom}),At.attr({dx:et,dy:Ot})}(Fe._hasNumber||Fe._hasDelta)&&nt.attr("transform",function(){var Ge=Me.numbersScaler(ze);at+=Ge[2];var Tt,dt=D(Fe,"numbersScale",1,Ge[0],at,Math.min);Fe._scaleNumbers||(dt=1),Tt=Fe._isAngular?Ke-dt*ze.bottom:Ke-dt*(ze.top+ze.bottom)/2,Fe._numbersTop=dt*ze.top+Tt;var Pe=ze[Re];Re==="center"&&(Pe=(ze.left+ze.right)/2);var Ie=Ve-dt*Pe;return Ie=D(Fe,"numbersTranslate",0,Ie,at,Math.max),s(Ie,Tt)+i(dt)})})(O,re,B,{numbersX:G,numbersY:W,numbersScaler:K,transitionOpts:z,onComplete:P}),U&&(te={range:Z.gauge.axis.range,color:Z.gauge.bgcolor,line:{color:Z.gauge.bordercolor,width:0},thickness:1},Y={range:Z.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:Z.gauge.bordercolor,width:Z.gauge.borderwidth},thickness:1});var fe=re.selectAll("g.angular").data(q?B:[]);fe.exit().remove();var me=re.selectAll("g.angularaxis").data(q?B:[]);me.exit().remove(),q&&function(Oe,de,ye,Me){var ke,Ee,ze,Fe,Ve=ye[0].trace,Ke=Me.size,Re=Me.radius,qe=Me.innerRadius,We=Me.gaugeBg,Ye=Me.gaugeOutline,nt=[Ke.l+Ke.w/2,Ke.t+Ke.h/2+Re/2],ft=Me.gauge,vt=Me.layer,Pt=Me.transitionOpts,At=Me.onComplete,at=Math.PI/2;function et(Ut){var tt=Ve.gauge.axis.range[0],bt=(Ut-tt)/(Ve.gauge.axis.range[1]-tt)*Math.PI-at;return bt<-at?-at:bt>at?at:bt}function Ot(Ut){return r.svg.arc().innerRadius((qe+Re)/2-Ut/2*(Re-qe)).outerRadius((qe+Re)/2+Ut/2*(Re-qe)).startAngle(-at)}function Wt(Ut){Ut.attr("d",function(tt){return Ot(tt.thickness).startAngle(et(tt.range[0])).endAngle(et(tt.range[1]))()})}ft.enter().append("g").classed("angular",!0),ft.attr("transform",s(nt[0],nt[1])),vt.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),vt.selectAll("g.xangularaxistick,path,text").remove(),(ke=A(Oe,Ve.gauge.axis)).type="linear",ke.range=Ve.gauge.axis.range,ke._id="xangularaxis",ke.ticklabeloverflow="allow",ke.setScale();var Jt=function(Ut){return(ke.range[0]-Ut.x)/(ke.range[1]-ke.range[0])*Math.PI+Math.PI},Be={},Ge=p.makeLabelFns(ke,0).labelStandoff;Be.xFn=function(Ut){var tt=Jt(Ut);return Math.cos(tt)*Ge},Be.yFn=function(Ut){var tt=Jt(Ut),bt=Math.sin(tt)>0?.2:1;return-Math.sin(tt)*(Ge+Ut.fontSize*bt)+Math.abs(Math.cos(tt))*(Ut.fontSize*d)},Be.anchorFn=function(Ut){var tt=Jt(Ut),bt=Math.cos(tt);return Math.abs(bt)<.1?"middle":bt>0?"start":"end"},Be.heightFn=function(Ut,tt,bt){var zt=Jt(Ut);return-.5*(1+Math.sin(zt))*bt};var Tt=function(Ut){return s(nt[0]+Re*Math.cos(Ut),nt[1]-Re*Math.sin(Ut))};if(ze=function(Ut){return Tt(Jt(Ut))},Ee=p.calcTicks(ke),Fe=p.getTickSigns(ke)[2],ke.visible){Fe=ke.ticks==="inside"?-1:1;var dt=(ke.linewidth||1)/2;p.drawTicks(Oe,ke,{vals:Ee,layer:vt,path:"M"+Fe*dt+",0h"+Fe*ke.ticklen,transFn:function(Ut){var tt=Jt(Ut);return Tt(tt)+"rotate("+-u(tt)+")"}}),p.drawLabels(Oe,ke,{vals:Ee,layer:vt,transFn:ze,labelFns:Be})}var Pe=[We].concat(Ve.gauge.steps),Ie=ft.selectAll("g.bg-arc").data(Pe);Ie.enter().append("g").classed("bg-arc",!0).append("path"),Ie.select("path").call(Wt).call(S),Ie.exit().remove();var Ae=Ot(Ve.gauge.bar.thickness),De=ft.selectAll("g.value-arc").data([Ve.gauge.bar]);De.enter().append("g").classed("value-arc",!0).append("path");var He=De.select("path");_(Pt)?(He.transition().duration(Pt.duration).ease(Pt.easing).each("end",function(){At&&At()}).each("interrupt",function(){At&&At()}).attrTween("d",(rt=Ae,lt=et(ye[0].lastY),ot=et(ye[0].y),function(){var Ut=a(lt,ot);return function(tt){return rt.endAngle(Ut(tt))()}})),Ve._lastValue=ye[0].y):He.attr("d",typeof ye[0].y=="number"?Ae.endAngle(et(ye[0].y)):"M0,0Z");var rt,lt,ot;He.call(S),De.exit().remove(),Pe=[];var kt=Ve.gauge.threshold.value;(kt||kt===0)&&Pe.push({range:[kt,kt],color:Ve.gauge.threshold.color,line:{color:Ve.gauge.threshold.line.color,width:Ve.gauge.threshold.line.width},thickness:Ve.gauge.threshold.thickness});var wt=ft.selectAll("g.threshold-arc").data(Pe);wt.enter().append("g").classed("threshold-arc",!0).append("path"),wt.select("path").call(Wt).call(S),wt.exit().remove();var Vt=ft.selectAll("g.gauge-outline").data([Ye]);Vt.enter().append("g").classed("gauge-outline",!0).append("path"),Vt.select("path").call(Wt).call(S),Vt.exit().remove()}(O,0,B,{radius:ie,innerRadius:ae,gauge:fe,layer:me,size:H,gaugeBg:te,gaugeOutline:Y,transitionOpts:z,onComplete:P});var _e=re.selectAll("g.bullet").data($?B:[]);_e.exit().remove();var we=re.selectAll("g.bulletaxis").data($?B:[]);we.exit().remove(),$&&function(Oe,de,ye,Me){var ke,Ee,ze,Fe,Ve,Ke=ye[0].trace,Re=Me.gauge,qe=Me.layer,We=Me.gaugeBg,Ye=Me.gaugeOutline,nt=Me.size,ft=Ke.domain,vt=Me.transitionOpts,Pt=Me.onComplete;Re.enter().append("g").classed("bullet",!0),Re.attr("transform",s(nt.l,nt.t)),qe.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),qe.selectAll("g.xbulletaxistick,path,text").remove();var At=nt.h,at=Ke.gauge.bar.thickness*At,et=ft.x[0],Ot=ft.x[0]+(ft.x[1]-ft.x[0])*(Ke._hasNumber||Ke._hasDelta?1-m.bulletNumberDomainSize:1);(ke=A(Oe,Ke.gauge.axis))._id="xbulletaxis",ke.domain=[et,Ot],ke.setScale(),Ee=p.calcTicks(ke),ze=p.makeTransTickFn(ke),Fe=p.getTickSigns(ke)[2],Ve=nt.t+nt.h,ke.visible&&(p.drawTicks(Oe,ke,{vals:ke.ticks==="inside"?p.clipEnds(ke,Ee):Ee,layer:qe,path:p.makeTickPath(ke,Ve,Fe),transFn:ze}),p.drawLabels(Oe,ke,{vals:Ee,layer:qe,transFn:ze,labelFns:p.makeLabelFns(ke,Ve)}));function Wt(Ie){Ie.attr("width",function(Ae){return Math.max(0,ke.c2p(Ae.range[1])-ke.c2p(Ae.range[0]))}).attr("x",function(Ae){return ke.c2p(Ae.range[0])}).attr("y",function(Ae){return .5*(1-Ae.thickness)*At}).attr("height",function(Ae){return Ae.thickness*At})}var Jt=[We].concat(Ke.gauge.steps),Be=Re.selectAll("g.bg-bullet").data(Jt);Be.enter().append("g").classed("bg-bullet",!0).append("rect"),Be.select("rect").call(Wt).call(S),Be.exit().remove();var Ge=Re.selectAll("g.value-bullet").data([Ke.gauge.bar]);Ge.enter().append("g").classed("value-bullet",!0).append("rect"),Ge.select("rect").attr("height",at).attr("y",(At-at)/2).call(S),_(vt)?Ge.select("rect").transition().duration(vt.duration).ease(vt.easing).each("end",function(){Pt&&Pt()}).each("interrupt",function(){Pt&&Pt()}).attr("width",Math.max(0,ke.c2p(Math.min(Ke.gauge.axis.range[1],ye[0].y)))):Ge.select("rect").attr("width",typeof ye[0].y=="number"?Math.max(0,ke.c2p(Math.min(Ke.gauge.axis.range[1],ye[0].y))):0),Ge.exit().remove();var Tt=ye.filter(function(){return Ke.gauge.threshold.value||Ke.gauge.threshold.value===0}),dt=Re.selectAll("g.threshold-bullet").data(Tt);dt.enter().append("g").classed("threshold-bullet",!0).append("line"),dt.select("line").attr("x1",ke.c2p(Ke.gauge.threshold.value)).attr("x2",ke.c2p(Ke.gauge.threshold.value)).attr("y1",(1-Ke.gauge.threshold.thickness)/2*At).attr("y2",(1-(1-Ke.gauge.threshold.thickness)/2)*At).call(w.stroke,Ke.gauge.threshold.line.color).style("stroke-width",Ke.gauge.threshold.line.width),dt.exit().remove();var Pe=Re.selectAll("g.gauge-outline").data([Ye]);Pe.enter().append("g").classed("gauge-outline",!0).append("rect"),Pe.select("rect").call(Wt).call(S),Pe.exit().remove()}(O,0,B,{gauge:_e,layer:we,size:H,gaugeBg:te,gaugeOutline:Y,transitionOpts:z,onComplete:P});var Te=re.selectAll("text.title").data(B);Te.exit().remove(),Te.enter().append("text").classed("title",!0),Te.attr("text-anchor",function(){return $?k.right:k[Z.title.align]}).text(Z.title.text).call(h.font,Z.title.font).call(g.convertToTspans,O),Te.attr("transform",function(){var Oe,de=H.l+H.w*b[Z.title.align],ye=m.titlePadding,Me=h.bBox(Te.node());return U?(q&&(Z.gauge.axis.visible?Oe=h.bBox(me.node()).top-ye-Me.bottom:Oe=H.t+H.h/2-ie/2-Me.bottom-ye),$&&(Oe=W-(Me.top+Me.bottom)/2,de=H.l-m.bulletPadding*H.w)):Oe=Z._numbersTop-ye-Me.bottom,s(de,Oe)})})}},{"../../components/color":366,"../../components/drawing":388,"../../constants/alignment":471,"../../lib":503,"../../lib/svg_text_utils":529,"../../plots/cartesian/axes":554,"../../plots/cartesian/axis_defaults":556,"../../plots/cartesian/layout_attributes":569,"../../plots/cartesian/position_defaults":572,"./constants":858,"@plotly/d3":58,"d3-interpolate":116}],862:[function(e,o,f){var r=e("../../components/colorscale/attributes"),a=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,l=e("../../plots/template_attributes").hovertemplateAttrs,c=e("../mesh3d/attributes"),i=e("../../plots/attributes"),s=e("../../lib/extend").extendFlat,u=e("../../plot_api/edit_types").overrideAll,d=o.exports=u(s({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}},y:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}},z:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}},y:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}},z:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:l(),xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z"),valuehoverformat:a("value",1),showlegend:s({},i.showlegend,{dflt:!1})},r("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:c.opacity,lightposition:c.lightposition,lighting:c.lighting,flatshading:c.flatshading,contour:c.contour,hoverinfo:s({},i.hoverinfo)}),"calc","nested");d.flatshading.dflt=!0,d.lighting.facenormalsepsilon.dflt=0,d.x.editType=d.y.editType=d.z.editType=d.value.editType="calc+clearAxisTypes",d.transforms=void 0},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plot_api/edit_types":536,"../../plots/attributes":550,"../../plots/cartesian/axis_format_attributes":557,"../../plots/template_attributes":633,"../mesh3d/attributes":867}],863:[function(e,o,f){var r=e("../../components/colorscale/calc"),a=e("../streamtube/calc").processGrid,l=e("../streamtube/calc").filter;o.exports=function(c,i){i._len=Math.min(i.x.length,i.y.length,i.z.length,i.value.length),i._x=l(i.x,i._len),i._y=l(i.y,i._len),i._z=l(i.z,i._len),i._value=l(i.value,i._len);var s=a(i);i._gridFill=s.fill,i._Xs=s.Xs,i._Ys=s.Ys,i._Zs=s.Zs,i._len=s.len;for(var u=1/0,d=-1/0,h=0;h0;v--){var y=Math.min(p[v],p[v-1]),x=Math.max(p[v],p[v-1]);if(x>y&&y-1}function Q(Re,qe){return Re===null?qe:Re}function ee(Re,qe,We){re();var Ye,nt,ft,vt=[qe],Pt=[We];if(b>=1)vt=[qe],Pt=[We];else if(b>0){var At=function(dt,Pe){var Ie=dt[0],Ae=dt[1],De=dt[2],He=function(tt,bt,zt){for(var St=[],Dt=0;Dt-1?We[Ot]:Z(Wt,Jt,Be);et[Ot]=Tt>-1?Tt:q(Wt,Jt,Be,Q(Re,Ge))}Ye=et[0],nt=et[1],ft=et[2],g._meshI.push(Ye),g._meshJ.push(nt),g._meshK.push(ft),++D}}function ie(Re,qe,We,Ye){var nt=Re[3];ntYe&&(nt=Ye);for(var ft=(Re[3]-nt)/(Re[3]-qe[3]+1e-9),vt=[],Pt=0;Pt<4;Pt++)vt[Pt]=(1-ft)*Re[Pt]+ft*qe[Pt];return vt}function ae(Re,qe,We){return Re>=qe&&Re<=We}function ue(Re){var qe=.001*(Y-te);return Re>=te-qe&&Re<=Y+qe}function le(Re){for(var qe=[],We=0;We<4;We++){var Ye=Re[We];qe.push([g._x[Ye],g._y[Ye],g._z[Ye],g._value[Ye]])}return qe}function ge(Re,qe,We,Ye,nt,ft){ft||(ft=1),We=[-1,-1,-1];var vt=!1,Pt=[ae(qe[0][3],Ye,nt),ae(qe[1][3],Ye,nt),ae(qe[2][3],Ye,nt)];if(!Pt[0]&&!Pt[1]&&!Pt[2])return!1;var At=function(et,Ot,Wt){return ue(Ot[0][3])&&ue(Ot[1][3])&&ue(Ot[2][3])?(ee(et,Ot,Wt),!0):ft<3&&ge(et,Ot,Wt,te,Y,++ft)};if(Pt[0]&&Pt[1]&&Pt[2])return At(Re,qe,We)||vt;var at=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach(function(et){if(Pt[et[0]]&&Pt[et[1]]&&!Pt[et[2]]){var Ot=qe[et[0]],Wt=qe[et[1]],Jt=qe[et[2]],Be=ie(Jt,Ot,Ye,nt),Ge=ie(Jt,Wt,Ye,nt);vt=At(Re,[Ge,Be,Ot],[-1,-1,We[et[0]]])||vt,vt=At(Re,[Ot,Wt,Ge],[We[et[0]],We[et[1]],-1])||vt,at=!0}}),at||[[0,1,2],[1,2,0],[2,0,1]].forEach(function(et){if(Pt[et[0]]&&!Pt[et[1]]&&!Pt[et[2]]){var Ot=qe[et[0]],Wt=qe[et[1]],Jt=qe[et[2]],Be=ie(Wt,Ot,Ye,nt),Ge=ie(Jt,Ot,Ye,nt);vt=At(Re,[Ge,Be,Ot],[-1,-1,We[et[0]]])||vt,at=!0}}),vt}function fe(Re,qe,We,Ye){var nt=!1,ft=le(qe),vt=[ae(ft[0][3],We,Ye),ae(ft[1][3],We,Ye),ae(ft[2][3],We,Ye),ae(ft[3][3],We,Ye)];if(!(vt[0]||vt[1]||vt[2]||vt[3]))return nt;if(vt[0]&&vt[1]&&vt[2]&&vt[3])return E&&(nt=function(At,at,et){var Ot=function(Wt,Jt,Be){ee(At,[at[Wt],at[Jt],at[Be]],[et[Wt],et[Jt],et[Be]])};Ot(0,1,2),Ot(3,0,1),Ot(2,3,0),Ot(1,2,3)}(Re,ft,qe)||nt),nt;var Pt=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach(function(At){if(vt[At[0]]&&vt[At[1]]&&vt[At[2]]&&!vt[At[3]]){var at=ft[At[0]],et=ft[At[1]],Ot=ft[At[2]],Wt=ft[At[3]];if(E)nt=ee(Re,[at,et,Ot],[qe[At[0]],qe[At[1]],qe[At[2]]])||nt;else{var Jt=ie(Wt,at,We,Ye),Be=ie(Wt,et,We,Ye),Ge=ie(Wt,Ot,We,Ye);nt=ee(null,[Jt,Be,Ge],[-1,-1,-1])||nt}Pt=!0}}),Pt||([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach(function(At){if(vt[At[0]]&&vt[At[1]]&&!vt[At[2]]&&!vt[At[3]]){var at=ft[At[0]],et=ft[At[1]],Ot=ft[At[2]],Wt=ft[At[3]],Jt=ie(Ot,at,We,Ye),Be=ie(Ot,et,We,Ye),Ge=ie(Wt,et,We,Ye),Tt=ie(Wt,at,We,Ye);E?(nt=ee(Re,[at,Tt,Jt],[qe[At[0]],-1,-1])||nt,nt=ee(Re,[et,Be,Ge],[qe[At[1]],-1,-1])||nt):nt=function(dt,Pe,Ie){var Ae=function(De,He,rt){ee(dt,[Pe[De],Pe[He],Pe[rt]],[Ie[De],Ie[He],Ie[rt]])};Ae(0,1,2),Ae(2,3,0)}(null,[Jt,Be,Ge,Tt],[-1,-1,-1,-1])||nt,Pt=!0}}),Pt||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach(function(At){if(vt[At[0]]&&!vt[At[1]]&&!vt[At[2]]&&!vt[At[3]]){var at=ft[At[0]],et=ft[At[1]],Ot=ft[At[2]],Wt=ft[At[3]],Jt=ie(et,at,We,Ye),Be=ie(Ot,at,We,Ye),Ge=ie(Wt,at,We,Ye);E?(nt=ee(Re,[at,Jt,Be],[qe[At[0]],-1,-1])||nt,nt=ee(Re,[at,Be,Ge],[qe[At[0]],-1,-1])||nt,nt=ee(Re,[at,Ge,Jt],[qe[At[0]],-1,-1])||nt):nt=ee(null,[Jt,Be,Ge],[-1,-1,-1])||nt,Pt=!0}})),nt}function me(Re,qe,We,Ye,nt,ft,vt,Pt,At,at,et){var Ot=!1;return M&&(H(Re,"A")&&(Ot=fe(null,[qe,We,Ye,ft],at,et)||Ot),H(Re,"B")&&(Ot=fe(null,[We,Ye,nt,At],at,et)||Ot),H(Re,"C")&&(Ot=fe(null,[We,ft,vt,At],at,et)||Ot),H(Re,"D")&&(Ot=fe(null,[Ye,ft,Pt,At],at,et)||Ot),H(Re,"E")&&(Ot=fe(null,[We,Ye,ft,At],at,et)||Ot)),E&&(Ot=fe(Re,[We,Ye,ft,At],at,et)||Ot),Ot}function _e(Re,qe,We,Ye,nt,ft,vt,Pt){return[Pt[0]===!0||ge(Re,le([qe,We,Ye]),[qe,We,Ye],ft,vt),Pt[1]===!0||ge(Re,le([Ye,nt,qe]),[Ye,nt,qe],ft,vt)]}function we(Re,qe,We,Ye,nt,ft,vt,Pt,At){return Pt?_e(Re,qe,We,nt,Ye,ft,vt,At):_e(Re,We,nt,Ye,qe,ft,vt,At)}function Te(Re,qe,We,Ye,nt,ft,vt){var Pt,At,at,et,Ot=!1,Wt=function(){Ot=ge(Re,[Pt,At,at],[-1,-1,-1],nt,ft)||Ot,Ot=ge(Re,[at,et,Pt],[-1,-1,-1],nt,ft)||Ot},Jt=vt[0],Be=vt[1],Ge=vt[2];return Jt&&(Pt=$(le([G(qe,We-0,Ye-0)])[0],le([G(qe-1,We-0,Ye-0)])[0],Jt),At=$(le([G(qe,We-0,Ye-1)])[0],le([G(qe-1,We-0,Ye-1)])[0],Jt),at=$(le([G(qe,We-1,Ye-1)])[0],le([G(qe-1,We-1,Ye-1)])[0],Jt),et=$(le([G(qe,We-1,Ye-0)])[0],le([G(qe-1,We-1,Ye-0)])[0],Jt),Wt()),Be&&(Pt=$(le([G(qe-0,We,Ye-0)])[0],le([G(qe-0,We-1,Ye-0)])[0],Be),At=$(le([G(qe-0,We,Ye-1)])[0],le([G(qe-0,We-1,Ye-1)])[0],Be),at=$(le([G(qe-1,We,Ye-1)])[0],le([G(qe-1,We-1,Ye-1)])[0],Be),et=$(le([G(qe-1,We,Ye-0)])[0],le([G(qe-1,We-1,Ye-0)])[0],Be),Wt()),Ge&&(Pt=$(le([G(qe-0,We-0,Ye)])[0],le([G(qe-0,We-0,Ye-1)])[0],Ge),At=$(le([G(qe-0,We-1,Ye)])[0],le([G(qe-0,We-1,Ye-1)])[0],Ge),at=$(le([G(qe-1,We-1,Ye)])[0],le([G(qe-1,We-1,Ye-1)])[0],Ge),et=$(le([G(qe-1,We-0,Ye)])[0],le([G(qe-1,We-0,Ye-1)])[0],Ge),Wt()),Ot}function Oe(Re,qe,We,Ye,nt,ft,vt,Pt,At,at,et,Ot){var Wt=Re;return Ot?(M&&Re==="even"&&(Wt=null),me(Wt,qe,We,Ye,nt,ft,vt,Pt,At,at,et)):(M&&Re==="odd"&&(Wt=null),me(Wt,At,Pt,vt,ft,nt,Ye,We,qe,at,et))}function de(Re,qe,We,Ye,nt){for(var ft=[],vt=0,Pt=0;PtMath.abs(nt-K)?[W,nt]:[nt,K];Ee(Re,ft[0],ft[1])}}var vt=[[Math.min(te,K),Math.max(te,K)],[Math.min(W,Y),Math.max(W,Y)]];["x","y","z"].forEach(function(Pt){for(var At=[],at=0;at0&&(Ge.push(Pe.id),Pt==="x"?Tt.push([Pe.distRatio,0,0]):Pt==="y"?Tt.push([0,Pe.distRatio,0]):Tt.push([0,0,Pe.distRatio]))}else Be=Ke(1,Pt==="x"?L-1:Pt==="y"?P-1:N-1);Ge.length>0&&(At[et]=Pt==="x"?ze(null,Ge,Ot,Wt,Tt,At[et]):Pt==="y"?Fe(null,Ge,Ot,Wt,Tt,At[et]):Ve(null,Ge,Ot,Wt,Tt,At[et]),et++),Be.length>0&&(At[et]=Pt==="x"?de(null,Be,Ot,Wt,At[et]):Pt==="y"?ye(null,Be,Ot,Wt,At[et]):Me(null,Be,Ot,Wt,At[et]),et++)}var Ie=g.caps[Pt];Ie.show&&Ie.fill&&(ne(Ie.fill),At[et]=Pt==="x"?de(null,[0,L-1],Ot,Wt,At[et]):Pt==="y"?ye(null,[0,P-1],Ot,Wt,At[et]):Me(null,[0,N-1],Ot,Wt,At[et]),et++)}}),D===0&&U(),g._meshX=y,g._meshY=x,g._meshZ=w,g._meshIntensity=k,g._Xs=O,g._Ys=R,g._Zs=z}(),g}o.exports={findNearestOnAxis:s,generateIsoMeshes:m,createIsosurfaceTrace:function(g,p){var v=g.glplot.gl,y=r({gl:v}),x=new u(g,y,p.uid);return y._trace=x,x.update(p),g.glplot.add(y),x}}},{"../../../stackgl_modules":1124,"../../components/colorscale":378,"../../lib/gl_format_color":499,"../../lib/str2rgbarray":528,"../../plots/gl3d/zip3":609}],865:[function(e,o,f){var r=e("../../lib"),a=e("../../registry"),l=e("./attributes"),c=e("../../components/colorscale/defaults");function i(s,u,d,h,m){var g=m("isomin"),p=m("isomax");p!=null&&g!=null&&g>p&&(u.isomin=null,u.isomax=null);var v=m("x"),y=m("y"),x=m("z"),w=m("value");v&&v.length&&y&&y.length&&x&&x.length&&w&&w.length?(a.getComponentMethod("calendars","handleTraceDefaults")(s,u,["x","y","z"],h),m("valuehoverformat"),["x","y","z"].forEach(function(k){m(k+"hoverformat");var b="caps."+k;m(b+".show")&&m(b+".fill");var T="slices."+k;m(T+".show")&&(m(T+".fill"),m(T+".locations"))}),m("spaceframe.show")&&m("spaceframe.fill"),m("surface.show")&&(m("surface.count"),m("surface.fill"),m("surface.pattern")),m("contour.show")&&(m("contour.color"),m("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(k){m(k)}),c(s,u,h,m,{prefix:"",cLetter:"c"}),u._length=null):u.visible=!1}o.exports={supplyDefaults:function(s,u,d,h){i(s,u,d,h,function(m,g){return r.coerce(s,u,l,m,g)})},supplyIsoDefaults:i}},{"../../components/colorscale/defaults":376,"../../lib":503,"../../registry":638,"./attributes":862}],866:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults").supplyDefaults,calc:e("./calc"),colorbar:{min:"cmin",max:"cmax"},plot:e("./convert").createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:e("../../plots/gl3d"),categories:["gl3d","showLegend"],meta:{}}},{"../../plots/gl3d":598,"./attributes":862,"./calc":863,"./convert":864,"./defaults":865}],867:[function(e,o,f){var r=e("../../components/colorscale/attributes"),a=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,l=e("../../plots/template_attributes").hovertemplateAttrs,c=e("../surface/attributes"),i=e("../../plots/attributes"),s=e("../../lib/extend").extendFlat;o.exports=s({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:l({editType:"calc"}),xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"},transforms:void 0},r("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:c.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:s({},c.contours.x.show,{}),color:c.contours.x.color,width:c.contours.x.width,editType:"calc"},lightposition:{x:s({},c.lightposition.x,{dflt:1e5}),y:s({},c.lightposition.y,{dflt:1e5}),z:s({},c.lightposition.z,{dflt:0}),editType:"calc"},lighting:s({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},c.lighting),hoverinfo:s({},i.hoverinfo,{editType:"calc"}),showlegend:s({},i.showlegend,{dflt:!1})})},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plots/attributes":550,"../../plots/cartesian/axis_format_attributes":557,"../../plots/template_attributes":633,"../surface/attributes":1061}],868:[function(e,o,f){var r=e("../../components/colorscale/calc");o.exports=function(a,l){l.intensity&&r(a,l,{vals:l.intensity,containerStr:"",cLetter:"c"})}},{"../../components/colorscale/calc":374}],869:[function(e,o,f){var r=e("../../../stackgl_modules").gl_mesh3d,a=e("../../../stackgl_modules").delaunay_triangulate,l=e("../../../stackgl_modules").alpha_shape,c=e("../../../stackgl_modules").convex_hull,i=e("../../lib/gl_format_color").parseColorScale,s=e("../../lib/str2rgbarray"),u=e("../../components/colorscale").extractOpts,d=e("../../plots/gl3d/zip3");function h(x,w,k){this.scene=x,this.uid=k,this.mesh=w,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var m=h.prototype;function g(x){for(var w=[],k=x.length,b=0;b=w-.5)return!1;return!0}m.handlePick=function(x){if(x.object===this.mesh){var w=x.index=x.data.index;x.data._cellCenter?x.traceCoordinate=x.data.dataCoordinate:x.traceCoordinate=[this.data.x[w],this.data.y[w],this.data.z[w]];var k=this.data.hovertext||this.data.text;return Array.isArray(k)&&k[w]!==void 0?x.textLabel=k[w]:k&&(x.textLabel=k),!0}},m.update=function(x){var w=this.scene,k=w.fullSceneLayout;this.data=x;var b,T=x.x.length,_=d(p(k.xaxis,x.x,w.dataScale[0],x.xcalendar),p(k.yaxis,x.y,w.dataScale[1],x.ycalendar),p(k.zaxis,x.z,w.dataScale[2],x.zcalendar));if(x.i&&x.j&&x.k){if(x.i.length!==x.j.length||x.j.length!==x.k.length||!y(x.i,T)||!y(x.j,T)||!y(x.k,T))return;b=d(v(x.i),v(x.j),v(x.k))}else b=x.alphahull===0?c(_):x.alphahull>0?l(x.alphahull,_):function(E,D){for(var O=["x","y","z"].indexOf(E),R=[],z=D.length,L=0;LS):_=L>O,S=L;var P=v(O,R,z,L);P.pos=D,P.yc=(O+L)/2,P.i=E,P.dir=_?"increasing":"decreasing",P.x=P.pos,P.y=[z,R],A&&(P.orig_p=m[E]),b&&(P.tx=h.text[E]),T&&(P.htx=h.hovertext[E]),M.push(P)}else M.push({pos:D,empty:!0})}return h._extremes[p._id]=l.findExtremes(p,r.concat(w,x),{padded:!0}),M.length&&(M[0].t={labels:{open:a(d,"open:")+" ",high:a(d,"high:")+" ",low:a(d,"low:")+" ",close:a(d,"close:")+" "}}),M}o.exports={calc:function(d,h){var m=l.getFromId(d,h.xaxis),g=l.getFromId(d,h.yaxis),p=function(k,b,T){var _=T._minDiff;if(!_){var S,A=k._fullData,M=[];for(_=1/0,S=0;S"+b.labels[R]+r.hoverLabelText(w,z,k.yhoverformat):((O=a.extendFlat({},_)).y0=O.y1=L,O.yLabelVal=z,O.yLabel=b.labels[R]+r.hoverLabelText(w,z,k.yhoverformat),O.name="",T.push(O),E[z]=O)}return T}function m(g,p,v,y){var x=g.cd,w=g.ya,k=x[0].trace,b=x[0].t,T=d(g,p,v,y);if(!T)return[];var _=x[T.index],S=T.index=_.i,A=_.dir;function M(P){return b.labels[P]+r.hoverLabelText(w,k[P][S],k.yhoverformat)}var E=_.hi||k.hoverinfo,D=E.split("+"),O=E==="all",R=O||D.indexOf("y")!==-1,z=O||D.indexOf("text")!==-1,L=R?[M("open"),M("high"),M("low"),M("close")+" "+u[A]]:[];return z&&i(_,k,L),T.extraText=L.join("
"),T.y0=T.y1=w.c2p(_.yc,!0),[T]}o.exports={hoverPoints:function(g,p,v,y){return g.cd[0].trace.hoverlabel.split?h(g,p,v,y):m(g,p,v,y)},hoverSplit:h,hoverOnPoints:m}},{"../../components/color":366,"../../components/fx":406,"../../constants/delta.js":473,"../../lib":503,"../../plots/cartesian/axes":554}],876:[function(e,o,f){o.exports={moduleType:"trace",name:"ohlc",basePlotModule:e("../../plots/cartesian"),categories:["cartesian","svg","showLegend"],meta:{},attributes:e("./attributes"),supplyDefaults:e("./defaults"),calc:e("./calc").calc,plot:e("./plot"),style:e("./style"),hoverPoints:e("./hover").hoverPoints,selectPoints:e("./select")}},{"../../plots/cartesian":568,"./attributes":872,"./calc":873,"./defaults":874,"./hover":875,"./plot":878,"./select":879,"./style":880}],877:[function(e,o,f){var r=e("../../registry"),a=e("../../lib");o.exports=function(l,c,i,s){var u=i("x"),d=i("open"),h=i("high"),m=i("low"),g=i("close");if(i("hoverlabel.split"),r.getComponentMethod("calendars","handleTraceDefaults")(l,c,["x"],s),d&&h&&m&&g){var p=Math.min(d.length,h.length,m.length,g.length);return u&&(p=Math.min(p,a.minRowLength(u))),c._length=p,p}}},{"../../lib":503,"../../registry":638}],878:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib");o.exports=function(l,c,i,s){var u=c.yaxis,d=c.xaxis,h=!!d.rangebreaks;a.makeTraceGroups(s,i,"trace ohlc").each(function(m){var g=r.select(this),p=m[0],v=p.t;if(p.trace.visible!==!0||v.empty)g.remove();else{var y=v.tickLen,x=g.selectAll("path").data(a.identity);x.enter().append("path"),x.exit().remove(),x.attr("d",function(w){if(w.empty)return"M0,0Z";var k=d.c2p(w.pos-y,!0),b=d.c2p(w.pos+y,!0),T=h?(k+b)/2:d.c2p(w.pos,!0);return"M"+k+","+u.c2p(w.o,!0)+"H"+T+"M"+T+","+u.c2p(w.h,!0)+"V"+u.c2p(w.l,!0)+"M"+b+","+u.c2p(w.c,!0)+"H"+T})}})}},{"../../lib":503,"@plotly/d3":58}],879:[function(e,o,f){o.exports=function(r,a){var l,c=r.cd,i=r.xaxis,s=r.yaxis,u=[],d=c[0].t.bPos||0;if(a===!1)for(l=0;l=U.length||q[U[$]]!==void 0)return!1;q[U[$]]=!0}return!0}(Z.map(function(U){return U.displayindex})))for(re=0;re0;w&&(y="array");var k=g("categoryorder",y);k==="array"?(g("categoryarray"),g("ticktext")):(delete h.categoryarray,delete h.ticktext),w||k!=="array"||(m.categoryorder="trace")}}o.exports=function(h,m,g,p){function v(b,T){return r.coerce(h,m,s,b,T)}var y=i(h,m,{name:"dimensions",handleItemDefaults:d}),x=function(b,T,_,S,A){A("line.shape"),A("line.hovertemplate");var M=A("line.color",S.colorway[0]);if(a(b,"line")&&r.isArrayOrTypedArray(M)){if(M.length)return A("line.colorscale"),l(b,T,S,A,{prefix:"line.",cLetter:"c"}),M.length;T.line.color=_}return 1/0}(h,m,g,p,v);c(m,p,v),Array.isArray(y)&&y.length||(m.visible=!1),u(m,y,"values",x),v("hoveron"),v("hovertemplate"),v("arrangement"),v("bundlecolors"),v("sortpaths"),v("counts");var w={family:p.font.family,size:Math.round(p.font.size),color:p.font.color};r.coerceFont(v,"labelfont",w);var k={family:p.font.family,size:Math.round(p.font.size/1.2),color:p.font.color};r.coerceFont(v,"tickfont",k)}},{"../../components/colorscale/defaults":376,"../../components/colorscale/helpers":377,"../../lib":503,"../../plots/array_container_defaults":549,"../../plots/domain":584,"../parcoords/merge_length":898,"./attributes":881}],885:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),calc:e("./calc"),plot:e("./plot"),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:e("./base_plot"),categories:["noOpacity"],meta:{}}},{"./attributes":881,"./base_plot":882,"./calc":883,"./defaults":884,"./plot":887}],886:[function(e,o,f){var r=e("@plotly/d3"),a=e("d3-interpolate").interpolateNumber,l=e("../../plot_api/plot_api"),c=e("../../components/fx"),i=e("../../lib"),s=i.strTranslate,u=e("../../components/drawing"),d=e("tinycolor2"),h=e("../../lib/svg_text_utils");function m(U,q,$,ne){var H=U.map(K.bind(0,q,$)),Q=ne.selectAll("g.parcatslayer").data([null]);Q.enter().append("g").attr("class","parcatslayer").style("pointer-events","all");var ee=Q.selectAll("g.trace.parcats").data(H,g),ie=ee.enter().append("g").attr("class","trace parcats");ee.attr("transform",function(Te){return s(Te.x,Te.y)}),ie.append("g").attr("class","paths");var ae=ee.select("g.paths").selectAll("path.path").data(function(Te){return Te.paths},g);ae.attr("fill",function(Te){return Te.model.color});var ue=ae.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(Te){return Te.model.color}).attr("fill-opacity",0);T(ue),ae.attr("d",function(Te){return Te.svgD}),ue.empty()||ae.sort(v),ae.exit().remove(),ae.on("mouseover",y).on("mouseout",x).on("click",b),ie.append("g").attr("class","dimensions");var le=ee.select("g.dimensions").selectAll("g.dimension").data(function(Te){return Te.dimensions},g);le.enter().append("g").attr("class","dimension"),le.attr("transform",function(Te){return s(Te.x,0)}),le.exit().remove();var ge=le.selectAll("g.category").data(function(Te){return Te.categories},g),fe=ge.enter().append("g").attr("class","category");ge.attr("transform",function(Te){return s(0,Te.y)}),fe.append("rect").attr("class","catrect").attr("pointer-events","none"),ge.select("rect.catrect").attr("fill","none").attr("width",function(Te){return Te.width}).attr("height",function(Te){return Te.height}),S(fe);var me=ge.selectAll("rect.bandrect").data(function(Te){return Te.bands},g);me.each(function(){i.raiseToTop(this)}),me.attr("fill",function(Te){return Te.color});var _e=me.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(Te){return Te.color}).attr("fill-opacity",0);me.attr("fill",function(Te){return Te.color}).attr("width",function(Te){return Te.width}).attr("height",function(Te){return Te.height}).attr("y",function(Te){return Te.y}).attr("cursor",function(Te){return Te.parcatsViewModel.arrangement==="fixed"?"default":Te.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),A(_e),me.exit().remove(),fe.append("text").attr("class","catlabel").attr("pointer-events","none");var we=q._fullLayout.paper_bgcolor;ge.select("text.catlabel").attr("text-anchor",function(Te){return p(Te)?"start":"end"}).attr("alignment-baseline","middle").style("text-shadow",h.makeTextShadow(we)).style("fill","rgb(0, 0, 0)").attr("x",function(Te){return p(Te)?Te.width+5:-5}).attr("y",function(Te){return Te.height/2}).text(function(Te){return Te.model.categoryLabel}).each(function(Te){u.font(r.select(this),Te.parcatsViewModel.categorylabelfont),h.convertToTspans(r.select(this),q)}),fe.append("text").attr("class","dimlabel"),ge.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(Te){return Te.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(Te){return Te.width/2}).attr("y",-5).text(function(Te,Oe){return Oe===0?Te.parcatsViewModel.model.dimensions[Te.model.dimensionInd].dimensionLabel:null}).each(function(Te){u.font(r.select(this),Te.parcatsViewModel.labelfont)}),ge.selectAll("rect.bandrect").on("mouseover",R).on("mouseout",z),ge.exit().remove(),le.call(r.behavior.drag().origin(function(Te){return{x:Te.x,y:0}}).on("dragstart",L).on("drag",P).on("dragend",N)),ee.each(function(Te){Te.traceSelection=r.select(this),Te.pathSelection=r.select(this).selectAll("g.paths").selectAll("path.path"),Te.dimensionSelection=r.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),ee.exit().remove()}function g(U){return U.key}function p(U){var q=U.parcatsViewModel.dimensions.length,$=U.parcatsViewModel.dimensions[q-1].model.dimensionInd;return U.model.dimensionInd===$}function v(U,q){return U.model.rawColor>q.model.rawColor?1:U.model.rawColor"),Ee=r.mouse(ie)[0];c.loneHover({trace:ae,x:_e-le.left+ge.left,y:we-le.top+ge.top,text:ke,color:U.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:Te,idealAlign:Ee<_e?"right":"left",hovertemplate:(ae.line||{}).hovertemplate,hovertemplateLabels:ye,eventData:[{data:ae._input,fullData:ae,count:Oe,probability:de}]},{container:ue._hoverlayer.node(),outerContainer:ue._paper.node(),gd:ie})}}}function x(U){if(!U.parcatsViewModel.dragDimension&&(T(r.select(this)),c.loneUnhover(U.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node()),U.parcatsViewModel.pathSelection.sort(v),U.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1)){var q=w(U),$=k(U);U.parcatsViewModel.graphDiv.emit("plotly_unhover",{points:q,event:r.event,constraints:$})}}function w(U){for(var q=[],$=B(U.parcatsViewModel),ne=0;ne1&&ge.displayInd===le.dimensions.length-1?(ne=ae.left,H="left"):(ne=ae.left+ae.width,H="right");var _e=ue.model.count,we=ue.model.categoryLabel,Te=_e/ue.parcatsViewModel.model.count,Oe={countLabel:_e,categoryLabel:we,probabilityLabel:Te.toFixed(3)},de=[];ue.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&de.push(["Count:",Oe.countLabel].join(" ")),ue.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&de.push(["P("+Oe.categoryLabel+"):",Oe.probabilityLabel].join(" "));var ye=de.join("
");return{trace:fe,x:Q*(ne-q.left),y:ee*(me-q.top),text:ye,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:H,hovertemplate:fe.hovertemplate,hovertemplateLabels:Oe,eventData:[{data:fe._input,fullData:fe,count:_e,category:we,probability:Te}]}}function R(U){if(!U.parcatsViewModel.dragDimension&&U.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){if(r.mouse(this)[1]<-1)return;var q,$=U.parcatsViewModel.graphDiv,ne=$._fullLayout,H=ne._paperdiv.node().getBoundingClientRect(),Q=U.parcatsViewModel.hoveron;Q==="color"?(function(ee){var ie=r.select(ee).datum(),ae=M(ie);_(ae),ae.each(function(){i.raiseToTop(this)}),r.select(ee.parentNode).selectAll("rect.bandrect").filter(function(ue){return ue.color===ie.color}).each(function(){i.raiseToTop(this),r.select(this).attr("stroke","black").attr("stroke-width",1.5)})}(this),D(this,"plotly_hover",r.event)):(function(ee){r.select(ee.parentNode).selectAll("rect.bandrect").each(function(ie){var ae=M(ie);_(ae),ae.each(function(){i.raiseToTop(this)})}),r.select(ee.parentNode).select("rect.catrect").attr("stroke","black").attr("stroke-width",2.5)}(this),E(this,"plotly_hover",r.event)),U.parcatsViewModel.hoverinfoItems.indexOf("none")===-1&&(Q==="category"?q=O($,H,this):Q==="color"?q=function(ee,ie,ae){ee._fullLayout._calcInverseTransform(ee);var ue,le,ge=ee._fullLayout._invScaleX,fe=ee._fullLayout._invScaleY,me=ae.getBoundingClientRect(),_e=r.select(ae).datum(),we=_e.categoryViewModel,Te=we.parcatsViewModel,Oe=Te.model.dimensions[we.model.dimensionInd],de=Te.trace,ye=me.y+me.height/2;Te.dimensions.length>1&&Oe.displayInd===Te.dimensions.length-1?(ue=me.left,le="left"):(ue=me.left+me.width,le="right");var Me=we.model.categoryLabel,ke=_e.parcatsViewModel.model.count,Ee=0;_e.categoryViewModel.bands.forEach(function(ft){ft.color===_e.color&&(Ee+=ft.count)});var ze=we.model.count,Fe=0;Te.pathSelection.each(function(ft){ft.model.color===_e.color&&(Fe+=ft.model.count)});var Ve=Ee/ke,Ke=Ee/Fe,Re=Ee/ze,qe={countLabel:ke,categoryLabel:Me,probabilityLabel:Ve.toFixed(3)},We=[];we.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&We.push(["Count:",qe.countLabel].join(" ")),we.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(We.push("P(color \u2229 "+Me+"): "+qe.probabilityLabel),We.push("P("+Me+" | color): "+Ke.toFixed(3)),We.push("P(color | "+Me+"): "+Re.toFixed(3)));var Ye=We.join("
"),nt=d.mostReadable(_e.color,["black","white"]);return{trace:de,x:ge*(ue-ie.left),y:fe*(ye-ie.top),text:Ye,color:_e.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:nt,fontSize:10,idealAlign:le,hovertemplate:de.hovertemplate,hovertemplateLabels:qe,eventData:[{data:de._input,fullData:de,category:Me,count:ke,probability:Ve,categorycount:ze,colorcount:Fe,bandcolorcount:Ee}]}}($,H,this):Q==="dimension"&&(q=function(ee,ie,ae){var ue=[];return r.select(ae.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){ue.push(O(ee,ie,this))}),ue}($,H,this)),q&&c.loneHover(q,{container:ne._hoverlayer.node(),outerContainer:ne._paper.node(),gd:$}))}}function z(U){var q=U.parcatsViewModel;!q.dragDimension&&(T(q.pathSelection),S(q.dimensionSelection.selectAll("g.category")),A(q.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),c.loneUnhover(q.graphDiv._fullLayout._hoverlayer.node()),q.pathSelection.sort(v),q.hoverinfoItems.indexOf("skip")===-1)&&(U.parcatsViewModel.hoveron==="color"?D(this,"plotly_unhover",r.event):E(this,"plotly_unhover",r.event))}function L(U){U.parcatsViewModel.arrangement!=="fixed"&&(U.dragDimensionDisplayInd=U.model.displayInd,U.initialDragDimensionDisplayInds=U.parcatsViewModel.model.dimensions.map(function(q){return q.displayInd}),U.dragHasMoved=!1,U.dragCategoryDisplayInd=null,r.select(this).selectAll("g.category").select("rect.catrect").each(function(q){var $=r.mouse(this)[0],ne=r.mouse(this)[1];-2<=$&&$<=q.width+2&&-2<=ne&&ne<=q.height+2&&(U.dragCategoryDisplayInd=q.model.displayInd,U.initialDragCategoryDisplayInds=U.model.categories.map(function(H){return H.displayInd}),q.model.dragY=q.y,i.raiseToTop(this.parentNode),r.select(this.parentNode).selectAll("rect.bandrect").each(function(H){H.yle.y+le.height/2&&(Q.model.displayInd=le.model.displayInd,le.model.displayInd=ie),U.dragCategoryDisplayInd=Q.model.displayInd}if(U.dragCategoryDisplayInd===null||U.parcatsViewModel.arrangement==="freeform"){H.model.dragX=r.event.x;var ge=U.parcatsViewModel.dimensions[$],fe=U.parcatsViewModel.dimensions[ne];ge!==void 0&&H.model.dragXfe.x&&(H.model.displayInd=fe.model.displayInd,fe.model.displayInd=U.dragDimensionDisplayInd),U.dragDimensionDisplayInd=H.model.displayInd}Z(U.parcatsViewModel),Y(U.parcatsViewModel),W(U.parcatsViewModel),G(U.parcatsViewModel)}}function N(U){if(U.parcatsViewModel.arrangement!=="fixed"&&U.dragDimensionDisplayInd!==null){r.select(this).selectAll("text").attr("font-weight","normal");var q={},$=B(U.parcatsViewModel),ne=U.parcatsViewModel.model.dimensions.map(function(le){return le.displayInd}),H=U.initialDragDimensionDisplayInds.some(function(le,ge){return le!==ne[ge]});H&&ne.forEach(function(le,ge){var fe=U.parcatsViewModel.model.dimensions[ge].containerInd;q["dimensions["+fe+"].displayindex"]=le});var Q=!1;if(U.dragCategoryDisplayInd!==null){var ee=U.model.categories.map(function(le){return le.displayInd});if(Q=U.initialDragCategoryDisplayInds.some(function(le,ge){return le!==ee[ge]})){var ie=U.model.categories.slice().sort(function(le,ge){return le.displayInd-ge.displayInd}),ae=ie.map(function(le){return le.categoryValue}),ue=ie.map(function(le){return le.categoryLabel});q["dimensions["+U.model.containerInd+"].categoryarray"]=[ae],q["dimensions["+U.model.containerInd+"].ticktext"]=[ue],q["dimensions["+U.model.containerInd+"].categoryorder"]="array"}}U.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!U.dragHasMoved&&U.potentialClickBand&&(U.parcatsViewModel.hoveron==="color"?D(U.potentialClickBand,"plotly_click",r.event.sourceEvent):E(U.potentialClickBand,"plotly_click",r.event.sourceEvent)),U.model.dragX=null,U.dragCategoryDisplayInd!==null&&(U.parcatsViewModel.dimensions[U.dragDimensionDisplayInd].categories[U.dragCategoryDisplayInd].model.dragY=null,U.dragCategoryDisplayInd=null),U.dragDimensionDisplayInd=null,U.parcatsViewModel.dragDimension=null,U.dragHasMoved=null,U.potentialClickBand=null,Z(U.parcatsViewModel),Y(U.parcatsViewModel),r.transition().duration(300).ease("cubic-in-out").each(function(){W(U.parcatsViewModel,!0),G(U.parcatsViewModel,!0)}).each("end",function(){(H||Q)&&l.restyle(U.parcatsViewModel.graphDiv,q,[$])})}}function B(U){for(var q,$=U.graphDiv._fullData,ne=0;ne<$.length;ne++)if(U.key===$[ne].uid){q=ne;break}return q}function G(U,q){var $;q===void 0&&(q=!1),U.pathSelection.data(function(ne){return ne.paths},g),($=U.pathSelection,q?$.transition():$).attr("d",function(ne){return ne.svgD})}function W(U,q){function $(ee){return q?ee.transition():ee}q===void 0&&(q=!1),U.dimensionSelection.data(function(ee){return ee.dimensions},g);var ne=U.dimensionSelection.selectAll("g.category").data(function(ee){return ee.categories},g);$(U.dimensionSelection).attr("transform",function(ee){return s(ee.x,0)}),$(ne).attr("transform",function(ee){return s(0,ee.y)}),ne.select(".dimlabel").text(function(ee,ie){return ie===0?ee.parcatsViewModel.model.dimensions[ee.model.dimensionInd].dimensionLabel:null}),ne.select(".catlabel").attr("text-anchor",function(ee){return p(ee)?"start":"end"}).attr("x",function(ee){return p(ee)?ee.width+5:-5}).each(function(ee){var ie,ae;p(ee)?(ie=ee.width+5,ae="start"):(ie=-5,ae="end"),r.select(this).selectAll("tspan").attr("x",ie).attr("text-anchor",ae)});var H=ne.selectAll("rect.bandrect").data(function(ee){return ee.bands},g),Q=H.enter().append("rect").attr("class","bandrect").attr("cursor","move").attr("stroke-opacity",0).attr("fill",function(ee){return ee.color}).attr("fill-opacity",0);H.attr("fill",function(ee){return ee.color}).attr("width",function(ee){return ee.width}).attr("height",function(ee){return ee.height}).attr("y",function(ee){return ee.y}),A(Q),H.each(function(){i.raiseToTop(this)}),H.exit().remove()}function K(U,q,$){var ne,H=$[0],Q=q.margin||{l:80,r:80,t:100,b:80},ee=H.trace,ie=ee.domain,ae=q.width,ue=q.height,le=Math.floor(ae*(ie.x[1]-ie.x[0])),ge=Math.floor(ue*(ie.y[1]-ie.y[0])),fe=ie.x[0]*ae+Q.l,me=q.height-ie.y[1]*q.height+Q.t,_e=ee.line.shape;ne=ee.hoverinfo==="all"?["count","probability"]:(ee.hoverinfo||"").split("+");var we={trace:ee,key:ee.uid,model:H,x:fe,y:me,width:le,height:ge,hoveron:ee.hoveron,hoverinfoItems:ne,arrangement:ee.arrangement,bundlecolors:ee.bundlecolors,sortpaths:ee.sortpaths,labelfont:ee.labelfont,categorylabelfont:ee.tickfont,pathShape:_e,dragDimension:null,margin:Q,paths:[],dimensions:[],graphDiv:U,traceSelection:null,pathSelection:null,dimensionSelection:null};return H.dimensions&&(Z(we),Y(we)),we}function te(U,q,$,ne,H){var Q,ee,ie=[],ae=[];for(ee=0;ee<$.length-1;ee++)Q=a($[ee]+U[ee],U[ee+1]),ie.push(Q(H)),ae.push(Q(1-H));var ue="M "+U[0]+","+q[0];for(ue+="l"+$[0]+",0 ",ee=1;ee<$.length;ee++)ue+="C"+ie[ee-1]+","+q[ee-1]+" "+ae[ee-1]+","+q[ee]+" "+U[ee]+","+q[ee],ue+="l"+$[ee]+",0 ";for(ue+="l0,"+ne+" ",ue+="l -"+$[$.length-1]+",0 ",ee=$.length-2;ee>=0;ee--)ue+="C"+ae[ee]+","+(q[ee+1]+ne)+" "+ie[ee]+","+(q[ee]+ne)+" "+(U[ee]+$[ee])+","+(q[ee]+ne),ue+="l-"+$[ee]+",0 ";return ue+="Z"}function Y(U){var q=U.dimensions,$=U.model,ne=q.map(function(We){return We.categories.map(function(Ye){return Ye.y})}),H=U.model.dimensions.map(function(We){return We.categories.map(function(Ye){return Ye.displayInd})}),Q=U.model.dimensions.map(function(We){return We.displayInd}),ee=U.dimensions.map(function(We){return We.model.dimensionInd}),ie=q.map(function(We){return We.x}),ae=q.map(function(We){return We.width}),ue=[];for(var le in $.paths)$.paths.hasOwnProperty(le)&&ue.push($.paths[le]);function ge(We){var Ye=We.categoryInds.map(function(nt,ft){return H[ft][nt]});return ee.map(function(nt){return Ye[nt]})}ue.sort(function(We,Ye){var nt=ge(We),ft=ge(Ye);return U.sortpaths==="backward"&&(nt.reverse(),ft.reverse()),nt.push(We.valueInds[0]),ft.push(Ye.valueInds[0]),U.bundlecolors&&(nt.unshift(We.rawColor),ft.unshift(Ye.rawColor)),ntft?1:0});for(var fe=new Array(ue.length),me=q[0].model.count,_e=q[0].categories.map(function(We){return We.height}).reduce(function(We,Ye){return We+Ye}),we=0;we0?_e*(Oe.count/me):0;for(var de,ye=new Array(ne.length),Me=0;Me1?(U.width-80-16)/(ne-1):0)*H;var Q,ee,ie,ae,ue,le=[],ge=U.model.maxCats,fe=q.categories.length,me=q.count,_e=U.height-8*(ge-1),we=8*(ge-fe)/2,Te=q.categories.map(function(Oe){return{displayInd:Oe.displayInd,categoryInd:Oe.categoryInd}});for(Te.sort(function(Oe,de){return Oe.displayInd-de.displayInd}),ue=0;ue0?ee.count/me*_e:0,ie={key:ee.valueInds[0],model:ee,width:16,height:Q,y:ee.dragY!==null?ee.dragY:we,bands:[],parcatsViewModel:U},we=we+Q+8,le.push(ie);return{key:q.dimensionInd,x:q.dragX!==null?q.dragX:$,y:0,width:16,model:q,categories:le,parcatsViewModel:U,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}o.exports=function(U,q,$,ne){m($,U,ne,q)}},{"../../components/drawing":388,"../../components/fx":406,"../../lib":503,"../../lib/svg_text_utils":529,"../../plot_api/plot_api":540,"@plotly/d3":58,"d3-interpolate":116,tinycolor2:312}],887:[function(e,o,f){var r=e("./parcats");o.exports=function(a,l,c,i){var s=a._fullLayout,u=s._paper,d=s._size;r(a,u,l,{width:d.w,height:d.h,margin:{t:d.t,r:d.r,b:d.b,l:d.l}},c,i)}},{"./parcats":886}],888:[function(e,o,f){var r=e("../../components/colorscale/attributes"),a=e("../../plots/cartesian/layout_attributes"),l=e("../../plots/font_attributes"),c=e("../../plots/domain").attributes,i=e("../../lib/extend").extendFlat,s=e("../../plot_api/plot_template").templatedArray;o.exports={domain:c({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:l({editType:"plot"}),tickfont:l({editType:"plot"}),rangefont:l({editType:"plot"}),dimensions:s("dimension",{label:{valType:"string",editType:"plot"},tickvals:i({},a.tickvals,{editType:"plot"}),ticktext:i({},a.ticktext,{editType:"plot"}),tickformat:i({},a.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:i({editType:"calc"},r("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"}))}},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plot_api/plot_template":543,"../../plots/cartesian/layout_attributes":569,"../../plots/domain":584,"../../plots/font_attributes":585}],889:[function(e,o,f){var r=e("./constants"),a=e("@plotly/d3"),l=e("../../lib/gup").keyFun,c=e("../../lib/gup").repeat,i=e("../../lib").sorterAsc,s=e("../../lib").strTranslate,u=r.bar.snapRatio;function d(O,R){return O*(1-u)+R*u}var h=r.bar.snapClose;function m(O,R){return O*(1-h)+R*h}function g(O,R,z,L){if(function(re,U){for(var q=0;q=U[q][0]&&re<=U[q][1])return!0;return!1}(z,L))return z;var P=O?-1:1,N=0,B=R.length-1;if(P<0){var G=N;N=B,B=G}for(var W=R[N],K=W,te=N;P*teR){Y=z;break}}if(P=K,isNaN(P)&&(P=isNaN(te)||isNaN(Y)?isNaN(te)?Y:te:R-W[te][1]H[1]+ee||Q=.9*H[1]+.1*H[0]?"n":Q<=.9*H[0]+.1*H[1]?"s":"ns"}(re,R);U&&(N.interval=G[P],N.intervalPix=re,N.region=U)}}if(O.ordinal&&!N.region){var q=O.unitTickvals,$=O.unitToPaddedPx.invert(R);for(z=0;z=ne[0]&&$<=ne[1]){N.clickableOrdinalRange=ne;break}}}return N}function _(O,R){a.event.sourceEvent.stopPropagation();var z=R.height-a.mouse(O)[1]-2*r.verticalPadding,L=R.brush.svgBrush;L.wasDragged=!0,L._dragging=!0,L.grabbingBar?L.newExtent=[z-L.grabPoint,z+L.barLength-L.grabPoint].map(R.unitToPaddedPx.invert):L.newExtent=[L.startExtent,R.unitToPaddedPx.invert(z)].sort(i),R.brush.filterSpecified=!0,L.extent=L.stayingIntervals.concat([L.newExtent]),L.brushCallback(R),b(O.parentNode)}function S(O,R){var z=T(R,R.height-a.mouse(O)[1]-2*r.verticalPadding),L="crosshair";z.clickableOrdinalRange?L="pointer":z.region&&(L=z.region+"-resize"),a.select(document.body).style("cursor",L)}function A(O){O.on("mousemove",function(R){a.event.preventDefault(),R.parent.inBrushDrag||S(this,R)}).on("mouseleave",function(R){R.parent.inBrushDrag||w()}).call(a.behavior.drag().on("dragstart",function(R){(function(z,L){a.event.sourceEvent.stopPropagation();var P=L.height-a.mouse(z)[1]-2*r.verticalPadding,N=L.unitToPaddedPx.invert(P),B=L.brush,G=T(L,P),W=G.interval,K=B.svgBrush;if(K.wasDragged=!1,K.grabbingBar=G.region==="ns",K.grabbingBar){var te=W.map(L.unitToPaddedPx);K.grabPoint=P-te[0]-r.verticalPadding,K.barLength=te[1]-te[0]}K.clickableOrdinalRange=G.clickableOrdinalRange,K.stayingIntervals=L.multiselect&&B.filterSpecified?B.filter.getConsolidated():[],W&&(K.stayingIntervals=K.stayingIntervals.filter(function(Y){return Y[0]!==W[0]&&Y[1]!==W[1]})),K.startExtent=G.region?W[G.region==="s"?1:0]:N,L.parent.inBrushDrag=!0,K.brushStartCallback()})(this,R)}).on("drag",function(R){_(this,R)}).on("dragend",function(R){(function(z,L){var P=L.brush,N=P.filter,B=P.svgBrush;B._dragging||(S(z,L),_(z,L),L.brush.svgBrush.wasDragged=!1),B._dragging=!1,a.event.sourceEvent.stopPropagation();var G=B.grabbingBar;if(B.grabbingBar=!1,B.grabLocation=void 0,L.parent.inBrushDrag=!1,w(),!B.wasDragged)return B.wasDragged=void 0,B.clickableOrdinalRange?P.filterSpecified&&L.multiselect?B.extent.push(B.clickableOrdinalRange):(B.extent=[B.clickableOrdinalRange],P.filterSpecified=!0):G?(B.extent=B.stayingIntervals,B.extent.length===0&&E(P)):E(P),B.brushCallback(L),b(z.parentNode),void B.brushEndCallback(P.filterSpecified?N.getConsolidated():[]);var W=function(){N.set(N.getConsolidated())};if(L.ordinal){var K=L.unitTickvals;K[K.length-1]B.newExtent[0];B.extent=B.stayingIntervals.concat(te?[B.newExtent]:[]),B.extent.length||E(P),B.brushCallback(L),te?b(z.parentNode,W):(W(),b(z.parentNode))}else W();B.brushEndCallback(P.filterSpecified?N.getConsolidated():[])})(this,R)}))}function M(O,R){return O[0]-R[0]}function E(O){O.filterSpecified=!1,O.svgBrush.extent=[[-1/0,1/0]]}function D(O){for(var R,z=O.slice(),L=[],P=z.shift();P;){for(R=P.slice();(P=z.shift())&&P[0]<=R[1];)R[1]=Math.max(R[1],P[1]);L.push(R)}return L.length===1&&L[0][0]>L[0][1]&&(L=[]),L}o.exports={makeBrush:function(O,R,z,L,P,N){var B,G=function(){var W,K,te=[];return{set:function(Y){(te=Y.map(function(Z){return Z.slice().sort(i)}).sort(M)).length===1&&te[0][0]===-1/0&&te[0][1]===1/0&&(te=[[0,-1]]),W=D(te),K=te.reduce(function(Z,re){return[Math.min(Z[0],re[0]),Math.max(Z[1],re[1])]},[1/0,-1/0])},get:function(){return te.slice()},getConsolidated:function(){return W},getBounds:function(){return K}}}();return G.set(z),{filter:G,filterSpecified:R,svgBrush:{extent:[],brushStartCallback:L,brushCallback:(B=P,function(W){var K=W.brush,te=function(Y){return Y.svgBrush.extent.map(function(Z){return Z.slice()})}(K).slice();K.filter.set(te),B()}),brushEndCallback:N}}},ensureAxisBrush:function(O,R){var z=O.selectAll("."+r.cn.axisBrush).data(c,l);z.enter().append("g").classed(r.cn.axisBrush,!0),function(L,P){var N=L.selectAll(".background").data(c);N.enter().append("rect").classed("background",!0).call(p).call(v).style("pointer-events","auto").attr("transform",s(0,r.verticalPadding)),N.call(A).attr("height",function(W){return W.height-r.verticalPadding});var B=L.selectAll(".highlight-shadow").data(c);B.enter().append("line").classed("highlight-shadow",!0).attr("x",-r.bar.width/2).attr("stroke-width",r.bar.width+r.bar.strokeWidth).attr("stroke",P).attr("opacity",r.bar.strokeOpacity).attr("stroke-linecap","butt"),B.attr("y1",function(W){return W.height}).call(k);var G=L.selectAll(".highlight").data(c);G.enter().append("line").classed("highlight",!0).attr("x",-r.bar.width/2).attr("stroke-width",r.bar.width-r.bar.strokeWidth).attr("stroke",r.bar.fillColor).attr("opacity",r.bar.fillOpacity).attr("stroke-linecap","butt"),G.attr("y1",function(W){return W.height}).call(k)}(z,R)},cleanRanges:function(O,R){if(Array.isArray(O[0])?(O=O.map(function(L){return L.sort(i)}),O=R.multiselect?D(O.sort(M)):[O[0]]):O=[O.sort(i)],R.tickvals){var z=R.tickvals.slice().sort(i);if(!(O=O.map(function(L){var P=[g(0,z,L[0],[]),g(1,z,L[1],[])];if(P[1]>P[0])return P}).filter(function(L){return L})).length)return}return O.length>1?O:O[0]}}},{"../../lib":503,"../../lib/gup":500,"./constants":893,"@plotly/d3":58}],890:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),calc:e("./calc"),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:e("./base_plot"),categories:["gl","regl","noOpacity","noHover"],meta:{}}},{"./attributes":888,"./base_plot":891,"./calc":892,"./defaults":894}],891:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../plots/get_data").getModuleCalcData,l=e("./plot"),c=e("../../constants/xmlns_namespaces");f.name="parcoords",f.plot=function(i){var s=a(i.calcdata,"parcoords")[0];s.length&&l(i,s)},f.clean=function(i,s,u,d){var h=d._has&&d._has("parcoords"),m=s._has&&s._has("parcoords");h&&!m&&(d._paperdiv.selectAll(".parcoords").remove(),d._glimages.selectAll("*").remove())},f.toSVG=function(i){var s=i._fullLayout._glimages,u=r.select(i).selectAll(".svg-container");u.filter(function(d,h){return h===u.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus").each(function(){var d=this.toDataURL("image/png");s.append("svg:image").attr({xmlns:c.svg,"xlink:href":d,preserveAspectRatio:"none",x:0,y:0,width:this.style.width,height:this.style.height})}),window.setTimeout(function(){r.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}},{"../../constants/xmlns_namespaces":480,"../../plots/get_data":593,"./plot":900,"@plotly/d3":58}],892:[function(e,o,f){var r=e("../../lib").isArrayOrTypedArray,a=e("../../components/colorscale"),l=e("../../lib/gup").wrap;o.exports=function(c,i){var s,u;return a.hasColorscale(i,"line")&&r(i.line.color)?(s=i.line.color,u=a.extractOpts(i.line).colorscale,a.calc(c,i,{vals:s,containerStr:"line",cLetter:"c"})):(s=function(d){for(var h=new Array(d),m=0;mh&&(r.log("parcoords traces support up to "+h+" dimensions at the moment"),k.splice(h));var b=i(p,v,{name:"dimensions",layout:x,handleItemDefaults:g}),T=function(S,A,M,E,D){var O=D("line.color",M);if(a(S,"line")&&r.isArrayOrTypedArray(O)){if(O.length)return D("line.colorscale"),l(S,A,E,D,{prefix:"line.",cLetter:"c"}),O.length;A.line.color=M}return 1/0}(p,v,y,x,w);c(v,x,w),Array.isArray(b)&&b.length||(v.visible=!1),m(v,b,"values",T);var _={family:x.font.family,size:Math.round(x.font.size/1.2),color:x.font.color};r.coerceFont(w,"labelfont",_),r.coerceFont(w,"tickfont",_),r.coerceFont(w,"rangefont",_),w("labelangle"),w("labelside")}},{"../../components/colorscale/defaults":376,"../../components/colorscale/helpers":377,"../../lib":503,"../../plots/array_container_defaults":549,"../../plots/cartesian/axes":554,"../../plots/domain":584,"./attributes":888,"./axisbrush":889,"./constants":893,"./merge_length":898}],895:[function(e,o,f){var r=e("../../lib").isTypedArray;f.convertTypedArray=function(a){return r(a)?Array.prototype.slice.call(a):a},f.isOrdinal=function(a){return!!a.tickvals},f.isVisible=function(a){return a.visible||!("visible"in a)}},{"../../lib":503}],896:[function(e,o,f){var r=e("./base_index");r.plot=e("./plot"),o.exports=r},{"./base_index":890,"./plot":900}],897:[function(e,o,f){var r=e("glslify"),a=r([`precision highp float; +#define GLSLIFY 1 + +varying vec4 fragColor; + +attribute vec4 p01_04, p05_08, p09_12, p13_16, + p17_20, p21_24, p25_28, p29_32, + p33_36, p37_40, p41_44, p45_48, + p49_52, p53_56, p57_60, colors; + +uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D, + loA, hiA, loB, hiB, loC, hiC, loD, hiD; + +uniform vec2 resolution, viewBoxPos, viewBoxSize; +uniform float maskHeight; +uniform float drwLayer; // 0: context, 1: focus, 2: pick +uniform vec4 contextColor; +uniform sampler2D maskTexture, palette; + +bool isPick = (drwLayer > 1.5); +bool isContext = (drwLayer < 0.5); + +const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0); +const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0); + +float val(mat4 p, mat4 v) { + return dot(matrixCompMult(p, v) * UNITS, UNITS); +} + +float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) { + float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D); + float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D); + return y1 * (1.0 - ratio) + y2 * ratio; +} + +int iMod(int a, int b) { + return a - b * (a / b); +} + +bool fOutside(float p, float lo, float hi) { + return (lo < hi) && (lo > p || p > hi); +} + +bool vOutside(vec4 p, vec4 lo, vec4 hi) { + return ( + fOutside(p[0], lo[0], hi[0]) || + fOutside(p[1], lo[1], hi[1]) || + fOutside(p[2], lo[2], hi[2]) || + fOutside(p[3], lo[3], hi[3]) + ); +} + +bool mOutside(mat4 p, mat4 lo, mat4 hi) { + return ( + vOutside(p[0], lo[0], hi[0]) || + vOutside(p[1], lo[1], hi[1]) || + vOutside(p[2], lo[2], hi[2]) || + vOutside(p[3], lo[3], hi[3]) + ); +} + +bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) { + return mOutside(A, loA, hiA) || + mOutside(B, loB, hiB) || + mOutside(C, loC, hiC) || + mOutside(D, loD, hiD); +} + +bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) { + mat4 pnts[4]; + pnts[0] = A; + pnts[1] = B; + pnts[2] = C; + pnts[3] = D; + + for(int i = 0; i < 4; ++i) { + for(int j = 0; j < 4; ++j) { + for(int k = 0; k < 4; ++k) { + if(0 == iMod( + int(255.0 * texture2D(maskTexture, + vec2( + (float(i * 2 + j / 2) + 0.5) / 8.0, + (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight + ))[3] + ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))), + 2 + )) return true; + } + } + } + return false; +} + +vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) { + float x = 0.5 * sign(v) + 0.5; + float y = axisY(x, A, B, C, D); + float z = 1.0 - abs(v); + + z += isContext ? 0.0 : 2.0 * float( + outsideBoundingBox(A, B, C, D) || + outsideRasterMask(A, B, C, D) + ); + + return vec4( + 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0, + z, + 1.0 + ); +} + +void main() { + mat4 A = mat4(p01_04, p05_08, p09_12, p13_16); + mat4 B = mat4(p17_20, p21_24, p25_28, p29_32); + mat4 C = mat4(p33_36, p37_40, p41_44, p45_48); + mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS); + + float v = colors[3]; + + gl_Position = position(isContext, v, A, B, C, D); + + fragColor = + isContext ? vec4(contextColor) : + isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5)); +} +`]),l=r([`precision highp float; +#define GLSLIFY 1 + +varying vec4 fragColor; + +void main() { + gl_FragColor = fragColor; +} +`]),c=e("./constants").maxDimensionCount,i=e("../../lib"),s=new Uint8Array(4),u=new Uint8Array(4),d={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function h(b,T,_,S,A){var M=b._gl;M.enable(M.SCISSOR_TEST),M.scissor(T,_,S,A),b.clear({color:[0,0,0,0],depth:1})}function m(b,T,_,S,A,M){var E=M.key;_.drawCompleted||(function(D){D.read({x:0,y:0,width:1,height:1,data:s})}(b),_.drawCompleted=!0),function D(O){var R=Math.min(S,A-O*S);O===0&&(window.cancelAnimationFrame(_.currentRafs[E]),delete _.currentRafs[E],h(b,M.scissorX,M.scissorY,M.scissorWidth,M.viewBoxSize[1])),_.clearOnly||(M.count=2*R,M.offset=2*O*S,T(M),O*S+R>>8*T)%256/255}function v(b,T,_){for(var S=new Array(8*T),A=0,M=0;MQ&&(Q=Y[U].dim1.canvasX,$=U);ne===0&&h(R,0,0,_.canvasWidth,_.canvasHeight);var ee=function(Te){var Oe,de,ye,Me=[[],[]];for(ye=0;ye<64;ye++){var ke=!Te&&yeee._length&&(_e=_e.slice(0,ee._length));var we,Te=ee.tickvals;function Oe(Ee,ze){return{val:Ee,text:we[ze]}}function de(Ee,ze){return Ee.val-ze.val}if(Array.isArray(Te)&&Te.length){we=ee.ticktext,Array.isArray(we)&&we.length?we.length>Te.length?we=we.slice(0,Te.length):Te.length>we.length&&(Te=Te.slice(0,we.length)):we=Te.map(l(ee.tickformat));for(var ye=1;ye=ze||Re>=Fe)return;var qe=ke.lineLayer.readPixel(Ke,Fe-1-Re),We=qe[3]!==0,Ye=We?qe[2]+256*(qe[1]+256*qe[0]):null,nt={x:Ke,y:Re,clientX:Ee.clientX,clientY:Ee.clientY,dataIndex:ke.model.key,curveNumber:Ye};Ye!==ae&&(We?Y.hover(nt):Y.unhover&&Y.unhover(nt),ae=Ye)}}),ie.style("opacity",function(ke){return ke.pick?0:1}),re.style("background","rgba(255, 255, 255, 0)");var ue=re.selectAll("."+w.cn.parcoords).data(ee,p);ue.exit().remove(),ue.enter().append("g").classed(w.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),ue.attr("transform",function(ke){return u(ke.model.translateX,ke.model.translateY)});var le=ue.selectAll("."+w.cn.parcoordsControlView).data(v,p);le.enter().append("g").classed(w.cn.parcoordsControlView,!0),le.attr("transform",function(ke){return u(ke.model.pad.l,ke.model.pad.t)});var ge=le.selectAll("."+w.cn.yAxis).data(function(ke){return ke.dimensions},p);ge.enter().append("g").classed(w.cn.yAxis,!0),le.each(function(ke){N(ge,ke,q)}),ie.each(function(ke){if(ke.viewModel){!ke.lineLayer||Y?ke.lineLayer=b(this,ke):ke.lineLayer.update(ke),(ke.key||ke.key===0)&&(ke.viewModel[ke.key]=ke.lineLayer);var Ee=!ke.context||Y;ke.lineLayer.render(ke.viewModel.panels,Ee)}}),ge.attr("transform",function(ke){return u(ke.xScale(ke.xIndex),0)}),ge.call(r.behavior.drag().origin(function(ke){return ke}).on("drag",function(ke){var Ee=ke.parent;Q.linePickActive(!1),ke.x=Math.max(-w.overdrag,Math.min(ke.model.width+w.overdrag,r.event.x)),ke.canvasX=ke.x*ke.model.canvasPixelRatio,ge.sort(function(ze,Fe){return ze.x-Fe.x}).each(function(ze,Fe){ze.xIndex=Fe,ze.x=ke===ze?ze.x:ze.xScale(ze.xIndex),ze.canvasX=ze.x*ze.model.canvasPixelRatio}),N(ge,Ee,q),ge.filter(function(ze){return Math.abs(ke.xIndex-ze.xIndex)!==0}).attr("transform",function(ze){return u(ze.xScale(ze.xIndex),0)}),r.select(this).attr("transform",u(ke.x,0)),ge.each(function(ze,Fe,Ve){Ve===ke.parent.key&&(Ee.dimensions[Fe]=ze)}),Ee.contextLayer&&Ee.contextLayer.render(Ee.panels,!1,!O(Ee)),Ee.focusLayer.render&&Ee.focusLayer.render(Ee.panels)}).on("dragend",function(ke){var Ee=ke.parent;ke.x=ke.xScale(ke.xIndex),ke.canvasX=ke.x*ke.model.canvasPixelRatio,N(ge,Ee,q),r.select(this).attr("transform",function(ze){return u(ze.x,0)}),Ee.contextLayer&&Ee.contextLayer.render(Ee.panels,!1,!O(Ee)),Ee.focusLayer&&Ee.focusLayer.render(Ee.panels),Ee.pickLayer&&Ee.pickLayer.render(Ee.panels,!0),Q.linePickActive(!0),Y&&Y.axesMoved&&Y.axesMoved(Ee.key,Ee.dimensions.map(function(ze){return ze.crossfilterDimensionIndex}))})),ge.exit().remove();var fe=ge.selectAll("."+w.cn.axisOverlays).data(v,p);fe.enter().append("g").classed(w.cn.axisOverlays,!0),fe.selectAll("."+w.cn.axis).remove();var me=fe.selectAll("."+w.cn.axis).data(v,p);me.enter().append("g").classed(w.cn.axis,!0),me.each(function(ke){var Ee=ke.model.height/ke.model.tickDistance,ze=ke.domainScale,Fe=ze.domain();r.select(this).call(r.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(Ee,ke.tickFormat).tickValues(ke.ordinal?Fe:null).tickFormat(function(Ve){return x.isOrdinal(ke)?Ve:B(ke.model.dimensions[ke.visibleIndex],Ve)}).scale(ze)),h.font(me.selectAll("text"),ke.model.tickFont)}),me.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),me.selectAll("text").style("text-shadow",d.makeTextShadow($)).style("cursor","default");var _e=fe.selectAll("."+w.cn.axisHeading).data(v,p);_e.enter().append("g").classed(w.cn.axisHeading,!0);var we=_e.selectAll("."+w.cn.axisTitle).data(v,p);we.enter().append("text").classed(w.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events","auto"),we.text(function(ke){return ke.label}).each(function(ke){var Ee=r.select(this);h.font(Ee,ke.model.labelFont),d.convertToTspans(Ee,W)}).attr("transform",function(ke){var Ee=P(ke.model.labelAngle,ke.model.labelSide),ze=w.axisTitleOffset;return(Ee.dir>0?"":u(0,2*ze+ke.model.height))+s(Ee.degrees)+u(-ze*Ee.dx,-ze*Ee.dy)}).attr("text-anchor",function(ke){var Ee=P(ke.model.labelAngle,ke.model.labelSide);return 2*Math.abs(Ee.dx)>Math.abs(Ee.dy)?Ee.dir*Ee.dx<0?"start":"end":"middle"});var Te=fe.selectAll("."+w.cn.axisExtent).data(v,p);Te.enter().append("g").classed(w.cn.axisExtent,!0);var Oe=Te.selectAll("."+w.cn.axisExtentTop).data(v,p);Oe.enter().append("g").classed(w.cn.axisExtentTop,!0),Oe.attr("transform",u(0,-w.axisExtentOffset));var de=Oe.selectAll("."+w.cn.axisExtentTopText).data(v,p);de.enter().append("text").classed(w.cn.axisExtentTopText,!0).call(L),de.text(function(ke){return G(ke,!0)}).each(function(ke){h.font(r.select(this),ke.model.rangeFont)});var ye=Te.selectAll("."+w.cn.axisExtentBottom).data(v,p);ye.enter().append("g").classed(w.cn.axisExtentBottom,!0),ye.attr("transform",function(ke){return u(0,ke.model.height+w.axisExtentOffset)});var Me=ye.selectAll("."+w.cn.axisExtentBottomText).data(v,p);Me.enter().append("text").classed(w.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(L),Me.text(function(ke){return G(ke,!1)}).each(function(ke){h.font(r.select(this),ke.model.rangeFont)}),k.ensureAxisBrush(fe,$)}},{"../../components/colorscale":378,"../../components/drawing":388,"../../lib":503,"../../lib/gup":500,"../../lib/svg_text_utils":529,"../../plots/cartesian/axes":554,"./axisbrush":889,"./constants":893,"./helpers":895,"./lines":897,"@plotly/d3":58,"color-rgba":91}],900:[function(e,o,f){var r=e("./parcoords"),a=e("../../lib/prepare_regl"),l=e("./helpers").isVisible,c={};function i(s,u,d){var h=u.indexOf(d),m=s.indexOf(h);return m===-1&&(m+=u.length),m}(o.exports=function(s,u){var d=s._fullLayout;if(a(s,[],c)){var h={},m={},g={},p={},v=d._size;u.forEach(function(y,x){var w=y[0].trace;g[x]=w.index;var k=p[x]=w._fullInput.index;h[x]=s.data[k].dimensions,m[x]=s.data[k].dimensions.slice()}),r(s,u,{width:v.w,height:v.h,margin:{t:v.t,r:v.r,b:v.b,l:v.l}},{filterChanged:function(y,x,w){var k=m[y][x],b=w.map(function(E){return E.slice()}),T="dimensions["+x+"].constraintrange",_=d._tracePreGUI[s._fullData[g[y]]._fullInput.uid];if(_[T]===void 0){var S=k.constraintrange;_[T]=S||null}var A=s._fullData[g[y]].dimensions[x];b.length?(b.length===1&&(b=b[0]),k.constraintrange=b,A.constraintrange=b.slice(),b=[b]):(delete k.constraintrange,delete A.constraintrange,b=null);var M={};M[T]=b,s.emit("plotly_restyle",[M,[p[y]]])},hover:function(y){s.emit("plotly_hover",y)},unhover:function(y){s.emit("plotly_unhover",y)},axesMoved:function(y,x){var w=function(k,b){return function(T,_){return i(k,b,T)-i(k,b,_)}}(x,m[y].filter(l));h[y].sort(w),m[y].filter(function(k){return!l(k)}).sort(function(k){return m[y].indexOf(k)}).forEach(function(k){h[y].splice(h[y].indexOf(k),1),h[y].splice(m[y].indexOf(k),0,k)}),s.emit("plotly_restyle",[{dimensions:[h[y]]},[p[y]]])}})}}).reglPrecompiled=c},{"../../lib/prepare_regl":516,"./helpers":895,"./parcoords":899}],901:[function(e,o,f){var r=e("../../plots/attributes"),a=e("../../plots/domain").attributes,l=e("../../plots/font_attributes"),c=e("../../components/color/attributes"),i=e("../../plots/template_attributes").hovertemplateAttrs,s=e("../../plots/template_attributes").texttemplateAttrs,u=e("../../lib/extend").extendFlat,d=l({editType:"plot",arrayOk:!0,colorEditType:"plot"});o.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:c.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:u({},r.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:i({},{keys:["label","color","value","percent","text"]}),texttemplate:s({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:u({},d,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:u({},d,{}),outsidetextfont:u({},d,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:u({},d,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:a({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"number",min:-360,max:360,dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"},_deprecated:{title:{valType:"string",dflt:"",editType:"calc"},titlefont:u({},d,{}),titleposition:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"calc"}}}},{"../../components/color/attributes":365,"../../lib/extend":493,"../../plots/attributes":550,"../../plots/domain":584,"../../plots/font_attributes":585,"../../plots/template_attributes":633}],902:[function(e,o,f){var r=e("../../plots/plots");f.name="pie",f.plot=function(a,l,c,i){r.plotBasePlot(f.name,a,l,c,i)},f.clean=function(a,l,c,i){r.cleanBasePlot(f.name,a,l,c,i)}},{"../../plots/plots":619}],903:[function(e,o,f){var r=e("fast-isnumeric"),a=e("tinycolor2"),l=e("../../components/color"),c={};function i(u){return function(d,h){return!!d&&!!(d=a(d)).isValid()&&(d=l.addOpacity(d,d.getAlpha()),u[h]||(u[h]=d),d)}}function s(u,d){var h,m=JSON.stringify(u),g=d[m];if(!g){for(g=u.slice(),h=0;h=0}),(d.type==="funnelarea"?A:d.sort)&&g.sort(function(R,z){return z.v-R.v}),g[0]&&(g[0].vTotal=S),g},crossTraceCalc:function(u,d){var h=(d||{}).type;h||(h="pie");var m=u._fullLayout,g=u.calcdata,p=m[h+"colorway"],v=m["_"+h+"colormap"];m["extend"+h+"colors"]&&(p=s(p,c));for(var y=0,x=0;x0){p=!0;break}}p||(g=0)}return{hasLabels:h,hasValues:m,len:g}}o.exports={handleLabelsAndValues:s,supplyDefaults:function(u,d,h,m){function g(_,S){return a.coerce(u,d,l,_,S)}var p=s(g("labels"),g("values")),v=p.len;if(d._hasLabels=p.hasLabels,d._hasValues=p.hasValues,!d._hasLabels&&d._hasValues&&(g("label0"),g("dlabel")),v){d._length=v,g("marker.line.width")&&g("marker.line.color"),g("marker.colors"),g("scalegroup");var y,x=g("text"),w=g("texttemplate");if(w||(y=g("textinfo",Array.isArray(x)?"text+percent":"percent")),g("hovertext"),g("hovertemplate"),w||y&&y!=="none"){var k=g("textposition");i(u,d,m,g,k,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(k)||k==="auto"||k==="outside")&&g("automargin"),(k==="inside"||k==="auto"||Array.isArray(k))&&g("insidetextorientation")}c(d,m,g);var b=g("hole");if(g("title.text")){var T=g("title.position",b?"middle center":"top center");b||T!=="middle center"||(d.title.position="top center"),a.coerceFont(g,"title.font",m.font)}g("sort"),g("direction"),g("rotation"),g("pull")}else d.visible=!1}}},{"../../lib":503,"../../plots/domain":584,"../bar/defaults":652,"./attributes":901,"fast-isnumeric":190}],905:[function(e,o,f){var r=e("../../components/fx/helpers").appendArrayMultiPointValues;o.exports=function(a,l){var c={curveNumber:l.index,pointNumbers:a.pts,data:l._input,fullData:l,label:a.label,color:a.color,value:a.v,percent:a.percent,text:a.text,bbox:a.bbox,v:a.v};return a.pts.length===1&&(c.pointNumber=c.i=a.pts[0]),r(c,l,a.pts),l.type==="funnelarea"&&(delete c.v,delete c.i),c}},{"../../components/fx/helpers":402}],906:[function(e,o,f){var r=e("../../lib");function a(l){return l.indexOf("e")!==-1?l.replace(/[.]?0+e/,"e"):l.indexOf(".")!==-1?l.replace(/[.]?0+$/,""):l}f.formatPiePercent=function(l,c){var i=a((100*l).toPrecision(3));return r.numSeparate(i,c)+"%"},f.formatPieValue=function(l,c){var i=a(l.toPrecision(10));return r.numSeparate(i,c)},f.getFirstFilled=function(l,c){if(Array.isArray(l))for(var i=0;i"),name:Q.hovertemplate||ee.indexOf("name")!==-1?Q.name:void 0,idealAlign:ne.pxmid[0]<0?"left":"right",color:y.castOption(me.bgcolor,ne.pts)||ne.color,borderColor:y.castOption(me.bordercolor,ne.pts),fontFamily:y.castOption(_e.family,ne.pts),fontSize:y.castOption(_e.size,ne.pts),fontColor:y.castOption(_e.color,ne.pts),nameLength:y.castOption(me.namelength,ne.pts),textAlign:y.castOption(me.align,ne.pts),hovertemplate:y.castOption(Q.hovertemplate,ne.pts),hovertemplateLabels:ne,eventData:[x(ne,Q)]},{container:H._hoverlayer.node(),outerContainer:H._paper.node(),gd:te,inOut_bbox:we}),ne.bbox=we[0],q._hasHoverLabel=!0}q._hasHoverEvent=!0,te.emit("plotly_hover",{points:[x(ne,Q)],event:r.event})}}),K.on("mouseout",function(ne){var H=te._fullLayout,Q=te._fullData[q.index],ee=r.select(this).datum();q._hasHoverEvent&&(ne.originalEvent=r.event,te.emit("plotly_unhover",{points:[x(ee,Q)],event:r.event}),q._hasHoverEvent=!1),q._hasHoverLabel&&(l.loneUnhover(H._hoverlayer.node()),q._hasHoverLabel=!1)}),K.on("click",function(ne){var H=te._fullLayout,Q=te._fullData[q.index];te._dragging||H.hovermode===!1||(te._hoverdata=[x(ne,Q)],l.click(te,r.event))})}function b(K,te,Y){var Z=y.castOption(K.insidetextfont.color,te.pts);!Z&&K._input.textfont&&(Z=y.castOption(K._input.textfont.color,te.pts));var re=y.castOption(K.insidetextfont.family,te.pts)||y.castOption(K.textfont.family,te.pts)||Y.family,U=y.castOption(K.insidetextfont.size,te.pts)||y.castOption(K.textfont.size,te.pts)||Y.size;return{color:Z||c.contrast(te.color),family:re,size:U}}function T(K,te){for(var Y,Z,re=0;reFe&&Fe>Ke||Ve=-4;ge-=2)fe(Math.PI*ge,"tan");for(ge=4;ge>=-4;ge-=2)fe(Math.PI*(ge+1),"tan")}if(ee||ae){for(ge=4;ge>=-4;ge-=2)fe(Math.PI*(ge+1.5),"rad");for(ge=4;ge>=-4;ge-=2)fe(Math.PI*(ge+.5),"rad")}}if($||ue||ee){var me=Math.sqrt(K.width*K.width+K.height*K.height);if((U={scale:re*Z*2/me,rCenter:1-re,rotate:0}).textPosAngle=(te.startangle+te.stopangle)/2,U.scale>=1)return U;le.push(U)}(ue||ae)&&((U=S(K,Z,q,ne,H)).textPosAngle=(te.startangle+te.stopangle)/2,le.push(U)),(ue||ie)&&((U=A(K,Z,q,ne,H)).textPosAngle=(te.startangle+te.stopangle)/2,le.push(U));for(var _e=0,we=0,Te=0;Te=1)break}return le[_e]}function S(K,te,Y,Z,re){te=Math.max(0,te-2*v);var U=K.width/K.height,q=D(U,Z,te,Y);return{scale:2*q/K.height,rCenter:M(U,q/te),rotate:E(re)}}function A(K,te,Y,Z,re){te=Math.max(0,te-2*v);var U=K.height/K.width,q=D(U,Z,te,Y);return{scale:2*q/K.width,rCenter:M(U,q/te),rotate:E(re+Math.PI/2)}}function M(K,te){return Math.cos(te)-K*te}function E(K){return(180/Math.PI*K+720)%180-90}function D(K,te,Y,Z){var re=K+1/(2*Math.tan(te));return Y*Math.min(1/(Math.sqrt(re*re+.5)+re),Z/(Math.sqrt(K*K+Z/2)+K))}function O(K,te){return K.v!==te.vTotal||te.trace.hole?Math.min(1/(1+1/Math.sin(K.halfangle)),K.ring/2):1}function R(K,te){var Y=te.pxmid[0],Z=te.pxmid[1],re=K.width/2,U=K.height/2;return Y<0&&(re*=-1),Z<0&&(U*=-1),{scale:1,rCenter:1,rotate:0,x:re+Math.abs(U)*(re>0?1:-1)/2,y:U/(1+Y*Y/(Z*Z)),outside:!0}}function z(K,te){var Y,Z,re,U=K.trace,q={x:K.cx,y:K.cy},$={tx:0,ty:0};$.ty+=U.title.font.size,re=P(U),U.title.position.indexOf("top")!==-1?(q.y-=(1+re)*K.r,$.ty-=K.titleBox.height):U.title.position.indexOf("bottom")!==-1&&(q.y+=(1+re)*K.r);var ne,H,Q=(ne=K.r,H=K.trace.aspectratio,ne/(H===void 0?1:H)),ee=te.w*(U.domain.x[1]-U.domain.x[0])/2;return U.title.position.indexOf("left")!==-1?(ee+=Q,q.x-=(1+re)*Q,$.tx+=K.titleBox.width/2):U.title.position.indexOf("center")!==-1?ee*=2:U.title.position.indexOf("right")!==-1&&(ee+=Q,q.x+=(1+re)*Q,$.tx-=K.titleBox.width/2),Y=ee/K.titleBox.width,Z=L(K,te)/K.titleBox.height,{x:q.x,y:q.y,scale:Math.min(Y,Z),tx:$.tx,ty:$.ty}}function L(K,te){var Y=K.trace,Z=te.h*(Y.domain.y[1]-Y.domain.y[0]);return Math.min(K.titleBox.height,Z/2)}function P(K){var te,Y=K.pull;if(!Y)return 0;if(Array.isArray(Y))for(Y=0,te=0;teY&&(Y=K.pull[te]);return Y}function N(K,te){for(var Y=[],Z=0;Z1?(we=ae.r,Te=we/le.aspectratio):(Te=ae.r,we=Te*le.aspectratio),we*=(1+le.baseratio)/2,_e=we*Te}fe=Math.min(fe,_e/ae.vTotal)}for(ue=0;ue")}if(U){var ge=s.castOption(re,te.i,"texttemplate");if(ge){var fe=function(_e){return{label:_e.label,value:_e.v,valueLabel:y.formatPieValue(_e.v,Z.separators),percent:_e.v/Y.vTotal,percentLabel:y.formatPiePercent(_e.v/Y.vTotal,Z.separators),color:_e.color,text:_e.text,customdata:s.castOption(re,_e.i,"customdata")}}(te),me=y.getFirstFilled(re.text,te.pts);(w(me)||me==="")&&(fe.text=me),te.text=s.texttemplateString(ge,fe,K._fullLayout._d3locale,fe,re._meta||{})}else te.text=""}}function W(K,te){var Y=K.rotate*Math.PI/180,Z=Math.cos(Y),re=Math.sin(Y),U=(te.left+te.right)/2,q=(te.top+te.bottom)/2;K.textX=U*Z-q*re,K.textY=U*re+q*Z,K.noCenter=!0}o.exports={plot:function(K,te){var Y=K._fullLayout,Z=Y._size;p("pie",Y),T(te,K),N(te,Z);var re=s.makeTraceGroups(Y._pielayer,te,"trace").each(function(U){var q=r.select(this),$=U[0],ne=$.trace;(function(H){var Q,ee,ie,ae=H[0],ue=ae.r,le=ae.trace,ge=y.getRotationAngle(le.rotation),fe=2*Math.PI/ae.vTotal,me="px0",_e="px1";if(le.direction==="counterclockwise"){for(Q=0;Qae.vTotal/2?1:0,ee.halfangle=Math.PI*Math.min(ee.v/ae.vTotal,.5),ee.ring=1-le.hole,ee.rInscribed=O(ee,ae))})(U),q.attr("stroke-linejoin","round"),q.each(function(){var H=r.select(this).selectAll("g.slice").data(U);H.enter().append("g").classed("slice",!0),H.exit().remove();var Q=[[[],[]],[[],[]]],ee=!1;H.each(function(_e,we){if(_e.hidden)r.select(this).selectAll("path,g").remove();else{_e.pointNumber=_e.i,_e.curveNumber=ne.index,Q[_e.pxmid[1]<0?0:1][_e.pxmid[0]<0?0:1].push(_e);var Te=$.cx,Oe=$.cy,de=r.select(this),ye=de.selectAll("path.surface").data([_e]);if(ye.enter().append("path").classed("surface",!0).style({"pointer-events":"all"}),de.call(k,K,U),ne.pull){var Me=+y.castOption(ne.pull,_e.pts)||0;Me>0&&(Te+=Me*_e.pxmid[0],Oe+=Me*_e.pxmid[1])}_e.cxFinal=Te,_e.cyFinal=Oe;var ke=ne.hole;if(_e.v===$.vTotal){var Ee="M"+(Te+_e.px0[0])+","+(Oe+_e.px0[1])+Re(_e.px0,_e.pxmid,!0,1)+Re(_e.pxmid,_e.px0,!0,1)+"Z";ke?ye.attr("d","M"+(Te+ke*_e.px0[0])+","+(Oe+ke*_e.px0[1])+Re(_e.px0,_e.pxmid,!1,ke)+Re(_e.pxmid,_e.px0,!1,ke)+"Z"+Ee):ye.attr("d",Ee)}else{var ze=Re(_e.px0,_e.px1,!0,1);if(ke){var Fe=1-ke;ye.attr("d","M"+(Te+ke*_e.px1[0])+","+(Oe+ke*_e.px1[1])+Re(_e.px1,_e.px0,!1,ke)+"l"+Fe*_e.px0[0]+","+Fe*_e.px0[1]+ze+"Z")}else ye.attr("d","M"+Te+","+Oe+"l"+_e.px0[0]+","+_e.px0[1]+ze+"Z")}G(K,_e,$);var Ve=y.castOption(ne.textposition,_e.pts),Ke=de.selectAll("g.slicetext").data(_e.text&&Ve!=="none"?[0]:[]);Ke.enter().append("g").classed("slicetext",!0),Ke.exit().remove(),Ke.each(function(){var qe=s.ensureSingle(r.select(this),"text","",function(at){at.attr("data-notex",1)}),We=s.ensureUniformFontSize(K,Ve==="outside"?function(at,et,Ot){var Wt=y.castOption(at.outsidetextfont.color,et.pts)||y.castOption(at.textfont.color,et.pts)||Ot.color,Jt=y.castOption(at.outsidetextfont.family,et.pts)||y.castOption(at.textfont.family,et.pts)||Ot.family,Be=y.castOption(at.outsidetextfont.size,et.pts)||y.castOption(at.textfont.size,et.pts)||Ot.size;return{color:Wt,family:Jt,size:Be}}(ne,_e,Y.font):b(ne,_e,Y.font));qe.text(_e.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(i.font,We).call(h.convertToTspans,K);var Ye,nt=i.bBox(qe.node());if(Ve==="outside")Ye=R(nt,_e);else if(Ye=_(nt,_e,$),Ve==="auto"&&Ye.scale<1){var ft=s.ensureUniformFontSize(K,ne.outsidetextfont);qe.call(i.font,ft),Ye=R(nt=i.bBox(qe.node()),_e)}var vt=Ye.textPosAngle,Pt=vt===void 0?_e.pxmid:B($.r,vt);if(Ye.targetX=Te+Pt[0]*Ye.rCenter+(Ye.x||0),Ye.targetY=Oe+Pt[1]*Ye.rCenter+(Ye.y||0),W(Ye,nt),Ye.outside){var At=Ye.targetY;_e.yLabelMin=At-nt.height/2,_e.yLabelMid=At,_e.yLabelMax=At+nt.height/2,_e.labelExtraX=0,_e.labelExtraY=0,ee=!0}Ye.fontSize=We.size,g(ne.type,Ye,Y),U[we].transform=Ye,qe.attr("transform",s.getTextTransform(Ye))})}function Re(qe,We,Ye,nt){var ft=nt*(We[0]-qe[0]),vt=nt*(We[1]-qe[1]);return"a"+nt*$.r+","+nt*$.r+" 0 "+_e.largeArc+(Ye?" 1 ":" 0 ")+ft+","+vt}});var ie=r.select(this).selectAll("g.titletext").data(ne.title.text?[0]:[]);if(ie.enter().append("g").classed("titletext",!0),ie.exit().remove(),ie.each(function(){var _e,we=s.ensureSingle(r.select(this),"text","",function(Oe){Oe.attr("data-notex",1)}),Te=ne.title.text;ne._meta&&(Te=s.templateString(Te,ne._meta)),we.text(Te).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(i.font,ne.title.font).call(h.convertToTspans,K),_e=ne.title.position==="middle center"?function(Oe){var de=Math.sqrt(Oe.titleBox.width*Oe.titleBox.width+Oe.titleBox.height*Oe.titleBox.height);return{x:Oe.cx,y:Oe.cy,scale:Oe.trace.hole*Oe.r*2/de,tx:0,ty:-Oe.titleBox.height/2+Oe.trace.title.font.size}}($):z($,Z),we.attr("transform",d(_e.x,_e.y)+u(Math.min(1,_e.scale))+d(_e.tx,_e.ty))}),ee&&function(_e,we){var Te,Oe,de,ye,Me,ke,Ee,ze,Fe,Ve,Ke,Re,qe;function We(vt,Pt){return vt.pxmid[1]-Pt.pxmid[1]}function Ye(vt,Pt){return Pt.pxmid[1]-vt.pxmid[1]}function nt(vt,Pt){Pt||(Pt={});var At,at,et,Ot,Wt=Pt.labelExtraY+(Oe?Pt.yLabelMax:Pt.yLabelMin),Jt=Oe?vt.yLabelMin:vt.yLabelMax,Be=Oe?vt.yLabelMax:vt.yLabelMin,Ge=vt.cyFinal+Me(vt.px0[1],vt.px1[1]),Tt=Wt-Jt;if(Tt*Ee>0&&(vt.labelExtraY=Tt),Array.isArray(we.pull))for(at=0;at=(y.castOption(we.pull,et.pts)||0)||((vt.pxmid[1]-et.pxmid[1])*Ee>0?(Tt=et.cyFinal+Me(et.px0[1],et.px1[1])-Jt-vt.labelExtraY)*Ee>0&&(vt.labelExtraY+=Tt):(Be+vt.labelExtraY-Ge)*Ee>0&&(At=3*ke*Math.abs(at-Ve.indexOf(vt)),(Ot=et.cxFinal+ye(et.px0[0],et.px1[0])+At-(vt.cxFinal+vt.pxmid[0])-vt.labelExtraX)*ke>0&&(vt.labelExtraX+=Ot)))}for(Oe=0;Oe<2;Oe++)for(de=Oe?We:Ye,Me=Oe?Math.max:Math.min,Ee=Oe?1:-1,Te=0;Te<2;Te++){for(ye=Te?Math.max:Math.min,ke=Te?1:-1,(ze=_e[Oe][Te]).sort(de),Fe=_e[1-Oe][Te],Ve=Fe.concat(ze),Re=[],Ke=0;KeMath.abs(ze)?Me+="l"+ze*Te.pxmid[0]/Te.pxmid[1]+","+ze+"H"+(ye+Te.labelExtraX+ke):Me+="l"+Te.labelExtraX+","+Ee+"v"+(ze-Ee)+"h"+ke}else Me+="V"+(Te.yLabelMid+Te.labelExtraY)+"h"+ke;s.ensureSingle(Oe,"path","textline").call(c.stroke,we.outsidetextfont.color).attr({"stroke-width":Math.min(2,we.outsidetextfont.size/8),d:Me,fill:"none"})}else Oe.select("path.textline").remove()})}(H,ne),ee&&ne.automargin){var ae=i.bBox(q.node()),ue=ne.domain,le=Z.w*(ue.x[1]-ue.x[0]),ge=Z.h*(ue.y[1]-ue.y[0]),fe=(.5*le-$.r)/Z.w,me=(.5*ge-$.r)/Z.h;a.autoMargin(K,"pie."+ne.uid+".automargin",{xl:ue.x[0]-fe,xr:ue.x[1]+fe,yb:ue.y[0]-me,yt:ue.y[1]+me,l:Math.max($.cx-$.r-ae.left,0),r:Math.max(ae.right-($.cx+$.r),0),b:Math.max(ae.bottom-($.cy+$.r),0),t:Math.max($.cy-$.r-ae.top,0),pad:5})}})});setTimeout(function(){re.selectAll("tspan").each(function(){var U=r.select(this);U.attr("dy")&&U.attr("dy",U.attr("dy"))})},0)},formatSliceLabel:G,transformInsideText:_,determineInsideTextFont:b,positionTitleOutside:z,prerenderTitles:T,layoutAreas:N,attachFxHandlers:k,computeTransform:W}},{"../../components/color":366,"../../components/drawing":388,"../../components/fx":406,"../../lib":503,"../../lib/svg_text_utils":529,"../../plots/plots":619,"../bar/constants":650,"../bar/uniform_text":664,"./event_data":905,"./helpers":906,"@plotly/d3":58}],911:[function(e,o,f){var r=e("@plotly/d3"),a=e("./style_one"),l=e("../bar/uniform_text").resizeText;o.exports=function(c){var i=c._fullLayout._pielayer.selectAll(".trace");l(c,i,"pie"),i.each(function(s){var u=s[0].trace,d=r.select(this);d.style({opacity:u.opacity}),d.selectAll("path.surface").each(function(h){r.select(this).call(a,h,u)})})}},{"../bar/uniform_text":664,"./style_one":912,"@plotly/d3":58}],912:[function(e,o,f){var r=e("../../components/color"),a=e("./helpers").castOption;o.exports=function(l,c,i){var s=i.marker.line,u=a(s.color,c.pts)||r.defaultLine,d=a(s.width,c.pts)||0;l.style("stroke-width",d).call(r.fill,c.color).call(r.stroke,u)}},{"../../components/color":366,"./helpers":906}],913:[function(e,o,f){var r=e("../scatter/attributes");o.exports={x:r.x,y:r.y,xy:{valType:"data_array",editType:"calc"},indices:{valType:"data_array",editType:"calc"},xbounds:{valType:"data_array",editType:"calc"},ybounds:{valType:"data_array",editType:"calc"},text:r.text,marker:{color:{valType:"color",arrayOk:!1,editType:"calc"},opacity:{valType:"number",min:0,max:1,dflt:1,arrayOk:!1,editType:"calc"},blend:{valType:"boolean",dflt:null,editType:"calc"},sizemin:{valType:"number",min:.1,max:2,dflt:.5,editType:"calc"},sizemax:{valType:"number",min:.1,dflt:20,editType:"calc"},border:{color:{valType:"color",arrayOk:!1,editType:"calc"},arearatio:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},editType:"calc"},editType:"calc"},transforms:void 0}},{"../scatter/attributes":927}],914:[function(e,o,f){var r=e("../../../stackgl_modules").gl_pointcloud2d,a=e("../../lib/str2rgbarray"),l=e("../../plots/cartesian/autorange").findExtremes,c=e("../scatter/get_trace_color");function i(u,d){this.scene=u,this.uid=d,this.type="pointcloud",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color="rgb(0, 0, 0)",this.name="",this.hoverinfo="all",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=r(u.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var s=i.prototype;s.handlePick=function(u){var d=this.idToIndex[u.pointId];return{trace:this,dataCoord:u.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*d],this.pickXYData[2*d+1]]:[this.pickXData[d],this.pickYData[d]],textLabel:Array.isArray(this.textLabels)?this.textLabels[d]:this.textLabels,color:this.color,name:this.name,pointIndex:d,hoverinfo:this.hoverinfo}},s.update=function(u){this.index=u.index,this.textLabels=u.text,this.name=u.name,this.hoverinfo=u.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(u),this.color=c(u,{})},s.updateFast=function(u){var d,h,m,g,p,v,y=this.xData=this.pickXData=u.x,x=this.yData=this.pickYData=u.y,w=this.pickXYData=u.xy,k=u.xbounds&&u.ybounds,b=u.indices,T=this.bounds;if(w){if(m=w,d=w.length>>>1,k)T[0]=u.xbounds[0],T[2]=u.xbounds[1],T[1]=u.ybounds[0],T[3]=u.ybounds[1];else for(v=0;vT[2]&&(T[2]=g),pT[3]&&(T[3]=p);if(b)h=b;else for(h=new Int32Array(d),v=0;vT[2]&&(T[2]=g),pT[3]&&(T[3]=p);this.idToIndex=h,this.pointcloudOptions.idToIndex=h,this.pointcloudOptions.positions=m;var _=a(u.marker.color),S=a(u.marker.border.color),A=u.opacity*u.marker.opacity;_[3]*=A,this.pointcloudOptions.color=_;var M=u.marker.blend;M===null&&(M=y.length<100||x.length<100),this.pointcloudOptions.blend=M,S[3]*=A,this.pointcloudOptions.borderColor=S;var E=u.marker.sizemin,D=Math.max(u.marker.sizemax,u.marker.sizemin);this.pointcloudOptions.sizeMin=E,this.pointcloudOptions.sizeMax=D,this.pointcloudOptions.areaRatio=u.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var O=this.scene.xaxis,R=this.scene.yaxis,z=D/2||.5;u._extremes[O._id]=l(O,[T[0],T[2]],{ppad:z}),u._extremes[R._id]=l(R,[T[1],T[3]],{ppad:z})},s.dispose=function(){this.pointcloud.dispose()},o.exports=function(u,d){var h=new i(u,d.uid);return h.update(d),h}},{"../../../stackgl_modules":1124,"../../lib/str2rgbarray":528,"../../plots/cartesian/autorange":553,"../scatter/get_trace_color":937}],915:[function(e,o,f){var r=e("../../lib"),a=e("./attributes");o.exports=function(l,c,i){function s(u,d){return r.coerce(l,c,a,u,d)}s("x"),s("y"),s("xbounds"),s("ybounds"),l.xy&&l.xy instanceof Float32Array&&(c.xy=l.xy),l.indices&&l.indices instanceof Int32Array&&(c.indices=l.indices),s("text"),s("marker.color",i),s("marker.opacity"),s("marker.blend"),s("marker.sizemin"),s("marker.sizemax"),s("marker.border.color",i),s("marker.border.arearatio"),c._length=null}},{"../../lib":503,"./attributes":913}],916:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),calc:e("../scatter3d/calc"),plot:e("./convert"),moduleType:"trace",name:"pointcloud",basePlotModule:e("../../plots/gl2d"),categories:["gl","gl2d","showLegend"],meta:{}}},{"../../plots/gl2d":596,"../scatter3d/calc":956,"./attributes":913,"./convert":914,"./defaults":915}],917:[function(e,o,f){var r=e("../../plots/font_attributes"),a=e("../../plots/attributes"),l=e("../../components/color/attributes"),c=e("../../components/fx/attributes"),i=e("../../plots/domain").attributes,s=e("../../plots/template_attributes").hovertemplateAttrs,u=e("../../components/colorscale/attributes"),d=e("../../plot_api/plot_template").templatedArray,h=e("../../plots/cartesian/axis_format_attributes").descriptionOnlyNumbers,m=e("../../lib/extend").extendFlat,g=e("../../plot_api/edit_types").overrideAll;(o.exports=g({hoverinfo:m({},a.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:c.hoverlabel,domain:i({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:h("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:r({}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:l.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:c.hoverlabel,hovertemplate:s({},{keys:["value","label"]})},link:{label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:l.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:c.hoverlabel,hovertemplate:s({},{keys:["value","label"]}),colorscales:d("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:m(u().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")).transforms=void 0},{"../../components/color/attributes":365,"../../components/colorscale/attributes":373,"../../components/fx/attributes":397,"../../lib/extend":493,"../../plot_api/edit_types":536,"../../plot_api/plot_template":543,"../../plots/attributes":550,"../../plots/cartesian/axis_format_attributes":557,"../../plots/domain":584,"../../plots/font_attributes":585,"../../plots/template_attributes":633}],918:[function(e,o,f){var r=e("../../plot_api/edit_types").overrideAll,a=e("../../plots/get_data").getModuleCalcData,l=e("./plot"),c=e("../../components/fx/layout_attributes"),i=e("../../lib/setcursor"),s=e("../../components/dragelement"),u=e("../../plots/cartesian/select").prepSelect,d=e("../../lib"),h=e("../../registry");function m(g,p){var v=g._fullData[p],y=g._fullLayout,x=y.dragmode,w=y.dragmode==="pan"?"move":"crosshair",k=v._bgRect;if(x!=="pan"&&x!=="zoom"){i(k,w);var b={_id:"x",c2p:d.identity,_offset:v._sankey.translateX,_length:v._sankey.width},T={_id:"y",c2p:d.identity,_offset:v._sankey.translateY,_length:v._sankey.height},_={gd:g,element:k.node(),plotinfo:{id:p,xaxis:b,yaxis:T,fillRangeItems:d.noop},subplot:p,xaxes:[b],yaxes:[T],doneFnCompleted:function(S){var A,M=g._fullData[p],E=M.node.groups.slice(),D=[];function O(P){for(var N=M._sankey.graph.nodes,B=0;BS&&(S=g.source[h]),g.target[h]>S&&(S=g.target[h]);var A,M=S+1;d.node._count=M;var E=d.node.groups,D={};for(h=0;h0&&i(N,M)&&i(B,M)&&(!D.hasOwnProperty(N)||!D.hasOwnProperty(B)||D[N]!==D[B])){D.hasOwnProperty(B)&&(B=D[B]),D.hasOwnProperty(N)&&(N=D[N]),B=+B,x[N=+N]=x[B]=!0;var G="";g.label&&g.label[h]&&(G=g.label[h]);var W=null;G&&w.hasOwnProperty(G)&&(W=w[G]),p.push({pointNumber:h,label:G,color:v?g.color[h]:g.color,customdata:y?g.customdata[h]:g.customdata,concentrationscale:W,source:N,target:B,value:+P}),L.source.push(N),L.target.push(B)}}var K=M+E.length,te=c(m.color),Y=c(m.customdata),Z=[];for(h=0;hM-1,childrenNodes:[],pointNumber:h,label:re,color:te?m.color[h]:m.color,customdata:Y?m.customdata[h]:m.customdata})}var U=!1;return function(q,$,ne){for(var H=a.init2dArray(q,0),Q=0;Q1})}(K,L.source,L.target)&&(U=!0),{circular:U,links:p,nodes:Z,groups:E,groupLookup:D}}o.exports=function(d,h){var m=u(h);return l({circular:m.circular,_nodes:m.nodes,_links:m.links,_groups:m.groups,_groupLookup:m.groupLookup})}},{"../../components/colorscale":378,"../../lib":503,"../../lib/gup":500,"strongly-connected-components":306}],920:[function(e,o,f){o.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}},{}],921:[function(e,o,f){var r=e("../../lib"),a=e("./attributes"),l=e("../../components/color"),c=e("tinycolor2"),i=e("../../plots/domain").defaults,s=e("../../components/fx/hoverlabel_defaults"),u=e("../../plot_api/plot_template"),d=e("../../plots/array_container_defaults");function h(m,g){function p(v,y){return r.coerce(m,g,a.link.colorscales,v,y)}p("label"),p("cmin"),p("cmax"),p("colorscale")}o.exports=function(m,g,p,v){function y(D,O){return r.coerce(m,g,a,D,O)}var x=r.extendDeep(v.hoverlabel,m.hoverlabel),w=m.node,k=u.newContainer(g,"node");function b(D,O){return r.coerce(w,k,a.node,D,O)}b("label"),b("groups"),b("x"),b("y"),b("pad"),b("thickness"),b("line.color"),b("line.width"),b("hoverinfo",m.hoverinfo),s(w,k,b,x),b("hovertemplate");var T=v.colorway;b("color",k.label.map(function(D,O){return l.addOpacity(function(R){return T[R%T.length]}(O),.8)})),b("customdata");var _=m.link||{},S=u.newContainer(g,"link");function A(D,O){return r.coerce(_,S,a.link,D,O)}A("label"),A("source"),A("target"),A("value"),A("line.color"),A("line.width"),A("hoverinfo",m.hoverinfo),s(_,S,A,x),A("hovertemplate");var M,E=c(v.paper_bgcolor).getLuminance()<.333?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)";A("color",r.repeat(E,S.value.length)),A("customdata"),d(_,S,{name:"colorscales",handleItemDefaults:h}),i(g,v,y),y("orientation"),y("valueformat"),y("valuesuffix"),k.x.length&&k.y.length&&(M="freeform"),y("arrangement",M),r.coerceFont(y,"textfont",r.extendFlat({},v.font)),g._length=null}},{"../../components/color":366,"../../components/fx/hoverlabel_defaults":404,"../../lib":503,"../../plot_api/plot_template":543,"../../plots/array_container_defaults":549,"../../plots/domain":584,"./attributes":917,tinycolor2:312}],922:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),calc:e("./calc"),plot:e("./plot"),moduleType:"trace",name:"sankey",basePlotModule:e("./base_plot"),selectPoints:e("./select.js"),categories:["noOpacity"],meta:{}}},{"./attributes":917,"./base_plot":918,"./calc":919,"./defaults":921,"./plot":923,"./select.js":925}],923:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=a.numberFormat,c=e("./render"),i=e("../../components/fx"),s=e("../../components/color"),u=e("./constants").cn,d=a._;function h(_){return _!==""}function m(_,S){return _.filter(function(A){return A.key===S.traceId})}function g(_,S){r.select(_).select("path").style("fill-opacity",S),r.select(_).select("rect").style("fill-opacity",S)}function p(_){r.select(_).select("text.name").style("fill","black")}function v(_){return function(S){return _.node.sourceLinks.indexOf(S.link)!==-1||_.node.targetLinks.indexOf(S.link)!==-1}}function y(_){return function(S){return S.node.sourceLinks.indexOf(_.link)!==-1||S.node.targetLinks.indexOf(_.link)!==-1}}function x(_,S,A){S&&A&&m(A,S).selectAll("."+u.sankeyLink).filter(v(S)).call(k.bind(0,S,A,!1))}function w(_,S,A){S&&A&&m(A,S).selectAll("."+u.sankeyLink).filter(v(S)).call(b.bind(0,S,A,!1))}function k(_,S,A,M){var E=M.datum().link.label;M.style("fill-opacity",function(D){if(!D.link.concentrationscale)return .4}),E&&m(S,_).selectAll("."+u.sankeyLink).filter(function(D){return D.link.label===E}).style("fill-opacity",function(D){if(!D.link.concentrationscale)return .4}),A&&m(S,_).selectAll("."+u.sankeyNode).filter(y(_)).call(x)}function b(_,S,A,M){var E=M.datum().link.label;M.style("fill-opacity",function(D){return D.tinyColorAlpha}),E&&m(S,_).selectAll("."+u.sankeyLink).filter(function(D){return D.link.label===E}).style("fill-opacity",function(D){return D.tinyColorAlpha}),A&&m(S,_).selectAll(u.sankeyNode).filter(y(_)).call(w)}function T(_,S){var A=_.hoverlabel||{},M=a.nestedProperty(A,S).get();return!Array.isArray(M)&&M}o.exports=function(_,S){for(var A=_._fullLayout,M=A._paper,E=A._size,D=0;D<_._fullData.length;D++)if(_._fullData[D].visible&&_._fullData[D].type===u.sankey&&!_._fullData[D]._viewInitial){var O=_._fullData[D].node;_._fullData[D]._viewInitial={node:{groups:O.groups.slice(),x:O.x.slice(),y:O.y.slice()}}}var R=d(_,"source:")+" ",z=d(_,"target:")+" ",L=d(_,"concentration:")+" ",P=d(_,"incoming flow count:")+" ",N=d(_,"outgoing flow count:")+" ";c(_,M,S,{width:E.w,height:E.h,margin:{t:E.t,r:E.r,b:E.b,l:E.l}},{linkEvents:{hover:function(B,G,W){_._fullLayout.hovermode!==!1&&(r.select(B).call(k.bind(0,G,W,!0)),G.link.trace.link.hoverinfo!=="skip"&&(G.link.fullData=G.link.trace,_.emit("plotly_hover",{event:r.event,points:[G.link]})))},follow:function(B,G){if(_._fullLayout.hovermode!==!1){var W=G.link.trace.link;if(W.hoverinfo!=="none"&&W.hoverinfo!=="skip"){for(var K=[],te=0,Y=0;Y"),color:T(W,"bgcolor")||s.addOpacity(Z.color,1),borderColor:T(W,"bordercolor"),fontFamily:T(W,"font.family"),fontSize:T(W,"font.size"),fontColor:T(W,"font.color"),nameLength:T(W,"namelength"),textAlign:T(W,"align"),idealAlign:r.event.x"),color:T(W,"bgcolor")||G.tinyColorHue,borderColor:T(W,"bordercolor"),fontFamily:T(W,"font.family"),fontSize:T(W,"font.size"),fontColor:T(W,"font.color"),nameLength:T(W,"namelength"),textAlign:T(W,"align"),idealAlign:"left",hovertemplate:W.hovertemplate,hovertemplateLabels:q,eventData:[G.node]},{container:A._hoverlayer.node(),outerContainer:A._paper.node(),gd:_});g(H,.85),p(H)}}},unhover:function(B,G,W){_._fullLayout.hovermode!==!1&&(r.select(B).call(w,G,W),G.node.trace.node.hoverinfo!=="skip"&&(G.node.fullData=G.node.trace,_.emit("plotly_unhover",{event:r.event,points:[G.node]})),i.loneUnhover(A._hoverlayer.node()))},select:function(B,G,W){var K=G.node;K.originalEvent=r.event,_._hoverdata=[K],r.select(B).call(w,G,W),i.click(_,{target:!0})}}})}},{"../../components/color":366,"../../components/fx":406,"../../lib":503,"./constants":920,"./render":924,"@plotly/d3":58}],924:[function(e,o,f){var r=e("d3-force"),a=e("d3-interpolate").interpolateNumber,l=e("@plotly/d3"),c=e("@plotly/d3-sankey"),i=e("@plotly/d3-sankey-circular"),s=e("./constants"),u=e("tinycolor2"),d=e("../../components/color"),h=e("../../components/drawing"),m=e("../../lib"),g=m.strTranslate,p=m.strRotate,v=e("../../lib/gup"),y=v.keyFun,x=v.repeat,w=v.unwrap,k=e("../../lib/svg_text_utils"),b=e("../../registry"),T=e("../../constants/alignment"),_=T.CAP_SHIFT,S=T.LINE_SPACING;function A(Y,Z,re){var U,q=w(Z),$=q.trace,ne=$.domain,H=$.orientation==="h",Q=$.node.pad,ee=$.node.thickness,ie=Y.width*(ne.x[1]-ne.x[0]),ae=Y.height*(ne.y[1]-ne.y[0]),ue=q._nodes,le=q._links,ge=q.circular;(U=ge?i.sankeyCircular().circularLinkGap(0):c.sankey()).iterations(s.sankeyIterations).size(H?[ie,ae]:[ae,ie]).nodeWidth(ee).nodePadding(Q).nodeId(function(Ee){return Ee.pointNumber}).nodes(ue).links(le);var fe,me,_e,we=U();for(var Te in U.nodePadding()=Re||(Ve=Re-Fe.y0)>1e-6&&(Fe.y0+=Ve,Fe.y1+=Ve),Re=Fe.y1+Q})}(function(Ee){var ze,Fe,Ve=Ee.map(function(Ye,nt){return{x0:Ye.x0,index:nt}}).sort(function(Ye,nt){return Ye.x0-nt.x0}),Ke=[],Re=-1,qe=-1/0;for(fe=0;feqe+ee&&(Re+=1,ze=We.x0),qe=We.x0,Ke[Re]||(Ke[Re]=[]),Ke[Re].push(We),Fe=ze-We.x0,We.x0+=Fe,We.x1+=Fe}return Ke}(ue=we.nodes)),U.update(we)}return{circular:ge,key:re,trace:$,guid:m.randstr(),horizontal:H,width:ie,height:ae,nodePad:$.node.pad,nodeLineColor:$.node.line.color,nodeLineWidth:$.node.line.width,linkLineColor:$.link.line.color,linkLineWidth:$.link.line.width,valueFormat:$.valueformat,valueSuffix:$.valuesuffix,textFont:$.textfont,translateX:ne.x[0]*Y.width+Y.margin.l,translateY:Y.height-ne.y[1]*Y.height+Y.margin.t,dragParallel:H?ae:ie,dragPerpendicular:H?ie:ae,arrangement:$.arrangement,sankey:U,graph:we,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function M(Y,Z,re){var U=u(Z.color),q=Z.source.label+"|"+Z.target.label+"__"+re;return Z.trace=Y.trace,Z.curveNumber=Y.trace.index,{circular:Y.circular,key:q,traceId:Y.key,pointNumber:Z.pointNumber,link:Z,tinyColorHue:d.tinyRGB(U),tinyColorAlpha:U.getAlpha(),linkPath:E,linkLineColor:Y.linkLineColor,linkLineWidth:Y.linkLineWidth,valueFormat:Y.valueFormat,valueSuffix:Y.valueSuffix,sankey:Y.sankey,parent:Y,interactionState:Y.interactionState,flow:Z.flow}}function E(){return function(Y){if(Y.link.circular)return Z=Y.link,re=Z.width/2,U=Z.circularPathData,Z.circularLinkType==="top"?"M "+U.targetX+" "+(U.targetY+re)+" L"+U.rightInnerExtent+" "+(U.targetY+re)+"A"+(U.rightLargeArcRadius+re)+" "+(U.rightSmallArcRadius+re)+" 0 0 1 "+(U.rightFullExtent-re)+" "+(U.targetY-U.rightSmallArcRadius)+"L"+(U.rightFullExtent-re)+" "+U.verticalRightInnerExtent+"A"+(U.rightLargeArcRadius+re)+" "+(U.rightLargeArcRadius+re)+" 0 0 1 "+U.rightInnerExtent+" "+(U.verticalFullExtent-re)+"L"+U.leftInnerExtent+" "+(U.verticalFullExtent-re)+"A"+(U.leftLargeArcRadius+re)+" "+(U.leftLargeArcRadius+re)+" 0 0 1 "+(U.leftFullExtent+re)+" "+U.verticalLeftInnerExtent+"L"+(U.leftFullExtent+re)+" "+(U.sourceY-U.leftSmallArcRadius)+"A"+(U.leftLargeArcRadius+re)+" "+(U.leftSmallArcRadius+re)+" 0 0 1 "+U.leftInnerExtent+" "+(U.sourceY+re)+"L"+U.sourceX+" "+(U.sourceY+re)+"L"+U.sourceX+" "+(U.sourceY-re)+"L"+U.leftInnerExtent+" "+(U.sourceY-re)+"A"+(U.leftLargeArcRadius-re)+" "+(U.leftSmallArcRadius-re)+" 0 0 0 "+(U.leftFullExtent-re)+" "+(U.sourceY-U.leftSmallArcRadius)+"L"+(U.leftFullExtent-re)+" "+U.verticalLeftInnerExtent+"A"+(U.leftLargeArcRadius-re)+" "+(U.leftLargeArcRadius-re)+" 0 0 0 "+U.leftInnerExtent+" "+(U.verticalFullExtent+re)+"L"+U.rightInnerExtent+" "+(U.verticalFullExtent+re)+"A"+(U.rightLargeArcRadius-re)+" "+(U.rightLargeArcRadius-re)+" 0 0 0 "+(U.rightFullExtent+re)+" "+U.verticalRightInnerExtent+"L"+(U.rightFullExtent+re)+" "+(U.targetY-U.rightSmallArcRadius)+"A"+(U.rightLargeArcRadius-re)+" "+(U.rightSmallArcRadius-re)+" 0 0 0 "+U.rightInnerExtent+" "+(U.targetY-re)+"L"+U.targetX+" "+(U.targetY-re)+"Z":"M "+U.targetX+" "+(U.targetY-re)+" L"+U.rightInnerExtent+" "+(U.targetY-re)+"A"+(U.rightLargeArcRadius+re)+" "+(U.rightSmallArcRadius+re)+" 0 0 0 "+(U.rightFullExtent-re)+" "+(U.targetY+U.rightSmallArcRadius)+"L"+(U.rightFullExtent-re)+" "+U.verticalRightInnerExtent+"A"+(U.rightLargeArcRadius+re)+" "+(U.rightLargeArcRadius+re)+" 0 0 0 "+U.rightInnerExtent+" "+(U.verticalFullExtent+re)+"L"+U.leftInnerExtent+" "+(U.verticalFullExtent+re)+"A"+(U.leftLargeArcRadius+re)+" "+(U.leftLargeArcRadius+re)+" 0 0 0 "+(U.leftFullExtent+re)+" "+U.verticalLeftInnerExtent+"L"+(U.leftFullExtent+re)+" "+(U.sourceY+U.leftSmallArcRadius)+"A"+(U.leftLargeArcRadius+re)+" "+(U.leftSmallArcRadius+re)+" 0 0 0 "+U.leftInnerExtent+" "+(U.sourceY-re)+"L"+U.sourceX+" "+(U.sourceY-re)+"L"+U.sourceX+" "+(U.sourceY+re)+"L"+U.leftInnerExtent+" "+(U.sourceY+re)+"A"+(U.leftLargeArcRadius-re)+" "+(U.leftSmallArcRadius-re)+" 0 0 1 "+(U.leftFullExtent-re)+" "+(U.sourceY+U.leftSmallArcRadius)+"L"+(U.leftFullExtent-re)+" "+U.verticalLeftInnerExtent+"A"+(U.leftLargeArcRadius-re)+" "+(U.leftLargeArcRadius-re)+" 0 0 1 "+U.leftInnerExtent+" "+(U.verticalFullExtent-re)+"L"+U.rightInnerExtent+" "+(U.verticalFullExtent-re)+"A"+(U.rightLargeArcRadius-re)+" "+(U.rightLargeArcRadius-re)+" 0 0 1 "+(U.rightFullExtent+re)+" "+U.verticalRightInnerExtent+"L"+(U.rightFullExtent+re)+" "+(U.targetY+U.rightSmallArcRadius)+"A"+(U.rightLargeArcRadius-re)+" "+(U.rightSmallArcRadius-re)+" 0 0 1 "+U.rightInnerExtent+" "+(U.targetY+re)+"L"+U.targetX+" "+(U.targetY+re)+"Z";var Z,re,U,q=Y.link.source.x1,$=Y.link.target.x0,ne=a(q,$),H=ne(.5),Q=ne(.5),ee=Y.link.y0-Y.link.width/2,ie=Y.link.y0+Y.link.width/2,ae=Y.link.y1-Y.link.width/2,ue=Y.link.y1+Y.link.width/2;return"M"+q+","+ee+"C"+H+","+ee+" "+Q+","+ae+" "+$+","+ae+"L"+$+","+ue+"C"+Q+","+ue+" "+H+","+ie+" "+q+","+ie+"Z"}}function D(Y,Z){var re=u(Z.color),U=s.nodePadAcross,q=Y.nodePad/2;Z.dx=Z.x1-Z.x0,Z.dy=Z.y1-Z.y0;var $=Z.dx,ne=Math.max(.5,Z.dy),H="node_"+Z.pointNumber;return Z.group&&(H=m.randstr()),Z.trace=Y.trace,Z.curveNumber=Y.trace.index,{index:Z.pointNumber,key:H,partOfGroup:Z.partOfGroup||!1,group:Z.group,traceId:Y.key,trace:Y.trace,node:Z,nodePad:Y.nodePad,nodeLineColor:Y.nodeLineColor,nodeLineWidth:Y.nodeLineWidth,textFont:Y.textFont,size:Y.horizontal?Y.height:Y.width,visibleWidth:Math.ceil($),visibleHeight:ne,zoneX:-U,zoneY:-q,zoneWidth:$+2*U,zoneHeight:ne+2*q,labelY:Y.horizontal?Z.dy/2+1:Z.dx/2+1,left:Z.originalLayer===1,sizeAcross:Y.width,forceLayouts:Y.forceLayouts,horizontal:Y.horizontal,darkBackground:re.getBrightness()<=128,tinyColorHue:d.tinyRGB(re),tinyColorAlpha:re.getAlpha(),valueFormat:Y.valueFormat,valueSuffix:Y.valueSuffix,sankey:Y.sankey,graph:Y.graph,arrangement:Y.arrangement,uniqueNodeLabelPathId:[Y.guid,Y.key,H].join("_"),interactionState:Y.interactionState,figure:Y}}function O(Y){Y.attr("transform",function(Z){return g(Z.node.x0.toFixed(3),Z.node.y0.toFixed(3))})}function R(Y){Y.call(O)}function z(Y,Z){Y.call(R),Z.attr("d",E())}function L(Y){Y.attr("width",function(Z){return Z.node.x1-Z.node.x0}).attr("height",function(Z){return Z.visibleHeight})}function P(Y){return Y.link.width>1||Y.linkLineWidth>0}function N(Y){return g(Y.translateX,Y.translateY)+(Y.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function B(Y,Z,re){Y.on(".basic",null).on("mouseover.basic",function(U){U.interactionState.dragInProgress||U.partOfGroup||(re.hover(this,U,Z),U.interactionState.hovered=[this,U])}).on("mousemove.basic",function(U){U.interactionState.dragInProgress||U.partOfGroup||(re.follow(this,U),U.interactionState.hovered=[this,U])}).on("mouseout.basic",function(U){U.interactionState.dragInProgress||U.partOfGroup||(re.unhover(this,U,Z),U.interactionState.hovered=!1)}).on("click.basic",function(U){U.interactionState.hovered&&(re.unhover(this,U,Z),U.interactionState.hovered=!1),U.interactionState.dragInProgress||U.partOfGroup||re.select(this,U,Z)})}function G(Y,Z,re,U){var q=l.behavior.drag().origin(function($){return{x:$.node.x0+$.visibleWidth/2,y:$.node.y0+$.visibleHeight/2}}).on("dragstart",function($){if($.arrangement!=="fixed"&&(m.ensureSingle(U._fullLayout._infolayer,"g","dragcover",function(H){U._fullLayout._dragCover=H}),m.raiseToTop(this),$.interactionState.dragInProgress=$.node,K($.node),$.interactionState.hovered&&(re.nodeEvents.unhover.apply(0,$.interactionState.hovered),$.interactionState.hovered=!1),$.arrangement==="snap")){var ne=$.traceId+"|"+$.key;$.forceLayouts[ne]?$.forceLayouts[ne].alpha(1):function(H,Q,ee,ie){(function(ue){for(var le=0;le0&&fe.forceLayouts[le].alpha(0)}}(0,Q,ae,ee)).stop()}(0,ne,$),function(H,Q,ee,ie,ae){window.requestAnimationFrame(function ue(){var le;for(le=0;le0)window.requestAnimationFrame(ue);else{var ge=ee.node.originalX;ee.node.x0=ge-ee.visibleWidth/2,ee.node.x1=ge+ee.visibleWidth/2,W(ee,ae)}})}(Y,Z,$,ne,U)}}).on("drag",function($){if($.arrangement!=="fixed"){var ne=l.event.x,H=l.event.y;$.arrangement==="snap"?($.node.x0=ne-$.visibleWidth/2,$.node.x1=ne+$.visibleWidth/2,$.node.y0=H-$.visibleHeight/2,$.node.y1=H+$.visibleHeight/2):($.arrangement==="freeform"&&($.node.x0=ne-$.visibleWidth/2,$.node.x1=ne+$.visibleWidth/2),H=Math.max(0,Math.min($.size-$.visibleHeight/2,H)),$.node.y0=H-$.visibleHeight/2,$.node.y1=H+$.visibleHeight/2),K($.node),$.arrangement!=="snap"&&($.sankey.update($.graph),z(Y.filter(te($)),Z))}}).on("dragend",function($){if($.arrangement!=="fixed"){$.interactionState.dragInProgress=!1;for(var ne=0;ne<$.node.childrenNodes.length;ne++)$.node.childrenNodes[ne].x=$.node.x,$.node.childrenNodes[ne].y=$.node.y;$.arrangement!=="snap"&&W($,U)}});Y.on(".drag",null).call(q)}function W(Y,Z){for(var re=[],U=[],q=0;qb&&G[_].gap;)_--;for(A=G[_].s,T=G.length-1;T>_;T--)G[T].s=A;for(;b<_;)if(G[++b].gap){for(T=b+1;G[T].gap;)T++;for(var Q=G[b-1][Y],ee=G[b-1].s,ie=(G[T].s-ee)/(G[T][Y]-Q);bR[g]&&g=0;i--){var s=r[i];if(s.type==="scatter"&&s.xaxis===l.xaxis&&s.yaxis===l.yaxis){s.opacity=void 0;break}}}}}},{}],934:[function(e,o,f){var r=e("../../lib"),a=e("../../registry"),l=e("./attributes"),c=e("./constants"),i=e("./subtypes"),s=e("./xy_defaults"),u=e("./period_defaults"),d=e("./stack_defaults"),h=e("./marker_defaults"),m=e("./line_defaults"),g=e("./line_shape_defaults"),p=e("./text_defaults"),v=e("./fillcolor_defaults"),y=e("../../lib").coercePattern;o.exports=function(x,w,k,b){function T(R,z){return r.coerce(x,w,l,R,z)}var _=s(x,w,b,T);if(_||(w.visible=!1),w.visible){u(x,w,b,T),T("xhoverformat"),T("yhoverformat");var S=d(x,w,b,T),A=!S&&_=Math.min(ge,fe)&&x<=Math.max(ge,fe)?0:1/0}var me=Math.max(3,le.mrc||0),_e=1-1/me,we=Math.abs(v.c2p(le.x)-x);return we=Math.min(ge,fe)&&w<=Math.max(ge,fe)?0:1/0}var me=Math.max(3,le.mrc||0),_e=1-1/me,we=Math.abs(y.c2p(le.y)-w);return weae!=(U=K[G][1])>=ae&&(Y=K[G-1][0],Z=K[G][0],U-re&&(te=Y+(Z-Y)*(ae-re)/(U-re),H=Math.min(H,te),Q=Math.max(Q,te)));H=Math.max(H,0),Q=Math.min(Q,v._length);var ue=i.defaultLine;return i.opacity(p.fillcolor)?ue=p.fillcolor:i.opacity((p.line||{}).color)&&(ue=p.line.color),r.extendFlat(u,{distance:u.maxHoverDistance,x0:H,x1:Q,y0:ae,y1:ae,color:ue,hovertemplate:!1}),delete u.index,p.text&&!Array.isArray(p.text)?u.text=String(p.text):u.text=p.name,[u]}}}},{"../../components/color":366,"../../components/fx":406,"../../lib":503,"../../registry":638,"./get_trace_color":937}],939:[function(e,o,f){var r=e("./subtypes");o.exports={hasLines:r.hasLines,hasMarkers:r.hasMarkers,hasText:r.hasText,isBubble:r.isBubble,attributes:e("./attributes"),supplyDefaults:e("./defaults"),crossTraceDefaults:e("./cross_trace_defaults"),calc:e("./calc").calc,crossTraceCalc:e("./cross_trace_calc"),arraysToCalcdata:e("./arrays_to_calcdata"),plot:e("./plot"),colorbar:e("./marker_colorbar"),formatLabels:e("./format_labels"),style:e("./style").style,styleOnSelect:e("./style").styleOnSelect,hoverPoints:e("./hover"),selectPoints:e("./select"),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:e("../../plots/cartesian"),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}},{"../../plots/cartesian":568,"./arrays_to_calcdata":926,"./attributes":927,"./calc":928,"./cross_trace_calc":932,"./cross_trace_defaults":933,"./defaults":934,"./format_labels":936,"./hover":938,"./marker_colorbar":945,"./plot":948,"./select":949,"./style":951,"./subtypes":952}],940:[function(e,o,f){var r=e("../../lib").isArrayOrTypedArray,a=e("../../components/colorscale/helpers").hasColorscale,l=e("../../components/colorscale/defaults");o.exports=function(c,i,s,u,d,h){var m=(c.marker||{}).color;d("line.color",s),a(c,"line")?l(c,i,u,d,{prefix:"line.",cLetter:"c"}):d("line.color",!r(m)&&m||s),d("line.width"),(h||{}).noDash||d("line.dash")}},{"../../components/colorscale/defaults":376,"../../components/colorscale/helpers":377,"../../lib":503}],941:[function(e,o,f){var r=e("../../constants/numerical"),a=r.BADNUM,l=r.LOG_CLIP,c=l+.5,i=l-.5,s=e("../../lib"),u=s.segmentsIntersect,d=s.constrain,h=e("./constants");o.exports=function(m,g){var p,v,y,x,w,k,b,T,_,S,A,M,E,D,O,R,z,L,P=g.xaxis,N=g.yaxis,B=P.type==="log",G=N.type==="log",W=P._length,K=N._length,te=g.connectGaps,Y=g.baseTolerance,Z=g.shape,re=Z==="linear",U=g.fill&&g.fill!=="none",q=[],$=h.minTolerance,ne=m.length,H=new Array(ne),Q=0;function ee(Ye){var nt=m[Ye];if(!nt)return!1;var ft=g.linearized?P.l2p(nt.x):P.c2p(nt.x),vt=g.linearized?N.l2p(nt.y):N.c2p(nt.y);if(ft===a){if(B&&(ft=P.c2p(nt.x,!0)),ft===a)return!1;G&&vt===a&&(ft*=Math.abs(P._m*K*(P._m>0?c:i)/(N._m*W*(N._m>0?c:i)))),ft*=1e3}if(vt===a){if(G&&(vt=N.c2p(nt.y,!0)),vt===a)return!1;vt*=1e3}return[ft,vt]}function ie(Ye,nt,ft,vt){var Pt=ft-Ye,At=vt-nt,at=.5-Ye,et=.5-nt,Ot=Pt*Pt+At*At,Wt=Pt*at+At*et;if(Wt>0&&Wtye||Ye[1]ke)return[d(Ye[0],de,ye),d(Ye[1],Me,ke)]}function Fe(Ye,nt){return Ye[0]===nt[0]&&(Ye[0]===de||Ye[0]===ye)||Ye[1]===nt[1]&&(Ye[1]===Me||Ye[1]===ke)||void 0}function Ve(Ye,nt,ft){return function(vt,Pt){var At=ze(vt),at=ze(Pt),et=[];if(At&&at&&Fe(At,at))return et;At&&et.push(At),at&&et.push(at);var Ot=2*s.constrain((vt[Ye]+Pt[Ye])/2,nt,ft)-((At||vt)[Ye]+(at||Pt)[Ye]);return Ot&&((At&&at?Ot>0==At[Ye]>at[Ye]?At:at:At||at)[Ye]+=Ot),et}}function Ke(Ye){var nt=Ye[0],ft=Ye[1],vt=nt===H[Q-1][0],Pt=ft===H[Q-1][1];if(!vt||!Pt)if(Q>1){var At=nt===H[Q-2][0],at=ft===H[Q-2][1];vt&&(nt===de||nt===ye)&&At?at?Q--:H[Q-1]=Ye:Pt&&(ft===Me||ft===ke)&&at?At?Q--:H[Q-1]=Ye:H[Q++]=Ye}else H[Q++]=Ye}function Re(Ye){H[Q-1][0]!==Ye[0]&&H[Q-1][1]!==Ye[1]&&Ke([fe,me]),Ke(Ye),_e=null,fe=me=0}function qe(Ye){if(z=Ye[0]/W,L=Ye[1]/K,le=Ye[0]ye?ye:0,ge=Ye[1]ke?ke:0,le||ge){if(Q)if(_e){var nt=Te(_e,Ye);nt.length>1&&(Re(nt[0]),H[Q++]=nt[1])}else we=Te(H[Q-1],Ye)[0],H[Q++]=we;else H[Q++]=[le||Ye[0],ge||Ye[1]];var ft=H[Q-1];le&&ge&&(ft[0]!==le||ft[1]!==ge)?(_e&&(fe!==le&&me!==ge?Ke(fe&&me?(vt=_e,At=(Pt=Ye)[0]-vt[0],at=(Pt[1]-vt[1])/At,(vt[1]*Pt[0]-Pt[1]*vt[0])/At>0?[at>0?de:ye,ke]:[at>0?ye:de,Me]):[fe||le,me||ge]):fe&&me&&Ke([fe,me])),Ke([le,ge])):fe-le&&me-ge&&Ke([le||fe,ge||me]),_e=Ye,fe=le,me=ge}else _e&&Re(Te(_e,Ye)[0]),H[Q++]=Ye;var vt,Pt,At,at}for(Z==="linear"||Z==="spline"?Te=function(Ye,nt){for(var ft=[],vt=0,Pt=0;Pt<4;Pt++){var At=Ee[Pt],at=u(Ye[0],Ye[1],nt[0],nt[1],At[0],At[1],At[2],At[3]);at&&(!vt||Math.abs(at.x-ft[0][0])>1||Math.abs(at.y-ft[0][1])>1)&&(at=[at.x,at.y],vt&&ue(at,Ye)ae(k,We))break;y=k,(E=_[0]*T[0]+_[1]*T[1])>A?(A=E,x=k,b=!1):E=m.length||!k)break;qe(k),v=k}}else qe(x)}_e&&Ke([fe||_e[0],me||_e[1]]),q.push(H.slice(0,Q))}return q}},{"../../constants/numerical":479,"../../lib":503,"./constants":931}],942:[function(e,o,f){o.exports=function(r,a,l){l("line.shape")==="spline"&&l("line.smoothing")}},{}],943:[function(e,o,f){var r={tonextx:1,tonexty:1,tonext:1};o.exports=function(a,l,c){var i,s,u,d,h,m={},g=!1,p=-1,v=0,y=-1;for(s=0;s=0?h=y:(h=y=v,v++),h0?Math.max(h,s):0}}},{"fast-isnumeric":190}],945:[function(e,o,f){o.exports={container:"marker",min:"cmin",max:"cmax"}},{}],946:[function(e,o,f){var r=e("../../components/color"),a=e("../../components/colorscale/helpers").hasColorscale,l=e("../../components/colorscale/defaults"),c=e("./subtypes");o.exports=function(i,s,u,d,h,m){var g=c.isBubble(i),p=(i.line||{}).color;m=m||{},p&&(u=p),h("marker.symbol"),h("marker.opacity",g?.7:1),h("marker.size"),h("marker.color",u),a(i,"marker")&&l(i,s,d,h,{prefix:"marker.",cLetter:"c"}),m.noSelect||(h("selected.marker.color"),h("unselected.marker.color"),h("selected.marker.size"),h("unselected.marker.size")),m.noLine||(h("marker.line.color",p&&!Array.isArray(p)&&s.marker.color!==p?p:g?r.background:r.defaultLine),a(i,"marker.line")&&l(i,s,d,h,{prefix:"marker.line.",cLetter:"c"}),h("marker.line.width",g?1:0)),g&&(h("marker.sizeref"),h("marker.sizemin"),h("marker.sizemode")),m.gradient&&h("marker.gradient.type")!=="none"&&h("marker.gradient.color")}},{"../../components/color":366,"../../components/colorscale/defaults":376,"../../components/colorscale/helpers":377,"./subtypes":952}],947:[function(e,o,f){var r=e("../../lib").dateTick0,a=e("../../constants/numerical").ONEWEEK;function l(c,i){return r(i,c%a==0?1:0)}o.exports=function(c,i,s,u,d){if(d||(d={x:!0,y:!0}),d.x){var h=u("xperiod");h&&(u("xperiod0",l(h,i.xcalendar)),u("xperiodalignment"))}if(d.y){var m=u("yperiod");m&&(u("yperiod0",l(m,i.ycalendar)),u("yperiodalignment"))}}},{"../../constants/numerical":479,"../../lib":503}],948:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../registry"),l=e("../../lib"),c=l.ensureSingle,i=l.identity,s=e("../../components/drawing"),u=e("./subtypes"),d=e("./line_points"),h=e("./link_traces"),m=e("../../lib/polygon").tester;function g(p,v,y,x,w,k,b){var T;(function(ye,Me,ke,Ee,ze){var Fe=ke.xaxis,Ve=ke.yaxis,Ke=r.extent(l.simpleMap(Fe.range,Fe.r2c)),Re=r.extent(l.simpleMap(Ve.range,Ve.r2c)),qe=Ee[0].trace;if(!!u.hasMarkers(qe)){var We=qe.marker.maxdisplayed;if(We!==0){var Ye=Ee.filter(function(Pt){return Pt.x>=Ke[0]&&Pt.x<=Ke[1]&&Pt.y>=Re[0]&&Pt.y<=Re[1]}),nt=Math.ceil(Ye.length/We),ft=0;ze.forEach(function(Pt,At){var at=Pt[0].trace;u.hasMarkers(at)&&at.marker.maxdisplayed>0&&At0;function S(ye){return _?ye.transition():ye}var A=y.xaxis,M=y.yaxis,E=x[0].trace,D=E.line,O=r.select(k),R=c(O,"g","errorbars"),z=c(O,"g","lines"),L=c(O,"g","points"),P=c(O,"g","text");if(a.getComponentMethod("errorbars","plot")(p,R,y,b),E.visible===!0){var N,B;S(O).style("opacity",E.opacity);var G=E.fill.charAt(E.fill.length-1);G!=="x"&&G!=="y"&&(G=""),x[0][y.isRangePlot?"nodeRangePlot3":"node3"]=O;var W,K,te="",Y=[],Z=E._prevtrace;Z&&(te=Z._prevRevpath||"",B=Z._nextFill,Y=Z._polygons);var re,U,q,$,ne,H,Q,ee="",ie="",ae=[],ue=l.noop;if(N=E._ownFill,u.hasLines(E)||E.fill!=="none"){for(B&&B.datum(x),["hv","vh","hvh","vhv"].indexOf(D.shape)!==-1?(re=s.steps(D.shape),U=s.steps(D.shape.split("").reverse().join(""))):re=U=D.shape==="spline"?function(ye){var Me=ye[ye.length-1];return ye.length>1&&ye[0][0]===Me[0]&&ye[0][1]===Me[1]?s.smoothclosed(ye.slice(1),D.smoothing):s.smoothopen(ye,D.smoothing)}:function(ye){return"M"+ye.join("L")},q=function(ye){return U(ye.reverse())},ae=d(x,{xaxis:A,yaxis:M,connectGaps:E.connectgaps,baseTolerance:Math.max(D.width||1,3)/4,shape:D.shape,simplify:D.simplify,fill:E.fill}),Q=E._polygons=new Array(ae.length),T=0;T1){var ke=r.select(this);if(ke.datum(x),ye)S(ke.style("opacity",0).attr("d",W).call(s.lineGroupStyle)).style("opacity",1);else{var Ee=S(ke);Ee.attr("d",W),s.singleLineStyle(x,Ee)}}}}}var le=z.selectAll(".js-line").data(ae);S(le.exit()).style("opacity",0).remove(),le.each(ue(!1)),le.enter().append("path").classed("js-line",!0).style("vector-effect","non-scaling-stroke").call(s.lineGroupStyle).each(ue(!0)),s.setClipUrl(le,y.layerClipId,p),ae.length?(N?(N.datum(x),$&&H&&(G?(G==="y"?$[1]=H[1]=M.c2p(0,!0):G==="x"&&($[0]=H[0]=A.c2p(0,!0)),S(N).attr("d","M"+H+"L"+$+"L"+ee.substr(1)).call(s.singleFillStyle,p)):S(N).attr("d",ee+"Z").call(s.singleFillStyle,p))):B&&(E.fill.substr(0,6)==="tonext"&&ee&&te?(E.fill==="tonext"?S(B).attr("d",ee+"Z"+te+"Z").call(s.singleFillStyle,p):S(B).attr("d",ee+"L"+te.substr(1)+"Z").call(s.singleFillStyle,p),E._polygons=E._polygons.concat(Y)):(fe(B),E._polygons=null)),E._prevRevpath=ie,E._prevPolygons=Q):(N?fe(N):B&&fe(B),E._polygons=E._prevRevpath=E._prevPolygons=null),L.datum(x),P.datum(x),function(ye,Me,ke){var Ee,ze=ke[0].trace,Fe=u.hasMarkers(ze),Ve=u.hasText(ze),Ke=Oe(ze),Re=de,qe=de;if(Fe||Ve){var We=i,Ye=ze.stackgroup,nt=Ye&&p._fullLayout._scatterStackOpts[A._id+M._id][Ye].stackgaps==="infer zero";ze.marker.maxdisplayed||ze._needsCull?We=nt?_e:me:Ye&&!nt&&(We=we),Fe&&(Re=We),Ve&&(qe=We)}var ft,vt=(Ee=ye.selectAll("path.point").data(Re,Ke)).enter().append("path").classed("point",!0);_&&vt.call(s.pointStyle,ze,p).call(s.translatePoints,A,M).style("opacity",0).transition().style("opacity",1),Ee.order(),Fe&&(ft=s.makePointStyleFns(ze)),Ee.each(function(Pt){var At=r.select(this),at=S(At);s.translatePoint(Pt,at,A,M)?(s.singlePointStyle(Pt,at,ze,ft,p),y.layerClipId&&s.hideOutsideRangePoint(Pt,at,A,M,ze.xcalendar,ze.ycalendar),ze.customdata&&At.classed("plotly-customdata",Pt.data!==null&&Pt.data!==void 0)):at.remove()}),_?Ee.exit().transition().style("opacity",0).remove():Ee.exit().remove(),(Ee=Me.selectAll("g").data(qe,Ke)).enter().append("g").classed("textpoint",!0).append("text"),Ee.order(),Ee.each(function(Pt){var At=r.select(this),at=S(At.select("text"));s.translatePoint(Pt,at,A,M)?y.layerClipId&&s.hideOutsideRangePoint(Pt,At,A,M,ze.xcalendar,ze.ycalendar):At.remove()}),Ee.selectAll("text").call(s.textPointStyle,ze,p).each(function(Pt){var At=A.c2p(Pt.x),at=M.c2p(Pt.y);r.select(this).selectAll("tspan.line").each(function(){S(r.select(this)).attr({x:At,y:at})})}),Ee.exit().remove()}(L,P,x);var ge=E.cliponaxis===!1?null:y.layerClipId;s.setClipUrl(L,ge,p),s.setClipUrl(P,ge,p)}function fe(ye){S(ye).attr("d","M0,0Z")}function me(ye){return ye.filter(function(Me){return!Me.gap&&Me.vis})}function _e(ye){return ye.filter(function(Me){return Me.vis})}function we(ye){return ye.filter(function(Me){return!Me.gap})}function Te(ye){return ye.id}function Oe(ye){if(ye.ids)return Te}function de(){return!1}}o.exports=function(p,v,y,x,w,k){var b,T,_=!w,S=!!w&&w.duration>0,A=h(p,v,y);(b=x.selectAll("g.trace").data(A,function(M){return M[0].trace.uid})).enter().append("g").attr("class",function(M){return"trace scatter trace"+M[0].trace.uid}).style("stroke-miterlimit",2),b.order(),function(M,E,D){E.each(function(O){var R=c(r.select(this),"g","fills");s.setClipUrl(R,D.layerClipId,M);var z=O[0].trace,L=[];z._ownfill&&L.push("_ownFill"),z._nexttrace&&L.push("_nextFill");var P=R.selectAll("g").data(L,i);P.enter().append("g"),P.exit().each(function(N){z[N]=null}).remove(),P.order().each(function(N){z[N]=c(r.select(this),"path","js-fill")})})}(p,b,v),S?(k&&(T=k()),r.transition().duration(w.duration).ease(w.easing).each("end",function(){T&&T()}).each("interrupt",function(){T&&T()}).each(function(){x.selectAll("g.trace").each(function(M,E){g(p,E,v,M,A,this,w)})})):b.each(function(M,E){g(p,E,v,M,A,this,w)}),_&&b.exit().remove(),x.selectAll("path:not([d])").remove()}},{"../../components/drawing":388,"../../lib":503,"../../lib/polygon":515,"../../registry":638,"./line_points":941,"./link_traces":943,"./subtypes":952,"@plotly/d3":58}],949:[function(e,o,f){var r=e("./subtypes");o.exports=function(a,l){var c,i,s,u,d=a.cd,h=a.xaxis,m=a.yaxis,g=[],p=d[0].trace;if(!r.hasMarkers(p)&&!r.hasText(p))return[];if(l===!1)for(c=0;c0){var y=s.c2l(p);s._lowerLogErrorBound||(s._lowerLogErrorBound=y),s._lowerErrorBound=Math.min(s._lowerLogErrorBound,y)}}else d[h]=[-m[0]*i,m[1]*i]}return d}o.exports=function(l,c,i){var s=[a(l.x,l.error_x,c[0],i.xaxis),a(l.y,l.error_y,c[1],i.yaxis),a(l.z,l.error_z,c[2],i.zaxis)],u=function(v){for(var y=0;y-1?-1:D.indexOf("right")>-1?1:0}function b(D){return D==null?0:D.indexOf("top")>-1?-1:D.indexOf("bottom")>-1?1:0}function T(D,O){return O(4*D)}function _(D){return g[D]}function S(D,O,R,z,L){var P=null;if(s.isArrayOrTypedArray(D)){P=[];for(var N=0;N=0){var W=function(K,te,Y){var Z,re=(Y+1)%3,U=(Y+2)%3,q=[],$=[];for(Z=0;Z=0&&p("surfacecolor",v||y);for(var x=["x","y","z"],w=0;w<3;++w){var k="projection."+x[w];p(k+".show")&&(p(k+".opacity"),p(k+".scale"))}var b=r.getComponentMethod("errorbars","supplyDefaults");b(d,h,v||y||m,{axis:"z"}),b(d,h,v||y||m,{axis:"y",inherit:"z"}),b(d,h,v||y||m,{axis:"x",inherit:"z"})}else h.visible=!1}},{"../../lib":503,"../../registry":638,"../scatter/line_defaults":940,"../scatter/marker_defaults":946,"../scatter/subtypes":952,"../scatter/text_defaults":953,"./attributes":955}],960:[function(e,o,f){o.exports={plot:e("./convert"),attributes:e("./attributes"),markerSymbols:e("../../constants/gl3d_markers"),supplyDefaults:e("./defaults"),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:e("./calc"),moduleType:"trace",name:"scatter3d",basePlotModule:e("../../plots/gl3d"),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}},{"../../constants/gl3d_markers":477,"../../plots/gl3d":598,"./attributes":955,"./calc":956,"./convert":958,"./defaults":959}],961:[function(e,o,f){var r=e("../scatter/attributes"),a=e("../../plots/attributes"),l=e("../../plots/template_attributes").hovertemplateAttrs,c=e("../../plots/template_attributes").texttemplateAttrs,i=e("../../components/colorscale/attributes"),s=e("../../lib/extend").extendFlat,u=r.marker,d=r.line,h=u.line;o.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:s({},r.mode,{dflt:"markers"}),text:s({},r.text,{}),texttemplate:c({editType:"plot"},{keys:["a","b","text"]}),hovertext:s({},r.hovertext,{}),line:{color:d.color,width:d.width,dash:d.dash,shape:s({},d.shape,{values:["linear","spline"]}),smoothing:d.smoothing,editType:"calc"},connectgaps:r.connectgaps,fill:s({},r.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:r.fillcolor,marker:s({symbol:u.symbol,opacity:u.opacity,maxdisplayed:u.maxdisplayed,size:u.size,sizeref:u.sizeref,sizemin:u.sizemin,sizemode:u.sizemode,line:s({width:h.width,editType:"calc"},i("marker.line")),gradient:u.gradient,editType:"calc"},i("marker")),textfont:r.textfont,textposition:r.textposition,selected:r.selected,unselected:r.unselected,hoverinfo:s({},a.hoverinfo,{flags:["a","b","text","name"]}),hoveron:r.hoveron,hovertemplate:l()}},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plots/attributes":550,"../../plots/template_attributes":633,"../scatter/attributes":927}],962:[function(e,o,f){var r=e("fast-isnumeric"),a=e("../scatter/colorscale_calc"),l=e("../scatter/arrays_to_calcdata"),c=e("../scatter/calc_selection"),i=e("../scatter/calc").calcMarkerSize,s=e("../carpet/lookup_carpetid");o.exports=function(u,d){var h=d._carpetTrace=s(u,d);if(h&&h.visible&&h.visible!=="legendonly"){var m;d.xaxis=h.xaxis,d.yaxis=h.yaxis;var g,p,v=d._length,y=new Array(v),x=!1;for(m=0;m")}return u}function T(_,S){var A;A=_.labelprefix&&_.labelprefix.length>0?_.labelprefix.replace(/ = $/,""):_._hovertitle,k.push(A+": "+S.toFixed(3)+_.labelsuffix)}}},{"../../lib":503,"../scatter/hover":938}],967:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../scatter/marker_colorbar"),formatLabels:e("./format_labels"),calc:e("./calc"),plot:e("./plot"),style:e("../scatter/style").style,styleOnSelect:e("../scatter/style").styleOnSelect,hoverPoints:e("./hover"),selectPoints:e("../scatter/select"),eventData:e("./event_data"),moduleType:"trace",name:"scattercarpet",basePlotModule:e("../../plots/cartesian"),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}},{"../../plots/cartesian":568,"../scatter/marker_colorbar":945,"../scatter/select":949,"../scatter/style":951,"./attributes":961,"./calc":962,"./defaults":963,"./event_data":964,"./format_labels":965,"./hover":966,"./plot":968}],968:[function(e,o,f){var r=e("../scatter/plot"),a=e("../../plots/cartesian/axes"),l=e("../../components/drawing");o.exports=function(c,i,s,u){var d,h,m,g=s[0][0].carpet,p={xaxis:a.getFromId(c,g.xaxis||"x"),yaxis:a.getFromId(c,g.yaxis||"y"),plot:i.plot};for(r(c,p,s,u),d=0;d")}(m,w,s,h[0].t.labels),s.hovertemplate=m.hovertemplate,[s]}}},{"../../components/fx":406,"../../constants/numerical":479,"../../lib":503,"../scatter/get_trace_color":937,"./attributes":969}],975:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../scatter/marker_colorbar"),formatLabels:e("./format_labels"),calc:e("./calc"),calcGeoJSON:e("./plot").calcGeoJSON,plot:e("./plot").plot,style:e("./style"),styleOnSelect:e("../scatter/style").styleOnSelect,hoverPoints:e("./hover"),eventData:e("./event_data"),selectPoints:e("./select"),moduleType:"trace",name:"scattergeo",basePlotModule:e("../../plots/geo"),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}},{"../../plots/geo":589,"../scatter/marker_colorbar":945,"../scatter/style":951,"./attributes":969,"./calc":970,"./defaults":971,"./event_data":972,"./format_labels":973,"./hover":974,"./plot":976,"./select":977,"./style":978}],976:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=e("../../lib/topojson_utils").getTopojsonFeatures,c=e("../../lib/geojson_utils"),i=e("../../lib/geo_location_utils"),s=e("../../plots/cartesian/autorange").findExtremes,u=e("../../constants/numerical").BADNUM,d=e("../scatter/calc").calcMarkerSize,h=e("../scatter/subtypes"),m=e("./style");o.exports={calcGeoJSON:function(g,p){var v,y,x=g[0].trace,w=p[x.geo],k=w._subplot,b=x._length;if(Array.isArray(x.locations)){var T=x.locationmode,_=T==="geojson-id"?i.extractTraceFeature(g):l(x,k.topojson);for(v=0;v=y,D=2*M,O={},R=_.makeCalcdata(k,"x"),z=S.makeCalcdata(k,"y"),L=i(k,_,"x",R),P=i(k,S,"y",z),N=L.vals,B=P.vals;k._x=N,k._y=B,k.xperiodalignment&&(k._origX=R,k._xStarts=L.starts,k._xEnds=L.ends),k.yperiodalignment&&(k._origY=z,k._yStarts=P.starts,k._yEnds=P.ends);var G=new Array(D),W=new Array(M);for(b=0;b1&&a.extendFlat(H.line,g.linePositions(Z,U,q)),H.errorX||H.errorY){var Q=g.errorBarPositions(Z,U,q,$,ne);H.errorX&&a.extendFlat(H.errorX,Q.x),H.errorY&&a.extendFlat(H.errorY,Q.y)}return H.text&&(a.extendFlat(H.text,{positions:q},g.textPosition(Z,U,H.text,H.marker)),a.extendFlat(H.textSel,{positions:q},g.textPosition(Z,U,H.text,H.markerSel)),a.extendFlat(H.textUnsel,{positions:q},g.textPosition(Z,U,H.text,H.markerUnsel))),H}(w,0,k,G,N,B),Y=p(w,A);return h(T,k),E?te.marker&&(K=te.marker.sizeAvg||Math.max(te.marker.size,3)):K=u(k,M),d(w,k,_,S,N,B,K),te.errorX&&x(k,_,te.errorX),te.errorY&&x(k,S,te.errorY),te.fill&&!Y.fill2d&&(Y.fill2d=!0),te.marker&&!Y.scatter2d&&(Y.scatter2d=!0),te.line&&!Y.line2d&&(Y.line2d=!0),!te.errorX&&!te.errorY||Y.error2d||(Y.error2d=!0),te.text&&!Y.glText&&(Y.glText=!0),te.marker&&(te.marker.snap=M),Y.lineOptions.push(te.line),Y.errorXOptions.push(te.errorX),Y.errorYOptions.push(te.errorY),Y.fillOptions.push(te.fill),Y.markerOptions.push(te.marker),Y.markerSelectedOptions.push(te.markerSel),Y.markerUnselectedOptions.push(te.markerUnsel),Y.textOptions.push(te.text),Y.textSelectedOptions.push(te.textSel),Y.textUnselectedOptions.push(te.textUnsel),Y.selectBatch.push([]),Y.unselectBatch.push([]),O._scene=Y,O.index=Y.count,O.x=N,O.y=B,O.positions=G,Y.count++,[{x:!1,y:!1,t:O,trace:k}]}},{"../../constants/numerical":479,"../../lib":503,"../../plots/cartesian/align_period":551,"../../plots/cartesian/autorange":553,"../../plots/cartesian/axis_ids":558,"../scatter/calc":928,"../scatter/colorscale_calc":930,"./constants":982,"./convert":983,"./scene_update":991,"@plotly/point-cluster":59}],982:[function(e,o,f){o.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],983:[function(e,o,f){var r=e("fast-isnumeric"),a=e("svg-path-sdf"),l=e("color-normalize"),c=e("../../registry"),i=e("../../lib"),s=e("../../components/drawing"),u=e("../../plots/cartesian/axis_ids"),d=e("../../lib/gl_format_color").formatColor,h=e("../scatter/subtypes"),m=e("../scatter/make_bubble_size_func"),g=e("./helpers"),p=e("./constants"),v=e("../../constants/interactions").DESELECTDIM,y={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},x=e("../../components/fx/helpers").appendArrayPointValue;function w(R,z){var L,P=R._fullLayout,N=z._length,B=z.textfont,G=z.textposition,W=Array.isArray(G)?G:[G],K=B.color,te=B.size,Y=B.family,Z={},re=R._context.plotGlPixelRatio,U=z.texttemplate;if(U){Z.text=[];var q=P._d3locale,$=Array.isArray(U),ne=$?Math.min(U.length,N):N,H=$?function(ge){return U[ge]}:function(){return U};for(L=0;Lp.TOO_MANY_POINTS||h.hasMarkers(z)?"rect":"round";if(te&&z.connectgaps){var Z=P[0],re=P[1];for(N=0;N1?K[N]:K[0]:K,U=Array.isArray(te)?te.length>1?te[N]:te[0]:te,q=y[re],$=y[U],ne=Y?Y/.8+1:0,H=-$*ne-.5*$;G.offset[N]=[q*ne/Z,H/Z]}}return G}}},{"../../components/drawing":388,"../../components/fx/helpers":402,"../../constants/interactions":478,"../../lib":503,"../../lib/gl_format_color":499,"../../plots/cartesian/axis_ids":558,"../../registry":638,"../scatter/make_bubble_size_func":944,"../scatter/subtypes":952,"./constants":982,"./helpers":987,"color-normalize":89,"fast-isnumeric":190,"svg-path-sdf":310}],984:[function(e,o,f){var r=e("../../lib"),a=e("../../registry"),l=e("./helpers"),c=e("./attributes"),i=e("../scatter/constants"),s=e("../scatter/subtypes"),u=e("../scatter/xy_defaults"),d=e("../scatter/period_defaults"),h=e("../scatter/marker_defaults"),m=e("../scatter/line_defaults"),g=e("../scatter/fillcolor_defaults"),p=e("../scatter/text_defaults");o.exports=function(v,y,x,w){function k(D,O){return r.coerce(v,y,c,D,O)}var b=!!v.marker&&l.isOpenSymbol(v.marker.symbol),T=s.isBubble(v),_=u(v,y,w,k);if(_){d(v,y,w,k),k("xhoverformat"),k("yhoverformat");var S=_100},f.isDotSymbol=function(a){return typeof a=="string"?r.DOT_RE.test(a):a>200}},{"./constants":982}],988:[function(e,o,f){var r=e("../../registry"),a=e("../../lib"),l=e("../scatter/get_trace_color");function c(i,s,u,d){var h=i.xa,m=i.ya,g=i.distance,p=i.dxy,v=i.index,y={pointNumber:v,x:s[v],y:u[v]};y.tx=Array.isArray(d.text)?d.text[v]:d.text,y.htx=Array.isArray(d.hovertext)?d.hovertext[v]:d.hovertext,y.data=Array.isArray(d.customdata)?d.customdata[v]:d.customdata,y.tp=Array.isArray(d.textposition)?d.textposition[v]:d.textposition;var x=d.textfont;x&&(y.ts=a.isArrayOrTypedArray(x.size)?x.size[v]:x.size,y.tc=Array.isArray(x.color)?x.color[v]:x.color,y.tf=Array.isArray(x.family)?x.family[v]:x.family);var w=d.marker;w&&(y.ms=a.isArrayOrTypedArray(w.size)?w.size[v]:w.size,y.mo=a.isArrayOrTypedArray(w.opacity)?w.opacity[v]:w.opacity,y.mx=a.isArrayOrTypedArray(w.symbol)?w.symbol[v]:w.symbol,y.mc=a.isArrayOrTypedArray(w.color)?w.color[v]:w.color);var k=w&&w.line;k&&(y.mlc=Array.isArray(k.color)?k.color[v]:k.color,y.mlw=a.isArrayOrTypedArray(k.width)?k.width[v]:k.width);var b=w&&w.gradient;b&&b.type!=="none"&&(y.mgt=Array.isArray(b.type)?b.type[v]:b.type,y.mgc=Array.isArray(b.color)?b.color[v]:b.color);var T=h.c2p(y.x,!0),_=m.c2p(y.y,!0),S=y.mrc||1,A=d.hoverlabel;A&&(y.hbg=Array.isArray(A.bgcolor)?A.bgcolor[v]:A.bgcolor,y.hbc=Array.isArray(A.bordercolor)?A.bordercolor[v]:A.bordercolor,y.hts=a.isArrayOrTypedArray(A.font.size)?A.font.size[v]:A.font.size,y.htc=Array.isArray(A.font.color)?A.font.color[v]:A.font.color,y.htf=Array.isArray(A.font.family)?A.font.family[v]:A.font.family,y.hnl=a.isArrayOrTypedArray(A.namelength)?A.namelength[v]:A.namelength);var M=d.hoverinfo;M&&(y.hi=Array.isArray(M)?M[v]:M);var E=d.hovertemplate;E&&(y.ht=Array.isArray(E)?E[v]:E);var D={};D[i.index]=y;var O=d._origX,R=d._origY,z=a.extendFlat({},i,{color:l(d,y),x0:T-S,x1:T+S,xLabelVal:O?O[v]:y.x,y0:_-S,y1:_+S,yLabelVal:R?R[v]:y.y,cd:D,distance:g,spikeDistance:p,hovertemplate:y.ht});return y.htx?z.text=y.htx:y.tx?z.text=y.tx:d.text&&(z.text=d.text),a.fillText(y,d,z),r.getComponentMethod("errorbars","hoverInfo")(y,d,z),z}o.exports={hoverPoints:function(i,s,u,d){var h,m,g,p,v,y,x,w,k,b,T=i.cd,_=T[0].t,S=T[0].trace,A=i.xa,M=i.ya,E=_.x,D=_.y,O=A.c2p(s),R=M.c2p(u),z=i.distance;if(_.tree){var L=A.p2c(O-z),P=A.p2c(O+z),N=M.p2c(R-z),B=M.p2c(R+z);h=d==="x"?_.tree.range(Math.min(L,P),Math.min(M._rl[0],M._rl[1]),Math.max(L,P),Math.max(M._rl[0],M._rl[1])):_.tree.range(Math.min(L,P),Math.min(N,B),Math.max(L,P),Math.max(N,B))}else h=_.ids;var G=z;if(d==="x"){var W=!!S.xperiodalignment,K=!!S.yperiodalignment;for(y=0;y=Math.min(te,Y)&&O<=Math.max(te,Y)?0:1/0}if(x=Math.min(Z,re)&&R<=Math.max(Z,re)?0:1/0}b=Math.sqrt(x*x+w*w),g=h[y]}}}else for(y=h.length-1;y>-1;y--)p=E[m=h[y]],v=D[m],x=A.c2p(p)-O,w=M.c2p(v)-R,(k=Math.sqrt(x*x+w*w))T.glText.length){var E=A-T.glText.length;for(w=0;wie&&(isNaN(ee[ae])||isNaN(ee[ae+1]));)ae-=2;Q.positions=ee.slice(ie,ae+2)}return Q}),T.line2d.update(T.lineOptions)),T.error2d){var O=(T.errorXOptions||[]).concat(T.errorYOptions||[]);T.error2d.update(O)}T.scatter2d&&T.scatter2d.update(T.markerOptions),T.fillOrder=i.repeat(null,A),T.fill2d&&(T.fillOptions=T.fillOptions.map(function(Q,ee){var ie=x[ee];if(Q&&ie&&ie[0]&&ie[0].trace){var ae,ue,le=ie[0],ge=le.trace,fe=le.t,me=T.lineOptions[ee],_e=[];ge._ownfill&&_e.push(ee),ge._nexttrace&&_e.push(ee+1),_e.length&&(T.fillOrder[ee]=_e);var we,Te,Oe=[],de=me&&me.positions||fe.positions;if(ge.fill==="tozeroy"){for(we=0;wewe&&isNaN(de[Te+1]);)Te-=2;de[we+1]!==0&&(Oe=[de[we],0]),Oe=Oe.concat(de.slice(we,Te+2)),de[Te+1]!==0&&(Oe=Oe.concat([de[Te],0]))}else if(ge.fill==="tozerox"){for(we=0;wewe&&isNaN(de[Te]);)Te-=2;de[we]!==0&&(Oe=[0,de[we+1]]),Oe=Oe.concat(de.slice(we,Te+2)),de[Te]!==0&&(Oe=Oe.concat([0,de[Te+1]]))}else if(ge.fill==="toself"||ge.fill==="tonext"){for(Oe=[],ae=0,Q.splitNull=!0,ue=0;ue-1;for(w=0;w")}function w(k){return k+"\xB0"}}o.exports={hoverPoints:function(u,d,h){var m=u.cd,g=m[0].trace,p=u.xa,v=u.ya,y=u.subplot,x=360*(d>=0?Math.floor((d+180)/360):Math.ceil((d-180)/360)),w=d-x;if(r.getClosest(m,function(D){var O=D.lonlat;if(O[0]===i)return 1/0;var R=a.modHalf(O[0],360),z=O[1],L=y.project([R,z]),P=L.x-p.c2p([w,z]),N=L.y-v.c2p([R,h]),B=Math.max(3,D.mrc||0);return Math.max(Math.sqrt(P*P+N*N)-B,1-3/B)},u),u.index!==!1){var k=m[u.index],b=k.lonlat,T=[a.modHalf(b[0],360)+x,b[1]],_=p.c2p(T),S=v.c2p(T),A=k.mrc||1;u.x0=_-A,u.x1=_+A,u.y0=S-A,u.y1=S+A;var M={};M[g.subplot]={_subplot:y};var E=g._module.formatLabels(k,g,M);return u.lonLabel=E.lonLabel,u.latLabel=E.latLabel,u.color=l(g,k),u.extraText=s(g,k,m[0].t.labels),u.hovertemplate=g.hovertemplate,[u]}},getExtraText:s}},{"../../components/fx":406,"../../constants/numerical":479,"../../lib":503,"../scatter/get_trace_color":937}],999:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../scatter/marker_colorbar"),formatLabels:e("./format_labels"),calc:e("../scattergeo/calc"),plot:e("./plot"),hoverPoints:e("./hover").hoverPoints,eventData:e("./event_data"),selectPoints:e("./select"),styleOnSelect:function(r,a){a&&a[0].trace._glTrace.update(a)},moduleType:"trace",name:"scattermapbox",basePlotModule:e("../../plots/mapbox"),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}},{"../../plots/mapbox":613,"../scatter/marker_colorbar":945,"../scattergeo/calc":970,"./attributes":993,"./defaults":995,"./event_data":996,"./format_labels":997,"./hover":998,"./plot":1e3,"./select":1001}],1e3:[function(e,o,f){var r=e("./convert"),a=e("../../plots/mapbox/constants").traceLayerPrefix,l=["fill","line","circle","symbol"];function c(s,u){this.type="scattermapbox",this.subplot=s,this.uid=u,this.sourceIds={fill:"source-"+u+"-fill",line:"source-"+u+"-line",circle:"source-"+u+"-circle",symbol:"source-"+u+"-symbol"},this.layerIds={fill:a+u+"-fill",line:a+u+"-line",circle:a+u+"-circle",symbol:a+u+"-symbol"},this.below=null}var i=c.prototype;i.addSource=function(s,u){this.subplot.map.addSource(this.sourceIds[s],{type:"geojson",data:u.geojson})},i.setSourceData=function(s,u){this.subplot.map.getSource(this.sourceIds[s]).setData(u.geojson)},i.addLayer=function(s,u,d){this.subplot.addLayer({type:s,id:this.layerIds[s],source:this.sourceIds[s],layout:u.layout,paint:u.paint},d)},i.update=function(s){var u,d,h,m=this.subplot,g=m.map,p=r(m.gd,s),v=m.belowLookup["trace-"+this.uid];if(v!==this.below){for(u=l.length-1;u>=0;u--)d=l[u],g.removeLayer(this.layerIds[d]);for(u=0;u=0;u--){var d=l[u];s.removeLayer(this.layerIds[d]),s.removeSource(this.sourceIds[d])}},o.exports=function(s,u){for(var d=u[0].trace,h=new c(s,d.uid),m=r(s.gd,u),g=h.below=s.belowLookup["trace-"+d.uid],p=0;p")}}o.exports={hoverPoints:function(l,c,i,s){var u=r(l,c,i,s);if(u&&u[0].index!==!1){var d=u[0];if(d.index===void 0)return u;var h=l.subplot,m=d.cd[d.index],g=d.trace;if(h.isPtInside(m))return d.xLabelVal=void 0,d.yLabelVal=void 0,a(m,g,h,d),d.hovertemplate=g.hovertemplate,u}},makeHoverPointText:a}},{"../scatter/hover":938}],1007:[function(e,o,f){o.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:e("../../plots/polar"),categories:["polar","symbols","showLegend","scatter-like"],attributes:e("./attributes"),supplyDefaults:e("./defaults").supplyDefaults,colorbar:e("../scatter/marker_colorbar"),formatLabels:e("./format_labels"),calc:e("./calc"),plot:e("./plot"),style:e("../scatter/style").style,styleOnSelect:e("../scatter/style").styleOnSelect,hoverPoints:e("./hover").hoverPoints,selectPoints:e("../scatter/select"),meta:{}}},{"../../plots/polar":622,"../scatter/marker_colorbar":945,"../scatter/select":949,"../scatter/style":951,"./attributes":1002,"./calc":1003,"./defaults":1004,"./format_labels":1005,"./hover":1006,"./plot":1008}],1008:[function(e,o,f){var r=e("../scatter/plot"),a=e("../../constants/numerical").BADNUM;o.exports=function(l,c,i){for(var s=c.layers.frontplot.select("g.scatterlayer"),u={xaxis:c.xaxis,yaxis:c.yaxis,plot:c.framework,layerClipId:c._hasClipOnAxisFalse?c.clipIds.forTraces:null},d=c.radialAxis,h=c.angularAxis,m=0;m=u&&(A.marker.cluster=b.tree),A.marker&&(A.markerSel.positions=A.markerUnsel.positions=A.marker.positions=D),A.line&&D.length>1&&s.extendFlat(A.line,i.linePositions(d,k,D)),A.text&&(s.extendFlat(A.text,{positions:D},i.textPosition(d,k,A.text,A.marker)),s.extendFlat(A.textSel,{positions:D},i.textPosition(d,k,A.text,A.markerSel)),s.extendFlat(A.textUnsel,{positions:D},i.textPosition(d,k,A.text,A.markerUnsel))),A.fill&&!v.fill2d&&(v.fill2d=!0),A.marker&&!v.scatter2d&&(v.scatter2d=!0),A.line&&!v.line2d&&(v.line2d=!0),A.text&&!v.glText&&(v.glText=!0),v.lineOptions.push(A.line),v.fillOptions.push(A.fill),v.markerOptions.push(A.marker),v.markerSelectedOptions.push(A.markerSel),v.markerUnselectedOptions.push(A.markerUnsel),v.textOptions.push(A.text),v.textSelectedOptions.push(A.textSel),v.textUnselectedOptions.push(A.textUnsel),v.selectBatch.push([]),v.unselectBatch.push([]),b.x=O,b.y=R,b.rawx=O,b.rawy=R,b.r=_,b.theta=S,b.positions=D,b._scene=v,b.index=v.count,v.count++}}),l(d,h,m)}},o.exports.reglPrecompiled={}},{"../../lib":503,"../scattergl/constants":982,"../scattergl/convert":983,"../scattergl/plot":990,"../scattergl/scene_update":991,"@plotly/point-cluster":59,"fast-isnumeric":190}],1017:[function(e,o,f){var r=e("../../plots/template_attributes").hovertemplateAttrs,a=e("../../plots/template_attributes").texttemplateAttrs,l=e("../../lib/extend").extendFlat,c=e("../scatter/attributes"),i=e("../../plots/attributes"),s=c.line;o.exports={mode:c.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:c.text,texttemplate:a({editType:"plot"},{keys:["real","imag","text"]}),hovertext:c.hovertext,line:{color:s.color,width:s.width,dash:s.dash,shape:l({},s.shape,{values:["linear","spline"]}),smoothing:s.smoothing,editType:"calc"},connectgaps:c.connectgaps,marker:c.marker,cliponaxis:l({},c.cliponaxis,{dflt:!1}),textposition:c.textposition,textfont:c.textfont,fill:l({},c.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:c.fillcolor,hoverinfo:l({},i.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:c.hoveron,hovertemplate:r(),selected:c.selected,unselected:c.unselected}},{"../../lib/extend":493,"../../plots/attributes":550,"../../plots/template_attributes":633,"../scatter/attributes":927}],1018:[function(e,o,f){var r=e("fast-isnumeric"),a=e("../../constants/numerical").BADNUM,l=e("../scatter/colorscale_calc"),c=e("../scatter/arrays_to_calcdata"),i=e("../scatter/calc_selection"),s=e("../scatter/calc").calcMarkerSize;o.exports=function(u,d){for(var h=u._fullLayout,m=d.subplot,g=h[m].realaxis,p=h[m].imaginaryaxis,v=g.makeCalcdata(d,"real"),y=p.makeCalcdata(d,"imag"),x=d._length,w=new Array(x),k=0;k")}}o.exports={hoverPoints:function(l,c,i,s){var u=r(l,c,i,s);if(u&&u[0].index!==!1){var d=u[0];if(d.index===void 0)return u;var h=l.subplot,m=d.cd[d.index],g=d.trace;if(h.isPtInside(m))return d.xLabelVal=void 0,d.yLabelVal=void 0,a(m,g,h,d),d.hovertemplate=g.hovertemplate,u}},makeHoverPointText:a}},{"../scatter/hover":938}],1022:[function(e,o,f){o.exports={moduleType:"trace",name:"scattersmith",basePlotModule:e("../../plots/smith"),categories:["smith","symbols","showLegend","scatter-like"],attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../scatter/marker_colorbar"),formatLabels:e("./format_labels"),calc:e("./calc"),plot:e("./plot"),style:e("../scatter/style").style,styleOnSelect:e("../scatter/style").styleOnSelect,hoverPoints:e("./hover").hoverPoints,selectPoints:e("../scatter/select"),meta:{}}},{"../../plots/smith":629,"../scatter/marker_colorbar":945,"../scatter/select":949,"../scatter/style":951,"./attributes":1017,"./calc":1018,"./defaults":1019,"./format_labels":1020,"./hover":1021,"./plot":1023}],1023:[function(e,o,f){var r=e("../scatter/plot"),a=e("../../constants/numerical").BADNUM,l=e("../../plots/smith/helpers").smith;o.exports=function(c,i,s){for(var u=i.layers.frontplot.select("g.scatterlayer"),d={xaxis:i.xaxis,yaxis:i.yaxis,plot:i.framework,layerClipId:i._hasClipOnAxisFalse?i.clipIds.forTraces:null},h=0;h"),u.hovertemplate=v.hovertemplate,s}function _(S,A){b.push(S._hovertitle+": "+A)}}},{"../scatter/hover":938}],1030:[function(e,o,f){o.exports={attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../scatter/marker_colorbar"),formatLabels:e("./format_labels"),calc:e("./calc"),plot:e("./plot"),style:e("../scatter/style").style,styleOnSelect:e("../scatter/style").styleOnSelect,hoverPoints:e("./hover"),selectPoints:e("../scatter/select"),eventData:e("./event_data"),moduleType:"trace",name:"scatterternary",basePlotModule:e("../../plots/ternary"),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}},{"../../plots/ternary":634,"../scatter/marker_colorbar":945,"../scatter/select":949,"../scatter/style":951,"./attributes":1024,"./calc":1025,"./defaults":1026,"./event_data":1027,"./format_labels":1028,"./hover":1029,"./plot":1031}],1031:[function(e,o,f){var r=e("../scatter/plot");o.exports=function(a,l,c){var i=l.plotContainer;i.select(".scatterlayer").selectAll("*").remove();var s={xaxis:l.xaxis,yaxis:l.yaxis,plot:i,layerClipId:l._hasClipOnAxisFalse?l.clipIdRelative:null},u=l.layers.frontplot.select("g.scatterlayer");r(a,s,c,u)}},{"../scatter/plot":948}],1032:[function(e,o,f){var r=e("../scatter/attributes"),a=e("../../components/colorscale/attributes"),l=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,c=e("../../plots/template_attributes").hovertemplateAttrs,i=e("../scattergl/attributes"),s=e("../../plots/cartesian/constants").idRegex,u=e("../../plot_api/plot_template").templatedArray,d=e("../../lib/extend").extendFlat,h=r.marker,m=h.line,g=d(a("marker.line",{editTypeOverride:"calc"}),{width:d({},m.width,{editType:"calc"}),editType:"calc"}),p=d(a("marker"),{symbol:h.symbol,size:d({},h.size,{editType:"markerSize"}),sizeref:h.sizeref,sizemin:h.sizemin,sizemode:h.sizemode,opacity:h.opacity,colorbar:h.colorbar,line:g,editType:"calc"});function v(y){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:s[y],editType:"plot"}}}p.color.editType=p.cmin.editType=p.cmax.editType="style",o.exports={dimensions:u("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:d({},i.text,{}),hovertext:d({},i.hovertext,{}),hovertemplate:c(),xhoverformat:l("x"),yhoverformat:l("y"),marker:p,xaxes:v("x"),yaxes:v("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:i.selected.marker,editType:"calc"},unselected:{marker:i.unselected.marker,editType:"calc"},opacity:i.opacity}},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plot_api/plot_template":543,"../../plots/cartesian/axis_format_attributes":557,"../../plots/cartesian/constants":561,"../../plots/template_attributes":633,"../scatter/attributes":927,"../scattergl/attributes":979}],1033:[function(e,o,f){var r=e("../../registry"),a=e("../../components/grid");o.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:e("./attributes"),supplyDefaults:e("./defaults"),colorbar:e("../scatter/marker_colorbar"),calc:e("./calc"),plot:e("./plot"),hoverPoints:e("./hover").hoverPoints,selectPoints:e("./select"),editStyle:e("./edit_style"),meta:{}},r.register(a)},{"../../components/grid":410,"../../registry":638,"../scatter/marker_colorbar":945,"./attributes":1032,"./calc":1035,"./defaults":1036,"./edit_style":1037,"./hover":1039,"./plot":1041,"./select":1043}],1034:[function(e,o,f){var r=e("regl-line2d"),a=e("../../registry"),l=e("../../lib/prepare_regl"),c=e("../../plots/get_data").getModuleCalcData,i=e("../../plots/cartesian"),s=e("../../plots/cartesian/axis_ids").getFromId,u=e("../../plots/cartesian/axes").shouldShowZeroLine,d={};function h(g,p,v){for(var y=v.matrixOptions.data.length,x=p._visibleDims,w=v.viewOpts.ranges=new Array(y),k=0;km?S.sizeAvg||Math.max(S.size,3):l(p,_),y=0;yD&&z||E-1,G=!0;if(c(S)||!!x.selectedpoints||B){var W=x._length;if(x.selectedpoints){k.selectBatch=x.selectedpoints;var K=x.selectedpoints,te={};for(m=0;m1&&(y=T[A-1],w=_[A-1],b=S[A-1]),u=0;uy?"-":"+")+"x")).replace("y",(x>w?"-":"+")+"y")).replace("z",(k>b?"-":"+")+"z");var G=function(){A=0,P=[],N=[],B=[]};(!A||A2?v.slice(1,y-1):y===2?[(v[0]+v[1])/2]:v}function g(v){var y=v.length;return y===1?[.5,.5]:[v[1]-v[0],v[y-1]-v[y-2]]}function p(v,y){var x=v.fullSceneLayout,w=v.dataScale,k=y._len,b={};function T(U,q){var $=x[q],ne=w[u[q]];return l.simpleMap(U,function(H){return $.d2l(H)*ne})}if(b.vectors=s(T(y._u,"xaxis"),T(y._v,"yaxis"),T(y._w,"zaxis"),k),!k)return{positions:[],cells:[]};var _=T(y._Xs,"xaxis"),S=T(y._Ys,"yaxis"),A=T(y._Zs,"zaxis");if(b.meshgrid=[_,S,A],b.gridFill=y._gridFill,y._slen)b.startingPositions=s(T(y._startsX,"xaxis"),T(y._startsY,"yaxis"),T(y._startsZ,"zaxis"));else{for(var M=S[0],E=m(_),D=m(A),O=new Array(E.length*D.length),R=0,z=0;z=0};A?(y=Math.min(S.length,E.length),x=function(ee){return P(S[ee])&&N(ee)},w=function(ee){return String(S[ee])}):(y=Math.min(M.length,E.length),x=function(ee){return P(M[ee])&&N(ee)},w=function(ee){return String(M[ee])}),O&&(y=Math.min(y,D.length));for(var B=0;B1){for(var te=l.randstr(),Y=0;Y"),name:P||re("name")?M.name:void 0,color:L("hoverlabel.bgcolor")||E.color,borderColor:L("hoverlabel.bordercolor"),fontFamily:L("hoverlabel.font.family"),fontSize:L("hoverlabel.font.size"),fontColor:L("hoverlabel.font.color"),nameLength:L("hoverlabel.namelength"),textAlign:L("hoverlabel.align"),hovertemplate:P,hovertemplateLabels:te,eventData:A};b&&($.x0=G-_.rInscribed*_.rpx1,$.x1=G+_.rInscribed*_.rpx1,$.idealAlign=_.pxmid[0]<0?"left":"right"),T&&($.x=G,$.idealAlign=G<0?"left":"right");var ne=[];c.loneHover($,{container:S._hoverlayer.node(),outerContainer:S._paper.node(),gd:p,inOut_bbox:ne}),A[0].bbox=ne[0],w._hasHoverLabel=!0}if(T){var H=m.select("path.surface");y.styleOne(H,_,M,{hovered:!0})}w._hasHoverEvent=!0,p.emit("plotly_hover",{points:A||[h(_,M,y.eventDataKeys)],event:r.event})}}),m.on("mouseout",function(_){var S=p._fullLayout,A=p._fullData[w.index],M=r.select(this).datum();if(w._hasHoverEvent&&(_.originalEvent=r.event,p.emit("plotly_unhover",{points:[h(M,A,y.eventDataKeys)],event:r.event}),w._hasHoverEvent=!1),w._hasHoverLabel&&(c.loneUnhover(S._hoverlayer.node()),w._hasHoverLabel=!1),T){var E=m.select("path.surface");y.styleOne(E,M,A,{hovered:!1})}}),m.on("click",function(_){var S=p._fullLayout,A=p._fullData[w.index],M=b&&(u.isHierarchyRoot(_)||u.isLeaf(_)),E=u.getPtId(_),D=u.isEntry(_)?u.findEntryWithChild(k,E):u.findEntryWithLevel(k,E),O=u.getPtId(D),R={points:[h(_,A,y.eventDataKeys)],event:r.event};M||(R.nextLevel=O);var z=s.triggerHandler(p,"plotly_"+w.type+"click",R);if(z!==!1&&S.hovermode&&(p._hoverdata=[h(_,A,y.eventDataKeys)],c.click(p,r.event)),!M&&z!==!1&&!p._dragging&&!p._transitioning){a.call("_storeDirectGUIEdit",A,S._tracePreGUI[A.uid],{level:A.level});var L={data:[{level:O}],traces:[w.index]},P={frame:{redraw:!1,duration:y.transitionTime},transition:{duration:y.transitionTime,easing:y.transitionEasing},mode:"immediate",fromcurrent:!0};c.loneUnhover(S._hoverlayer.node()),a.call("animate",p,L,P)}})}},{"../../components/fx":406,"../../components/fx/helpers":402,"../../lib":503,"../../lib/events":492,"../../registry":638,"../pie/helpers":906,"./helpers":1055,"@plotly/d3":58}],1055:[function(e,o,f){var r=e("../../lib"),a=e("../../components/color"),l=e("../../lib/setcursor"),c=e("../pie/helpers");function i(s){return s.data.data.pid}f.findEntryWithLevel=function(s,u){var d;return u&&s.eachAfter(function(h){if(f.getPtId(h)===u)return d=h.copy()}),d||s},f.findEntryWithChild=function(s,u){var d;return s.eachAfter(function(h){for(var m=h.children||[],g=0;g0)},f.getMaxDepth=function(s){return s.maxdepth>=0?s.maxdepth:1/0},f.isHeader=function(s,u){return!(f.isLeaf(s)||s.depth===u._maxDepth-1)},f.getParent=function(s,u){return f.findEntryWithLevel(s,i(u))},f.listPath=function(s,u){var d=s.parent;if(!d)return[];var h=u?[d.data[u]]:[d];return f.listPath(d,u).concat(h)},f.getPath=function(s){return f.listPath(s,"label").join("/")+"/"},f.formatValue=c.formatPieValue,f.formatPercent=function(s,u){var d=r.formatPercent(s,0);return d==="0%"&&(d=c.formatPiePercent(s,u)),d}},{"../../components/color":366,"../../lib":503,"../../lib/setcursor":524,"../pie/helpers":906}],1056:[function(e,o,f){o.exports={moduleType:"trace",name:"sunburst",basePlotModule:e("./base_plot"),categories:[],animatable:!0,attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults"),supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc").calc,crossTraceCalc:e("./calc").crossTraceCalc,plot:e("./plot").plot,style:e("./style").style,colorbar:e("../scatter/marker_colorbar"),meta:{}}},{"../scatter/marker_colorbar":945,"./attributes":1049,"./base_plot":1050,"./calc":1051,"./defaults":1053,"./layout_attributes":1057,"./layout_defaults":1058,"./plot":1059,"./style":1060}],1057:[function(e,o,f){o.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}},{}],1058:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes");o.exports=function(l,c){function i(s,u){return r.coerce(l,c,a,s,u)}i("sunburstcolorway",c.colorway),i("extendsunburstcolors")}},{"../../lib":503,"./layout_attributes":1057}],1059:[function(e,o,f){var r=e("@plotly/d3"),a=e("d3-hierarchy"),l=e("d3-interpolate").interpolate,c=e("../../components/drawing"),i=e("../../lib"),s=e("../../lib/svg_text_utils"),u=e("../bar/uniform_text"),d=u.recordMinTextSize,h=u.clearMinTextSize,m=e("../pie/plot"),g=e("../pie/helpers").getRotationAngle,p=m.computeTransform,v=m.transformInsideText,y=e("./style").styleOne,x=e("../bar/style").resizeText,w=e("./fx"),k=e("./constants"),b=e("./helpers");function T(S,A,M,E){var D=S._fullLayout,O=!D.uniformtext.mode&&b.hasTransition(E),R=r.select(M).selectAll("g.slice"),z=A[0],L=z.trace,P=z.hierarchy,N=b.findEntryWithLevel(P,L.level),B=b.getMaxDepth(L),G=D._size,W=L.domain,K=G.w*(W.x[1]-W.x[0]),te=G.h*(W.y[1]-W.y[0]),Y=.5*Math.min(K,te),Z=z.cx=G.l+G.w*(W.x[1]+W.x[0])/2,re=z.cy=G.t+G.h*(1-W.y[0])-te/2;if(!N)return R.remove();var U=null,q={};O&&R.each(function(Oe){q[b.getPtId(Oe)]={rpx0:Oe.rpx0,rpx1:Oe.rpx1,x0:Oe.x0,x1:Oe.x1,transform:Oe.transform},!U&&b.isEntry(Oe)&&(U=Oe)});var $=function(Oe){return a.partition().size([2*Math.PI,Oe.height+1])(Oe)}(N).descendants(),ne=N.height+1,H=0,Q=B;z.hasMultipleRoots&&b.isHierarchyRoot(N)&&($=$.slice(1),ne-=1,H=1,Q+=1),$=$.filter(function(Oe){return Oe.y1<=Q});var ee=g(L.rotation);ee&&$.forEach(function(Oe){Oe.x0+=ee,Oe.x1+=ee});var ie=Math.min(ne,B),ae=function(Oe){return(Oe-H)/ie*Y},ue=function(Oe,de){return[Oe*Math.cos(de),-Oe*Math.sin(de)]},le=function(Oe){return i.pathAnnulus(Oe.rpx0,Oe.rpx1,Oe.x0,Oe.x1,Z,re)},ge=function(Oe){return Z+_(Oe)[0]*(Oe.transform.rCenter||0)+(Oe.transform.x||0)},fe=function(Oe){return re+_(Oe)[1]*(Oe.transform.rCenter||0)+(Oe.transform.y||0)};(R=R.data($,b.getPtId)).enter().append("g").classed("slice",!0),O?R.exit().transition().each(function(){var Oe=r.select(this);Oe.select("path.surface").transition().attrTween("d",function(de){var ye=function(Me){var ke,Ee=b.getPtId(Me),ze=q[Ee],Fe=q[b.getPtId(N)];if(Fe){var Ve=(Me.x1>Fe.x1?2*Math.PI:0)+ee;ke=Me.rpx1me?2*Math.PI:0)+ee;qe={x0:nt,x1:nt}}else qe={rpx0:Y,rpx1:Y},i.extendFlat(qe,Te(Re));else qe={rpx0:0,rpx1:0};else qe={x0:ee,x1:ee};return l(qe,Ye)}(Ve);return function(Re){return le(Ke(Re))}}):ye.attr("d",le),de.call(w,N,S,A,{eventDataKeys:k.eventDataKeys,transitionTime:k.CLICK_TRANSITION_TIME,transitionEasing:k.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,S,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:S._transitioning}),ye.call(y,Oe,L);var Me=i.ensureSingle(de,"g","slicetext"),ke=i.ensureSingle(Me,"text","",function(Ve){Ve.attr("data-notex",1)}),Ee=i.ensureUniformFontSize(S,b.determineTextFont(L,Oe,D.font));ke.text(f.formatSliceLabel(Oe,N,L,A,D)).classed("slicetext",!0).attr("text-anchor","middle").call(c.font,Ee).call(s.convertToTspans,S);var ze=c.bBox(ke.node());Oe.transform=v(ze,Oe,z),Oe.transform.targetX=ge(Oe),Oe.transform.targetY=fe(Oe);var Fe=function(Ve,Ke){var Re=Ve.transform;return p(Re,Ke),Re.fontSize=Ee.size,d(L.type,Re,D),i.getTextTransform(Re)};O?ke.transition().attrTween("transform",function(Ve){var Ke=function(Re){var qe,We=q[b.getPtId(Re)],Ye=Re.transform;if(We)qe=We;else if(qe={rpx1:Re.rpx1,transform:{textPosAngle:Ye.textPosAngle,scale:0,rotate:Ye.rotate,rCenter:Ye.rCenter,x:Ye.x,y:Ye.y}},U)if(Re.parent)if(me){var nt=Re.x1>me?2*Math.PI:0;qe.x0=qe.x1=nt}else i.extendFlat(qe,Te(Re));else qe.x0=qe.x1=ee;else qe.x0=qe.x1=ee;var ft=l(qe.transform.textPosAngle,Re.transform.textPosAngle),vt=l(qe.rpx1,Re.rpx1),Pt=l(qe.x0,Re.x0),At=l(qe.x1,Re.x1),at=l(qe.transform.scale,Ye.scale),et=l(qe.transform.rotate,Ye.rotate),Ot=Ye.rCenter===0?3:qe.transform.rCenter===0?1/3:1,Wt=l(qe.transform.rCenter,Ye.rCenter);return function(Jt){var Be=vt(Jt),Ge=Pt(Jt),Tt=At(Jt),dt=function(Ie){return Wt(Math.pow(Ie,Ot))}(Jt),Pe={pxmid:ue(Be,(Ge+Tt)/2),rpx1:Be,transform:{textPosAngle:ft(Jt),rCenter:dt,x:Ye.x,y:Ye.y}};return d(L.type,Ye,D),{transform:{targetX:ge(Pe),targetY:fe(Pe),scale:at(Jt),rotate:et(Jt),rCenter:dt}}}}(Ve);return function(Re){return Fe(Ke(Re),ze)}}):ke.attr("transform",Fe(Oe,ze))})}function _(S){return A=S.rpx1,M=S.transform.textPosAngle,[A*Math.sin(M),-A*Math.cos(M)];var A,M}f.plot=function(S,A,M,E){var D,O,R=S._fullLayout,z=R._sunburstlayer,L=!M,P=!R.uniformtext.mode&&b.hasTransition(M);h("sunburst",R),(D=z.selectAll("g.trace.sunburst").data(A,function(N){return N[0].trace.uid})).enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),D.order(),P?(E&&(O=E()),r.transition().duration(M.duration).ease(M.easing).each("end",function(){O&&O()}).each("interrupt",function(){O&&O()}).each(function(){z.selectAll("g.trace").each(function(N){T(S,N,this,M)})})):(D.each(function(N){T(S,N,this,M)}),R.uniformtext.mode&&x(S,R._sunburstlayer.selectAll(".trace"),"sunburst")),L&&D.exit().remove()},f.formatSliceLabel=function(S,A,M,E,D){var O=M.texttemplate,R=M.textinfo;if(!(O||R&&R!=="none"))return"";var z=D.separators,L=E[0],P=S.data.data,N=L.hierarchy,B=b.isHierarchyRoot(S),G=b.getParent(N,S),W=b.getValue(S);if(!O){var K,te=R.split("+"),Y=function(ee){return te.indexOf(ee)!==-1},Z=[];if(Y("label")&&P.label&&Z.push(P.label),P.hasOwnProperty("v")&&Y("value")&&Z.push(b.formatValue(P.v,z)),!B){Y("current path")&&Z.push(b.getPath(S.data));var re=0;Y("percent parent")&&re++,Y("percent entry")&&re++,Y("percent root")&&re++;var U=re>1;if(re){var q,$=function(ee){K=b.formatPercent(q,z),U&&(K+=" of "+ee),Z.push(K)};Y("percent parent")&&!B&&(q=W/b.getValue(G),$("parent")),Y("percent entry")&&(q=W/b.getValue(A),$("entry")),Y("percent root")&&(q=W/b.getValue(N),$("root"))}}return Y("text")&&(K=i.castOption(M,P.i,"text"),i.isValidTextValue(K)&&Z.push(K)),Z.join("
")}var ne=i.castOption(M,P.i,"texttemplate");if(!ne)return"";var H={};P.label&&(H.label=P.label),P.hasOwnProperty("v")&&(H.value=P.v,H.valueLabel=b.formatValue(P.v,z)),H.currentPath=b.getPath(S.data),B||(H.percentParent=W/b.getValue(G),H.percentParentLabel=b.formatPercent(H.percentParent,z),H.parent=b.getPtLabel(G)),H.percentEntry=W/b.getValue(A),H.percentEntryLabel=b.formatPercent(H.percentEntry,z),H.entry=b.getPtLabel(A),H.percentRoot=W/b.getValue(N),H.percentRootLabel=b.formatPercent(H.percentRoot,z),H.root=b.getPtLabel(N),P.hasOwnProperty("color")&&(H.color=P.color);var Q=i.castOption(M,P.i,"text");return(i.isValidTextValue(Q)||Q==="")&&(H.text=Q),H.customdata=i.castOption(M,P.i,"customdata"),i.texttemplateString(ne,H,D._d3locale,H,M._meta||{})}},{"../../components/drawing":388,"../../lib":503,"../../lib/svg_text_utils":529,"../bar/style":662,"../bar/uniform_text":664,"../pie/helpers":906,"../pie/plot":910,"./constants":1052,"./fx":1054,"./helpers":1055,"./style":1060,"@plotly/d3":58,"d3-hierarchy":115,"d3-interpolate":116}],1060:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../components/color"),l=e("../../lib"),c=e("../bar/uniform_text").resizeText;function i(s,u,d){var h=u.data.data,m=!u.children,g=h.i,p=l.castOption(d,g,"marker.line.color")||a.defaultLine,v=l.castOption(d,g,"marker.line.width")||0;s.style("stroke-width",v).call(a.fill,h.color).call(a.stroke,p).style("opacity",m?d.leaf.opacity:null)}o.exports={style:function(s){var u=s._fullLayout._sunburstlayer.selectAll(".trace");c(s,u,"sunburst"),u.each(function(d){var h=r.select(this),m=d[0].trace;h.style("opacity",m.opacity),h.selectAll("path.surface").each(function(g){r.select(this).call(i,g,m)})})},styleOne:i}},{"../../components/color":366,"../../lib":503,"../bar/uniform_text":664,"@plotly/d3":58}],1061:[function(e,o,f){var r=e("../../components/color"),a=e("../../components/colorscale/attributes"),l=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat,c=e("../../plots/template_attributes").hovertemplateAttrs,i=e("../../plots/attributes"),s=e("../../lib/extend").extendFlat,u=e("../../plot_api/edit_types").overrideAll;function d(m){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:{valType:"boolean",dflt:!1},y:{valType:"boolean",dflt:!1},z:{valType:"boolean",dflt:!1}},color:{valType:"color",dflt:r.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:r.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var h=o.exports=u(s({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:c(),xhoverformat:l("x"),yhoverformat:l("y"),zhoverformat:l("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},a("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:d(),y:d(),z:d()},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},_deprecated:{zauto:s({},a.zauto,{}),zmin:s({},a.zmin,{}),zmax:s({},a.zmax,{})},hoverinfo:s({},i.hoverinfo),showlegend:s({},i.showlegend,{dflt:!1})}),"calc","nested");h.x.editType=h.y.editType=h.z.editType="calc+clearAxisTypes",h.transforms=void 0},{"../../components/color":366,"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plot_api/edit_types":536,"../../plots/attributes":550,"../../plots/cartesian/axis_format_attributes":557,"../../plots/template_attributes":633}],1062:[function(e,o,f){var r=e("../../components/colorscale/calc");o.exports=function(a,l){l.surfacecolor?r(a,l,{vals:l.surfacecolor,containerStr:"",cLetter:"c"}):r(a,l,{vals:l.z,containerStr:"",cLetter:"c"})}},{"../../components/colorscale/calc":374}],1063:[function(e,o,f){var r=e("../../../stackgl_modules").gl_surface3d,a=e("../../../stackgl_modules").ndarray,l=e("../../../stackgl_modules").ndarray_linear_interpolate.d2,c=e("../heatmap/interp2d"),i=e("../heatmap/find_empties"),s=e("../../lib").isArrayOrTypedArray,u=e("../../lib/gl_format_color").parseColorScale,d=e("../../lib/str2rgbarray"),h=e("../../components/colorscale").extractOpts;function m(M,E,D){this.scene=M,this.uid=D,this.surface=E,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var g=m.prototype;g.getXat=function(M,E,D,O){var R=s(this.data.x)?s(this.data.x[0])?this.data.x[E][M]:this.data.x[M]:M;return D===void 0?R:O.d2l(R,0,D)},g.getYat=function(M,E,D,O){var R=s(this.data.y)?s(this.data.y[0])?this.data.y[E][M]:this.data.y[E]:E;return D===void 0?R:O.d2l(R,0,D)},g.getZat=function(M,E,D,O){var R=this.data.z[E][M];return R===null&&this.data.connectgaps&&this.data._interpolatedZ&&(R=this.data._interpolatedZ[E][M]),D===void 0?R:O.d2l(R,0,D)},g.handlePick=function(M){if(M.object===this.surface){var E=(M.data.index[0]-1)/this.dataScaleX-1,D=(M.data.index[1]-1)/this.dataScaleY-1,O=Math.max(Math.min(Math.round(E),this.data.z[0].length-1),0),R=Math.max(Math.min(Math.round(D),this.data._ylength-1),0);M.index=[O,R],M.traceCoordinate=[this.getXat(O,R),this.getYat(O,R),this.getZat(O,R)],M.dataCoordinate=[this.getXat(O,R,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(O,R,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(O,R,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var z=0;z<3;z++){var L=M.dataCoordinate[z];L!=null&&(M.dataCoordinate[z]*=this.scene.dataScale[z])}var P=this.data.hovertext||this.data.text;return Array.isArray(P)&&P[R]&&P[R][O]!==void 0?M.textLabel=P[R][O]:M.textLabel=P||"",M.data.dataCoordinate=M.dataCoordinate.slice(),this.surface.highlight(M.data),this.scene.glplot.spikes.position=M.dataCoordinate,!0}};var p=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function v(M,E){if(M0){D=p[O];break}return D}function w(M,E){if(!(M<1||E<1)){for(var D=y(M),O=y(E),R=1,z=0;zT;)D--,D/=x(D),++D1?O:1},g.refineCoords=function(M){for(var E=this.dataScaleX,D=this.dataScaleY,O=M[0].shape[0],R=M[0].shape[1],z=0|Math.floor(M[0].shape[0]*E+1),L=0|Math.floor(M[0].shape[1]*D+1),P=1+O+1,N=1+R+1,B=a(new Float32Array(P*N),[P,N]),G=[1/E,0,0,0,1/D,0,0,0,1],W=0;W0&&this.contourStart[M]!==null&&this.contourEnd[M]!==null&&this.contourEnd[M]>this.contourStart[M]))for(R[M]=!0,E=this.contourStart[M];ER&&(this.minValues[E]=R),this.maxValues[E]",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}},{}],1070:[function(e,o,f){var r=e("./constants"),a=e("../../lib/extend").extendFlat,l=e("fast-isnumeric");function c(g){if(Array.isArray(g)){for(var p=0,v=0;v=p||_===g.length-1)&&(y[x]=k,k.key=T++,k.firstRowIndex=b,k.lastRowIndex=_,k={firstRowIndex:null,lastRowIndex:null,rows:[]},x+=w,b=_+1,w=0);return y}o.exports=function(g,p){var v=s(p.cells.values),y=function(B){return B.slice(p.header.values.length,B.length)},x=s(p.header.values);x.length&&!x[0].length&&(x[0]=[""],x=s(x));var w=x.concat(y(v).map(function(){return u((x[0]||[""]).length)})),k=p.domain,b=Math.floor(g._fullLayout._size.w*(k.x[1]-k.x[0])),T=Math.floor(g._fullLayout._size.h*(k.y[1]-k.y[0])),_=p.header.values.length?w[0].map(function(){return p.header.height}):[r.emptyHeaderHeight],S=v.length?v[0].map(function(){return p.cells.height}):[],A=_.reduce(i,0),M=m(S,T-A+r.uplift),E=h(m(_,A),[]),D=h(M,E),O={},R=p._fullInput.columnorder.concat(y(v.map(function(B,G){return G}))),z=w.map(function(B,G){var W=Array.isArray(p.columnwidth)?p.columnwidth[Math.min(G,p.columnwidth.length-1)]:p.columnwidth;return l(W)?Number(W):1}),L=z.reduce(i,0);z=z.map(function(B){return B/L*b});var P=Math.max(c(p.header.line.width),c(p.cells.line.width)),N={key:p.uid+g._context.staticPlot,translateX:k.x[0]*g._fullLayout._size.w,translateY:g._fullLayout._size.h*(1-k.y[1]),size:g._fullLayout._size,width:b,maxLineWidth:P,height:T,columnOrder:R,groupHeight:T,rowBlocks:D,headerRowBlocks:E,scrollY:0,cells:a({},p.cells,{values:v}),headerCells:a({},p.header,{values:w}),gdColumns:w.map(function(B){return B[0]}),gdColumnsOriginalOrder:w.map(function(B){return B[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:w.map(function(B,G){var W=O[B];return O[B]=(W||0)+1,{key:B+"__"+O[B],label:B,specIndex:G,xIndex:R[G],xScale:d,x:void 0,calcdata:void 0,columnWidth:z[G]}})};return N.columns.forEach(function(B){B.calcdata=N,B.x=d(B)}),N}},{"../../lib/extend":493,"./constants":1069,"fast-isnumeric":190}],1071:[function(e,o,f){var r=e("../../lib/extend").extendFlat;f.splitToPanels=function(a){var l=[0,0],c=r({},a,{key:"header",type:"header",page:0,prevPages:l,currentRepaint:[null,null],dragHandle:!0,values:a.calcdata.headerCells.values[a.specIndex],rowBlocks:a.calcdata.headerRowBlocks,calcdata:r({},a.calcdata,{cells:a.calcdata.headerCells})});return[r({},a,{key:"cells1",type:"cells",page:0,prevPages:l,currentRepaint:[null,null],dragHandle:!1,values:a.calcdata.cells.values[a.specIndex],rowBlocks:a.calcdata.rowBlocks}),r({},a,{key:"cells2",type:"cells",page:1,prevPages:l,currentRepaint:[null,null],dragHandle:!1,values:a.calcdata.cells.values[a.specIndex],rowBlocks:a.calcdata.rowBlocks}),c]},f.splitToCells=function(a){var l=function(c){var i=c.rowBlocks[c.page],s=i?i.rows[0].rowIndex:0,u=i?s+i.rows.length:0;return[s,u]}(a);return(a.values||[]).slice(l[0],l[1]).map(function(c,i){return{keyWithinBlock:i+(typeof c=="string"&&c.match(/[<$&> ]/)?"_keybuster_"+Math.random():""),key:l[0]+i,column:a,calcdata:a.calcdata,page:a.page,rowBlocks:a.rowBlocks,value:c}})}},{"../../lib/extend":493}],1072:[function(e,o,f){var r=e("../../lib"),a=e("./attributes"),l=e("../../plots/domain").defaults;o.exports=function(c,i,s,u){function d(h,m){return r.coerce(c,i,a,h,m)}l(i,u,d),d("columnwidth"),d("header.values"),d("header.format"),d("header.align"),d("header.prefix"),d("header.suffix"),d("header.height"),d("header.line.width"),d("header.line.color"),d("header.fill.color"),r.coerceFont(d,"header.font",r.extendFlat({},u.font)),function(h,m){for(var g=h.columnorder||[],p=h.header.values.length,v=g.slice(0,p),y=v.slice().sort(function(k,b){return k-b}),x=v.map(function(k){return y.indexOf(k)}),w=x.length;w/i),ie=!Q||ee;q.mayHaveMarkup=Q&&H.match(/[<&>]/);var ae,ue=typeof(ae=H)=="string"&&ae.match(r.latexCheck);q.latex=ue;var le,ge,fe=ue?"":S(q.calcdata.cells.prefix,$,ne)||"",me=ue?"":S(q.calcdata.cells.suffix,$,ne)||"",_e=ue?null:S(q.calcdata.cells.format,$,ne)||null,we=fe+(_e?l(_e)(q.value):q.value)+me;if(q.wrappingNeeded=!q.wrapped&&!ie&&!ue&&(le=_(we)),q.cellHeightMayIncrease=ee||ue||q.mayHaveMarkup||(le===void 0?_(we):le),q.needsConvertToTspans=q.mayHaveMarkup||q.wrappingNeeded||q.latex,q.wrappingNeeded){var Te=(r.wrapSplitCharacter===" "?we.replace(/ge&&le.push(fe),ge+=we}return le}(q,Q,H);ee.length===1&&(ee[0]===q.length-1?ee.unshift(ee[0]-1):ee.push(ee[0]+1)),ee[0]%2&&ee.reverse(),Z.each(function(ie,ae){ie.page=ee[ae],ie.scrollY=Q}),Z.attr("transform",function(ie){var ae=G(ie.rowBlocks,ie.page)-ie.scrollY;return d(0,ae)}),Y&&(z(Y,re,Z,ee,U.prevPages,U,0),z(Y,re,Z,ee,U.prevPages,U,1),k(re,Y))}}function R(Y,Z,re,U){return function(q){var $=q.calcdata?q.calcdata:q,ne=Z.filter(function(ie){return $.key===ie.key}),H=re||$.scrollbarState.dragMultiplier,Q=$.scrollY;$.scrollY=U===void 0?$.scrollY+H*a.event.dy:U;var ee=ne.selectAll("."+r.cn.yColumn).selectAll("."+r.cn.columnBlock).filter(M);return O(Y,ee,ne),$.scrollY===Q}}function z(Y,Z,re,U,q,$,ne){U[ne]!==q[ne]&&(clearTimeout($.currentRepaint[ne]),$.currentRepaint[ne]=setTimeout(function(){var H=re.filter(function(Q,ee){return ee===ne&&U[ee]!==q[ee]});b(Y,Z,H,re),q[ne]=U[ne]}))}function L(Y,Z,re,U){return function(){var q=a.select(Z.parentNode);q.each(function($){var ne=$.fragments;q.selectAll("tspan.line").each(function(ge,fe){ne[fe].width=this.getComputedTextLength()});var H,Q,ee=ne[ne.length-1].width,ie=ne.slice(0,-1),ae=[],ue=0,le=$.column.columnWidth-2*r.cellPad;for($.value="";ie.length;)ue+(Q=(H=ie.shift()).width+ee)>le&&($.value+=ae.join(r.wrapSpacer)+r.lineBreaker,ae=[],ue=0),ae.push(H.text),ue+=Q;ue&&($.value+=ae.join(r.wrapSpacer)),$.wrapped=!0}),q.selectAll("tspan.line").remove(),T(q.select("."+r.cn.cellText),re,Y,U),a.select(Z.parentNode.parentNode).call(B)}}function P(Y,Z,re,U,q){return function(){if(!q.settledY){var $=a.select(Z.parentNode),ne=te(q),H=q.key-ne.firstRowIndex,Q=ne.rows[H].rowHeight,ee=q.cellHeightMayIncrease?Z.parentNode.getBoundingClientRect().height+2*r.cellPad:Q,ie=Math.max(ee,Q);ie-ne.rows[H].rowHeight&&(ne.rows[H].rowHeight=ie,Y.selectAll("."+r.cn.columnCell).call(B),O(null,Y.filter(M),0),k(re,U,!0)),$.attr("transform",function(){var ae=this.parentNode.getBoundingClientRect(),ue=a.select(this.parentNode).select("."+r.cn.cellRect).node().getBoundingClientRect(),le=this.transform.baseVal.consolidate(),ge=ue.top-ae.top+(le?le.matrix.f:r.cellPad);return d(N(q,a.select(this.parentNode).select("."+r.cn.cellTextHolder).node().getBoundingClientRect().width),ge)}),q.settledY=!0}}}function N(Y,Z){switch(Y.align){case"left":return r.cellPad;case"right":return Y.column.columnWidth-(Z||0)-r.cellPad;case"center":return(Y.column.columnWidth-(Z||0))/2;default:return r.cellPad}}function B(Y){Y.attr("transform",function(Z){var re=Z.rowBlocks[0].auxiliaryBlocks.reduce(function(q,$){return q+W($,1/0)},0),U=W(te(Z),Z.key);return d(0,U+re)}).selectAll("."+r.cn.cellRect).attr("height",function(Z){return(re=te(Z),U=Z.key,re.rows[U-re.firstRowIndex]).rowHeight;var re,U})}function G(Y,Z){for(var re=0,U=Z-1;U>=0;U--)re+=K(Y[U]);return re}function W(Y,Z){for(var re=0,U=0;U","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:d({},i.textfont,{}),editType:"calc"},text:i.text,textinfo:s.textinfo,texttemplate:a({editType:"plot"},{keys:u.eventDataKeys.concat(["label","value"])}),hovertext:i.hovertext,hoverinfo:s.hoverinfo,hovertemplate:r({},{keys:u.eventDataKeys}),textfont:i.textfont,insidetextfont:i.insidetextfont,outsidetextfont:d({},i.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:i.sort,root:s.root,domain:c({name:"treemap",trace:!0,editType:"calc"})}},{"../../components/colorscale/attributes":373,"../../lib/extend":493,"../../plots/domain":584,"../../plots/template_attributes":633,"../pie/attributes":901,"../sunburst/attributes":1049,"./constants":1078}],1076:[function(e,o,f){var r=e("../../plots/plots");f.name="treemap",f.plot=function(a,l,c,i){r.plotBasePlot(f.name,a,l,c,i)},f.clean=function(a,l,c,i){r.cleanBasePlot(f.name,a,l,c,i)}},{"../../plots/plots":619}],1077:[function(e,o,f){var r=e("../sunburst/calc");f.calc=function(a,l){return r.calc(a,l)},f.crossTraceCalc=function(a){return r._runCrossTraceCalc("treemap",a)}},{"../sunburst/calc":1051}],1078:[function(e,o,f){o.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}},{}],1079:[function(e,o,f){var r=e("../../lib"),a=e("./attributes"),l=e("../../components/color"),c=e("../../plots/domain").defaults,i=e("../bar/defaults").handleText,s=e("../bar/constants").TEXTPAD,u=e("../../components/colorscale"),d=u.hasColorscale,h=u.handleDefaults;o.exports=function(m,g,p,v){function y(M,E){return r.coerce(m,g,a,M,E)}var x=y("labels"),w=y("parents");if(x&&x.length&&w&&w.length){var k=y("values");k&&k.length?y("branchvalues"):y("count"),y("level"),y("maxdepth"),y("tiling.packing")==="squarify"&&y("tiling.squarifyratio"),y("tiling.flip"),y("tiling.pad");var b=y("text");y("texttemplate"),g.texttemplate||y("textinfo",Array.isArray(b)?"text+label":"label"),y("hovertext"),y("hovertemplate");var T=y("pathbar.visible");i(m,g,v,y,"auto",{hasPathbar:T,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),y("textposition");var _=g.textposition.indexOf("bottom")!==-1;y("marker.line.width")&&y("marker.line.color",v.paper_bgcolor);var S=y("marker.colors");(g._hasColorscale=d(m,"marker","colors")||(m.marker||{}).coloraxis)?h(m,g,v,y,{prefix:"marker.",cLetter:"c"}):y("marker.depthfade",!(S||[]).length);var A=2*g.textfont.size;y("marker.pad.t",_?A/4:A),y("marker.pad.l",A/4),y("marker.pad.r",A/4),y("marker.pad.b",_?A:A/4),g._hovered={marker:{line:{width:2,color:l.contrast(v.paper_bgcolor)}}},T&&(y("pathbar.thickness",g.pathbar.textfont.size+2*s),y("pathbar.side"),y("pathbar.edgeshape")),y("sort"),y("root.color"),c(g,v,y),g._length=null}else g.visible=!1}},{"../../components/color":366,"../../components/colorscale":378,"../../lib":503,"../../plots/domain":584,"../bar/constants":650,"../bar/defaults":652,"./attributes":1075}],1080:[function(e,o,f){var r=e("@plotly/d3"),a=e("../sunburst/helpers"),l=e("../bar/uniform_text").clearMinTextSize,c=e("../bar/style").resizeText,i=e("./plot_one");o.exports=function(s,u,d,h,m){var g,p,v=m.type,y=m.drawDescendants,x=s._fullLayout,w=x["_"+v+"layer"],k=!d;l(v,x),(g=w.selectAll("g.trace."+v).data(u,function(b){return b[0].trace.uid})).enter().append("g").classed("trace",!0).classed(v,!0),g.order(),!x.uniformtext.mode&&a.hasTransition(d)?(h&&(p=h()),r.transition().duration(d.duration).ease(d.easing).each("end",function(){p&&p()}).each("interrupt",function(){p&&p()}).each(function(){w.selectAll("g.trace").each(function(b){i(s,b,this,d,y)})})):(g.each(function(b){i(s,b,this,d,y)}),x.uniformtext.mode&&c(s,w.selectAll(".trace"),v)),k&&g.exit().remove()}},{"../bar/style":662,"../bar/uniform_text":664,"../sunburst/helpers":1055,"./plot_one":1089,"@plotly/d3":58}],1081:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=e("../../components/drawing"),c=e("../../lib/svg_text_utils"),i=e("./partition"),s=e("./style").styleOne,u=e("./constants"),d=e("../sunburst/helpers"),h=e("../sunburst/fx");o.exports=function(m,g,p,v,y){var x=y.barDifY,w=y.width,k=y.height,b=y.viewX,T=y.viewY,_=y.pathSlice,S=y.toMoveInsideSlice,A=y.strTransform,M=y.hasTransition,E=y.handleSlicesExit,D=y.makeUpdateSliceInterpolator,O=y.makeUpdateTextInterpolator,R={},z=m._fullLayout,L=g[0],P=L.trace,N=L.hierarchy,B=w/P._entryDepth,G=d.listPath(p.data,"id"),W=i(N.copy(),[w,k],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(W=W.filter(function(te){var Y=G.indexOf(te.data.id);return Y!==-1&&(te.x0=B*Y,te.x1=B*(Y+1),te.y0=x,te.y1=x+k,te.onPathbar=!0,!0)})).reverse(),(v=v.data(W,d.getPtId)).enter().append("g").classed("pathbar",!0),E(v,!0,R,[w,k],_),v.order();var K=v;M&&(K=K.transition().each("end",function(){var te=r.select(this);d.setSliceCursor(te,m,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),K.each(function(te){te._x0=b(te.x0),te._x1=b(te.x1),te._y0=T(te.y0),te._y1=T(te.y1),te._hoverX=b(te.x1-Math.min(w,k)/2),te._hoverY=T(te.y1-k/2);var Y=r.select(this),Z=a.ensureSingle(Y,"path","surface",function($){$.style("pointer-events","all")});M?Z.transition().attrTween("d",function($){var ne=D($,!0,R,[w,k]);return function(H){return _(ne(H))}}):Z.attr("d",_),Y.call(h,p,m,g,{styleOne:s,eventDataKeys:u.eventDataKeys,transitionTime:u.CLICK_TRANSITION_TIME,transitionEasing:u.CLICK_TRANSITION_EASING}).call(d.setSliceCursor,m,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:m._transitioning}),Z.call(s,te,P,{hovered:!1}),te._text=(d.getPtLabel(te)||"").split("
").join(" ")||"";var re=a.ensureSingle(Y,"g","slicetext"),U=a.ensureSingle(re,"text","",function($){$.attr("data-notex",1)}),q=a.ensureUniformFontSize(m,d.determineTextFont(P,te,z.font,{onPathbar:!0}));U.text(te._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(l.font,q).call(c.convertToTspans,m),te.textBB=l.bBox(U.node()),te.transform=S(te,{fontSize:q.size,onPathbar:!0}),te.transform.fontSize=q.size,M?U.transition().attrTween("transform",function($){var ne=O($,!0,R,[w,k]);return function(H){return A(ne(H))}}):U.attr("transform",A(te))})}},{"../../components/drawing":388,"../../lib":503,"../../lib/svg_text_utils":529,"../sunburst/fx":1054,"../sunburst/helpers":1055,"./constants":1078,"./partition":1087,"./style":1090,"@plotly/d3":58}],1082:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=e("../../components/drawing"),c=e("../../lib/svg_text_utils"),i=e("./partition"),s=e("./style").styleOne,u=e("./constants"),d=e("../sunburst/helpers"),h=e("../sunburst/fx"),m=e("../sunburst/plot").formatSliceLabel;o.exports=function(g,p,v,y,x){var w=x.width,k=x.height,b=x.viewX,T=x.viewY,_=x.pathSlice,S=x.toMoveInsideSlice,A=x.strTransform,M=x.hasTransition,E=x.handleSlicesExit,D=x.makeUpdateSliceInterpolator,O=x.makeUpdateTextInterpolator,R=x.prevEntry,z=g._fullLayout,L=p[0].trace,P=L.textposition.indexOf("left")!==-1,N=L.textposition.indexOf("right")!==-1,B=L.textposition.indexOf("bottom")!==-1,G=!B&&!L.marker.pad.t||B&&!L.marker.pad.b,W=i(v,[w,k],{packing:L.tiling.packing,squarifyratio:L.tiling.squarifyratio,flipX:L.tiling.flip.indexOf("x")>-1,flipY:L.tiling.flip.indexOf("y")>-1,pad:{inner:L.tiling.pad,top:L.marker.pad.t,left:L.marker.pad.l,right:L.marker.pad.r,bottom:L.marker.pad.b}}).descendants(),K=1/0,te=-1/0;W.forEach(function(q){var $=q.depth;$>=L._maxDepth?(q.x0=q.x1=(q.x0+q.x1)/2,q.y0=q.y1=(q.y0+q.y1)/2):(K=Math.min(K,$),te=Math.max(te,$))}),y=y.data(W,d.getPtId),L._maxVisibleLayers=isFinite(te)?te-K+1:0,y.enter().append("g").classed("slice",!0),E(y,!1,{},[w,k],_),y.order();var Y=null;if(M&&R){var Z=d.getPtId(R);y.each(function(q){Y===null&&d.getPtId(q)===Z&&(Y={x0:q.x0,x1:q.x1,y0:q.y0,y1:q.y1})})}var re=function(){return Y||{x0:0,x1:w,y0:0,y1:k}},U=y;return M&&(U=U.transition().each("end",function(){var q=r.select(this);d.setSliceCursor(q,g,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),U.each(function(q){var $=d.isHeader(q,L);q._x0=b(q.x0),q._x1=b(q.x1),q._y0=T(q.y0),q._y1=T(q.y1),q._hoverX=b(q.x1-L.marker.pad.r),q._hoverY=T(B?q.y1-L.marker.pad.b/2:q.y0+L.marker.pad.t/2);var ne=r.select(this),H=a.ensureSingle(ne,"path","surface",function(ae){ae.style("pointer-events","all")});M?H.transition().attrTween("d",function(ae){var ue=D(ae,!1,re(),[w,k]);return function(le){return _(ue(le))}}):H.attr("d",_),ne.call(h,v,g,p,{styleOne:s,eventDataKeys:u.eventDataKeys,transitionTime:u.CLICK_TRANSITION_TIME,transitionEasing:u.CLICK_TRANSITION_EASING}).call(d.setSliceCursor,g,{isTransitioning:g._transitioning}),H.call(s,q,L,{hovered:!1}),q.x0===q.x1||q.y0===q.y1?q._text="":q._text=$?G?"":d.getPtLabel(q)||"":m(q,v,L,p,z)||"";var Q=a.ensureSingle(ne,"g","slicetext"),ee=a.ensureSingle(Q,"text","",function(ae){ae.attr("data-notex",1)}),ie=a.ensureUniformFontSize(g,d.determineTextFont(L,q,z.font));ee.text(q._text||" ").classed("slicetext",!0).attr("text-anchor",N?"end":P||$?"start":"middle").call(l.font,ie).call(c.convertToTspans,g),q.textBB=l.bBox(ee.node()),q.transform=S(q,{fontSize:ie.size,isHeader:$}),q.transform.fontSize=ie.size,M?ee.transition().attrTween("transform",function(ae){var ue=O(ae,!1,re(),[w,k]);return function(le){return A(ue(le))}}):ee.attr("transform",A(q))}),Y}},{"../../components/drawing":388,"../../lib":503,"../../lib/svg_text_utils":529,"../sunburst/fx":1054,"../sunburst/helpers":1055,"../sunburst/plot":1059,"./constants":1078,"./partition":1087,"./style":1090,"@plotly/d3":58}],1083:[function(e,o,f){o.exports=function r(a,l,c){var i;c.swapXY&&(i=a.x0,a.x0=a.y0,a.y0=i,i=a.x1,a.x1=a.y1,a.y1=i),c.flipX&&(i=a.x0,a.x0=l[0]-a.x1,a.x1=l[0]-i),c.flipY&&(i=a.y0,a.y0=l[1]-a.y1,a.y1=l[1]-i);var s=a.children;if(s)for(var u=0;u-1?N+W:-(G+W):0,te={x0:B,x1:B,y0:K,y1:K+G},Y=function(Ee,ze,Fe){var Ve=b.tiling.pad,Ke=function(Ye){return Ye-Ve<=ze.x0},Re=function(Ye){return Ye+Ve>=ze.x1},qe=function(Ye){return Ye-Ve<=ze.y0},We=function(Ye){return Ye+Ve>=ze.y1};return Ee.x0===ze.x0&&Ee.x1===ze.x1&&Ee.y0===ze.y0&&Ee.y1===ze.y1?{x0:Ee.x0,x1:Ee.x1,y0:Ee.y0,y1:Ee.y1}:{x0:Ke(Ee.x0-Ve)?0:Re(Ee.x0-Ve)?Fe[0]:Ee.x0,x1:Ke(Ee.x1+Ve)?0:Re(Ee.x1+Ve)?Fe[0]:Ee.x1,y0:qe(Ee.y0-Ve)?0:We(Ee.y0-Ve)?Fe[1]:Ee.y0,y1:qe(Ee.y1+Ve)?0:We(Ee.y1+Ve)?Fe[1]:Ee.y1}},Z=null,re={},U={},q=null,$=function(Ee,ze){return ze?re[m(Ee)]:U[m(Ee)]},ne=function(Ee,ze,Fe,Ve){if(ze)return re[m(_)]||te;var Ke=U[b.level]||Fe;return function(Re){return Re.data.depth-S.data.depth=(Ve-=(T?Pt:Pt.r)-i)){var At=(Fe+Ve)/2;Fe=At,Ve=At}var at;Ye?Ke<(at=Re-(T?Pt:Pt.b))&&at"?(Ye.x-=Re,nt.x-=Re,ft.x-=Re,vt.x-=Re):we==="/"?(ft.x-=Re,vt.x-=Re,qe.x-=Re/2,We.x-=Re/2):we==="\\"?(Ye.x-=Re,nt.x-=Re,qe.x-=Re/2,We.x-=Re/2):we==="<"&&(qe.x-=Re,We.x-=Re),_e(Ye),_e(vt),_e(qe),_e(nt),_e(ft),_e(We),"M"+fe(Ye.x,Ye.y)+"L"+fe(nt.x,nt.y)+"L"+fe(We.x,We.y)+"L"+fe(ft.x,ft.y)+"L"+fe(vt.x,vt.y)+"L"+fe(qe.x,qe.y)+"Z"},toMoveInsideSlice:Te,makeUpdateSliceInterpolator:de,makeUpdateTextInterpolator:ye,handleSlicesExit:Me,hasTransition:O,strTransform:ke}):M.remove()}},{"../../lib":503,"../bar/constants":650,"../bar/plot":659,"../bar/uniform_text":664,"../sunburst/helpers":1055,"./constants":1078,"./draw_ancestors":1081,"@plotly/d3":58,"d3-interpolate":116}],1090:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../components/color"),l=e("../../lib"),c=e("../sunburst/helpers"),i=e("../bar/uniform_text").resizeText;function s(u,d,h,m){var g,p,v=(m||{}).hovered,y=d.data.data,x=y.i,w=y.color,k=c.isHierarchyRoot(d),b=1;if(v)g=h._hovered.marker.line.color,p=h._hovered.marker.line.width;else if(k&&w===h.root.color)b=100,g="rgba(0,0,0,0)",p=0;else if(g=l.castOption(h,x,"marker.line.color")||a.defaultLine,p=l.castOption(h,x,"marker.line.width")||0,!h._hasColorscale&&!d.onPathbar){var T=h.marker.depthfade;if(T){var _,S=a.combine(a.addOpacity(h._backgroundColor,.75),w);if(T===!0){var A=c.getMaxDepth(h);_=isFinite(A)?c.isLeaf(d)?0:h._maxVisibleLayers-(d.data.depth-h._entryDepth):d.data.height+1}else _=d.data.depth-h._entryDepth,h._atRootLevel||_++;if(_>0)for(var M=0;M<_;M++){var E=.5*M/_;w=a.combine(a.addOpacity(S,E),w)}}}u.style("stroke-width",p).call(a.fill,w).call(a.stroke,g).style("opacity",b)}o.exports={style:function(u){var d=u._fullLayout._treemaplayer.selectAll(".trace");i(u,d,"treemap"),d.each(function(h){var m=r.select(this),g=h[0].trace;m.style("opacity",g.opacity),m.selectAll("path.surface").each(function(p){r.select(this).call(s,p,g,{hovered:!1})})})},styleOne:s}},{"../../components/color":366,"../../lib":503,"../bar/uniform_text":664,"../sunburst/helpers":1055,"@plotly/d3":58}],1091:[function(e,o,f){var r=e("../box/attributes"),a=e("../../lib/extend").extendFlat,l=e("../../plots/cartesian/axis_format_attributes").axisHoverFormat;o.exports={y:r.y,x:r.x,x0:r.x0,y0:r.y0,xhoverformat:l("x"),yhoverformat:l("y"),name:a({},r.name,{}),orientation:a({},r.orientation,{}),bandwidth:{valType:"number",min:0,editType:"calc"},scalegroup:{valType:"string",dflt:"",editType:"calc"},scalemode:{valType:"enumerated",values:["width","count"],dflt:"width",editType:"calc"},spanmode:{valType:"enumerated",values:["soft","hard","manual"],dflt:"soft",editType:"calc"},span:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:r.fillcolor,points:a({},r.boxpoints,{}),jitter:a({},r.jitter,{}),pointpos:a({},r.pointpos,{}),width:a({},r.width,{}),marker:r.marker,text:r.text,hovertext:r.hovertext,hovertemplate:r.hovertemplate,box:{visible:{valType:"boolean",dflt:!1,editType:"plot"},width:{valType:"number",min:0,max:1,dflt:.25,editType:"plot"},fillcolor:{valType:"color",editType:"style"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"style"},editType:"plot"},meanline:{visible:{valType:"boolean",dflt:!1,editType:"plot"},color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"plot"},side:{valType:"enumerated",values:["both","positive","negative"],dflt:"both",editType:"calc"},offsetgroup:r.offsetgroup,alignmentgroup:r.alignmentgroup,selected:r.selected,unselected:r.unselected,hoveron:{valType:"flaglist",flags:["violins","points","kde"],dflt:"violins+points+kde",extras:["all"],editType:"style"}}},{"../../lib/extend":493,"../../plots/cartesian/axis_format_attributes":557,"../box/attributes":673}],1092:[function(e,o,f){var r=e("../../lib"),a=e("../../plots/cartesian/axes"),l=e("../box/calc"),c=e("./helpers"),i=e("../../constants/numerical").BADNUM;function s(d,h,m){var g=h.max-h.min;if(!g)return d.bandwidth?d.bandwidth:0;if(d.bandwidth)return Math.max(d.bandwidth,g/1e4);var p=m.length,v=r.stdev(m,p-1,h.mean);return Math.max(function(y,x,w){return 1.059*Math.min(x,w/1.349)*Math.pow(y,-.2)}(p,v,h.q3-h.q1),g/100)}function u(d,h,m,g){var p,v=d.spanmode,y=d.span||[],x=[h.min,h.max],w=[h.min-2*g,h.max+2*g];function k(T){var _=y[T],S=m.type==="multicategory"?m.r2c(_):m.d2c(_,0,d[h.valLetter+"calendar"]);return S===i?w[T]:S}var b={type:"linear",range:p=v==="soft"?w:v==="hard"?x:[k(0),k(1)]};return a.setConvert(b),b.cleanRange(),p}o.exports=function(d,h){var m=l(d,h);if(m[0].t.empty)return m;for(var g=d._fullLayout,p=a.getFromId(d,h[h.orientation==="h"?"xaxis":"yaxis"]),v=1/0,y=-1/0,x=0,w=0,k=0;k0){var _,S,A,M,E,D=i.xa,O=i.ya;y.orientation==="h"?(E=s,_="y",A=O,S="x",M=D):(E=u,_="x",A=D,S="y",M=O);var R=v[i.index];if(E>=R.span[0]&&E<=R.span[1]){var z=r.extendFlat({},i),L=M.c2p(E,!0),P=c.getKdeValue(R,y,E),N=c.getPositionOnKdePath(R,y,L),B=A._offset,G=A._length;z[_+"0"]=N[0],z[_+"1"]=N[1],z[S+"0"]=z[S+"1"]=L,z[S+"Label"]=S+": "+a.hoverLabelText(M,E,y[S+"hoverformat"])+", "+v[0].t.labels.kde+" "+P.toFixed(3),z.spikeDistance=T[0].spikeDistance;var W=_+"Spike";z[W]=T[0][W],T[0].spikeDistance=void 0,T[0][W]=void 0,z.hovertemplate=!1,b.push(z),(g={stroke:i.color})[_+"1"]=r.constrain(B+N[0],B,B+G),g[_+"2"]=r.constrain(B+N[1],B,B+G),g[S+"1"]=g[S+"2"]=M._offset+L}}w&&(b=b.concat(T))}x.indexOf("points")!==-1&&(m=l.hoverOnPoints(i,s,u));var K=p.selectAll(".violinline-"+y.uid).data(g?[0]:[]);return K.enter().append("line").classed("violinline-"+y.uid,!0).attr("stroke-width",1.5),K.exit().remove(),K.attr(g),d==="closest"?m?[m]:b:(m&&b.push(m),b)}},{"../../lib":503,"../../plots/cartesian/axes":554,"../box/hover":678,"./helpers":1095}],1097:[function(e,o,f){o.exports={attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults"),crossTraceDefaults:e("../box/defaults").crossTraceDefaults,supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc"),crossTraceCalc:e("./cross_trace_calc"),plot:e("./plot"),style:e("./style"),styleOnSelect:e("../scatter/style").styleOnSelect,hoverPoints:e("./hover"),selectPoints:e("../box/select"),moduleType:"trace",name:"violin",basePlotModule:e("../../plots/cartesian"),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","violinLayout","zoomScale"],meta:{}}},{"../../plots/cartesian":568,"../box/defaults":676,"../box/select":683,"../scatter/style":951,"./attributes":1091,"./calc":1092,"./cross_trace_calc":1093,"./defaults":1094,"./hover":1096,"./layout_attributes":1098,"./layout_defaults":1099,"./plot":1100,"./style":1101}],1098:[function(e,o,f){var r=e("../box/layout_attributes"),a=e("../../lib").extendFlat;o.exports={violinmode:a({},r.boxmode,{}),violingap:a({},r.boxgap,{}),violingroupgap:a({},r.boxgroupgap,{})}},{"../../lib":503,"../box/layout_attributes":680}],1099:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes"),l=e("../box/layout_defaults");o.exports=function(c,i,s){l._supply(c,i,s,function(u,d){return r.coerce(c,i,a,u,d)},"violin")}},{"../../lib":503,"../box/layout_defaults":681,"./layout_attributes":1098}],1100:[function(e,o,f){var r=e("@plotly/d3"),a=e("../../lib"),l=e("../../components/drawing"),c=e("../box/plot"),i=e("../scatter/line_points"),s=e("./helpers");o.exports=function(u,d,h,m){var g=u._fullLayout,p=d.xaxis,v=d.yaxis;function y(x){var w=i(x,{xaxis:p,yaxis:v,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0,linearized:!0});return l.smoothopen(w[0],1)}a.makeTraceGroups(m,h,"trace violins").each(function(x){var w=r.select(this),k=x[0],b=k.t,T=k.trace;if(T.visible!==!0||b.empty)w.remove();else{var _=b.bPos,S=b.bdPos,A=d[b.valLetter+"axis"],M=d[b.posLetter+"axis"],E=T.side==="both",D=E||T.side==="positive",O=E||T.side==="negative",R=w.selectAll("path.violin").data(a.identity);R.enter().append("path").style("vector-effect","non-scaling-stroke").attr("class","violin"),R.exit().remove(),R.each(function(K){var te,Y,Z,re,U,q,$,ne,H=r.select(this),Q=K.density,ee=Q.length,ie=M.c2l(K.pos+_,!0),ae=M.l2p(ie);if(T.width)te=b.maxKDE/S;else{var ue=g._violinScaleGroupStats[T.scalegroup];te=T.scalemode==="count"?ue.maxKDE/S*(ue.maxCount/K.pts.length):ue.maxKDE/S}if(D){for($=new Array(ee),U=0;U")),p.color=function(R,z){var L=R[z.dir].marker,P=L.color,N=L.line.color,B=L.line.width;if(a(P))return P;if(a(N)&&B)return N}(y,b),[p]}function O(R){return r(k,R,y[w+"hoverformat"])}}},{"../../components/color":366,"../../constants/delta.js":473,"../../plots/cartesian/axes":554,"../bar/hover":655}],1113:[function(e,o,f){o.exports={attributes:e("./attributes"),layoutAttributes:e("./layout_attributes"),supplyDefaults:e("./defaults").supplyDefaults,crossTraceDefaults:e("./defaults").crossTraceDefaults,supplyLayoutDefaults:e("./layout_defaults"),calc:e("./calc"),crossTraceCalc:e("./cross_trace_calc"),plot:e("./plot"),style:e("./style").style,hoverPoints:e("./hover"),eventData:e("./event_data"),selectPoints:e("../bar/select"),moduleType:"trace",name:"waterfall",basePlotModule:e("../../plots/cartesian"),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},{"../../plots/cartesian":568,"../bar/select":660,"./attributes":1106,"./calc":1107,"./cross_trace_calc":1109,"./defaults":1110,"./event_data":1111,"./hover":1112,"./layout_attributes":1114,"./layout_defaults":1115,"./plot":1116,"./style":1117}],1114:[function(e,o,f){o.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},{}],1115:[function(e,o,f){var r=e("../../lib"),a=e("./layout_attributes");o.exports=function(l,c,i){var s=!1;function u(m,g){return r.coerce(l,c,a,m,g)}for(var d=0;d0&&(N+=A?"M"+L[0]+","+P[1]+"V"+P[0]:"M"+L[1]+","+P[0]+"H"+L[0]),M!=="between"&&(O.isSum||R path").each(function(x){if(!x.isBlank){var w=y[x.dir].marker;r.select(this).call(l.fill,w.color).call(l.stroke,w.line.color).call(a.dashLine,w.line.dash,w.line.width).style("opacity",y.selectedpoints&&!x.selected?c:1)}}),u(v,y,d),v.selectAll(".lines").each(function(){var x=y.connector.line;a.lineGroupStyle(r.select(this).selectAll("path"),x.width,x.color,x.dash)})})}}},{"../../components/color":366,"../../components/drawing":388,"../../constants/interactions":478,"../bar/style":662,"../bar/uniform_text":664,"@plotly/d3":58}],1118:[function(e,o,f){var r=e("../plots/cartesian/axes"),a=e("../lib"),l=e("../plot_api/plot_schema"),c=e("./helpers").pointsAccessorFunction,i=e("../constants/numerical").BADNUM;f.moduleType="transform",f.name="aggregate";var s=f.attributes={enabled:{valType:"boolean",dflt:!0,editType:"calc"},groups:{valType:"string",strict:!0,noBlank:!0,arrayOk:!0,dflt:"x",editType:"calc"},aggregations:{_isLinkedToArray:"aggregation",target:{valType:"string",editType:"calc"},func:{valType:"enumerated",values:["count","sum","avg","median","mode","rms","stddev","min","max","first","last","change","range"],dflt:"first",editType:"calc"},funcmode:{valType:"enumerated",values:["sample","population"],dflt:"sample",editType:"calc"},enabled:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},editType:"calc"},u=s.aggregations;function d(p,v,y,x){if(x.enabled){for(var w=x.target,k=a.nestedProperty(v,w),b=k.get(),T=function(A,M){var E=A.func,D=M.d2c,O=M.c2d;switch(E){case"count":return h;case"first":return m;case"last":return g;case"sum":return function(R,z){for(var L=0,P=0;PP&&(P=W,N=G)}}return P?O(N):i};case"rms":return function(R,z){for(var L=0,P=0,N=0;N":return function(Z){return Y(Z)>K};case">=":return function(Z){return Y(Z)>=K};case"[]":return function(Z){var re=Y(Z);return re>=K[0]&&re<=K[1]};case"()":return function(Z){var re=Y(Z);return re>K[0]&&re=K[0]&&reK[0]&&re<=K[1]};case"][":return function(Z){var re=Y(Z);return re<=K[0]||re>=K[1]};case")(":return function(Z){var re=Y(Z);return reK[1]};case"](":return function(Z){var re=Y(Z);return re<=K[0]||re>K[1]};case")[":return function(Z){var re=Y(Z);return re=K[1]};case"{}":return function(Z){return K.indexOf(Y(Z))!==-1};case"}{":return function(Z){return K.indexOf(Y(Z))===-1}}}(g,l.getDataToCoordFunc(h,m,v,p),x),A={},M={},E=0;k?(T=function(z){A[z.astr]=r.extendDeep([],z.get()),z.set(new Array(y))},_=function(z,L){var P=A[z.astr][L];z.get()[L]=P}):(T=function(z){A[z.astr]=r.extendDeep([],z.get()),z.set([])},_=function(z,L){var P=A[z.astr][L];z.get().push(P)}),R(T);for(var D=c(m.transforms,g),O=0;O1?"%{group} (%{trace})":"%{group}");var p=s.styles,v=m.styles=[];if(p)for(h=0;h0?k-4:k;for(x=0;x>16&255,T[_++]=y>>8&255,T[_++]=255&y;return b===2&&(y=s[v.charCodeAt(x)]<<2|s[v.charCodeAt(x+1)]>>4,T[_++]=255&y),b===1&&(y=s[v.charCodeAt(x)]<<10|s[v.charCodeAt(x+1)]<<4|s[v.charCodeAt(x+2)]>>2,T[_++]=y>>8&255,T[_++]=255&y),T},c.fromByteArray=function(v){for(var y,x=v.length,w=x%3,k=[],b=0,T=x-w;bT?T:b+16383));return w===1?(y=v[x-1],k.push(i[y>>2]+i[y<<4&63]+"==")):w===2&&(y=(v[x-2]<<8)+v[x-1],k.push(i[y>>10]+i[y>>4&63]+i[y<<2&63]+"=")),k.join("")};for(var i=[],s=[],u=typeof Uint8Array<"u"?Uint8Array:Array,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,m=d.length;h0)throw new Error("Invalid string. Length must be a multiple of 4");var x=v.indexOf("=");return x===-1&&(x=y),[x,x===y?0:4-x%4]}function p(v,y,x){for(var w,k,b=[],T=y;T>18&63]+i[k>>12&63]+i[k>>6&63]+i[63&k]);return b.join("")}s["-".charCodeAt(0)]=62,s["_".charCodeAt(0)]=63},{}],2:[function(a,l,c){},{}],3:[function(a,l,c){(function(i){(function(){var s=a("base64-js"),u=a("ieee754");c.Buffer=h,c.SlowBuffer=function(H){return+H!=H&&(H=0),h.alloc(+H)},c.INSPECT_MAX_BYTES=50;function d(H){if(H>2147483647)throw new RangeError('The value "'+H+'" is invalid for option "size"');var Q=new Uint8Array(H);return Q.__proto__=h.prototype,Q}function h(H,Q,ee){if(typeof H=="number"){if(typeof Q=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return p(H)}return m(H,Q,ee)}function m(H,Q,ee){if(typeof H=="string")return function(ue,le){if(typeof le=="string"&&le!==""||(le="utf8"),!h.isEncoding(le))throw new TypeError("Unknown encoding: "+le);var ge=0|x(ue,le),fe=d(ge),me=fe.write(ue,le);return me!==ge&&(fe=fe.slice(0,me)),fe}(H,Q);if(ArrayBuffer.isView(H))return v(H);if(H==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof H);if($(H,ArrayBuffer)||H&&$(H.buffer,ArrayBuffer))return function(ue,le,ge){if(le<0||ue.byteLength=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647 .toString(16)+" bytes");return 0|H}function x(H,Q){if(h.isBuffer(H))return H.length;if(ArrayBuffer.isView(H)||$(H,ArrayBuffer))return H.byteLength;if(typeof H!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof H);var ee=H.length,ie=arguments.length>2&&arguments[2]===!0;if(!ie&&ee===0)return 0;for(var ae=!1;;)switch(Q){case"ascii":case"latin1":case"binary":return ee;case"utf8":case"utf-8":return re(H).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*ee;case"hex":return ee>>>1;case"base64":return U(H).length;default:if(ae)return ie?-1:re(H).length;Q=(""+Q).toLowerCase(),ae=!0}}function w(H,Q,ee){var ie=!1;if((Q===void 0||Q<0)&&(Q=0),Q>this.length||((ee===void 0||ee>this.length)&&(ee=this.length),ee<=0)||(ee>>>=0)<=(Q>>>=0))return"";for(H||(H="utf8");;)switch(H){case"hex":return P(this,Q,ee);case"utf8":case"utf-8":return R(this,Q,ee);case"ascii":return z(this,Q,ee);case"latin1":case"binary":return L(this,Q,ee);case"base64":return O(this,Q,ee);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,Q,ee);default:if(ie)throw new TypeError("Unknown encoding: "+H);H=(H+"").toLowerCase(),ie=!0}}function k(H,Q,ee){var ie=H[Q];H[Q]=H[ee],H[ee]=ie}function b(H,Q,ee,ie,ae){if(H.length===0)return-1;if(typeof ee=="string"?(ie=ee,ee=0):ee>2147483647?ee=2147483647:ee<-2147483648&&(ee=-2147483648),ne(ee=+ee)&&(ee=ae?0:H.length-1),ee<0&&(ee=H.length+ee),ee>=H.length){if(ae)return-1;ee=H.length-1}else if(ee<0){if(!ae)return-1;ee=0}if(typeof Q=="string"&&(Q=h.from(Q,ie)),h.isBuffer(Q))return Q.length===0?-1:T(H,Q,ee,ie,ae);if(typeof Q=="number")return Q&=255,typeof Uint8Array.prototype.indexOf=="function"?ae?Uint8Array.prototype.indexOf.call(H,Q,ee):Uint8Array.prototype.lastIndexOf.call(H,Q,ee):T(H,[Q],ee,ie,ae);throw new TypeError("val must be string, number or Buffer")}function T(H,Q,ee,ie,ae){var ue,le=1,ge=H.length,fe=Q.length;if(ie!==void 0&&((ie=String(ie).toLowerCase())==="ucs2"||ie==="ucs-2"||ie==="utf16le"||ie==="utf-16le")){if(H.length<2||Q.length<2)return-1;le=2,ge/=2,fe/=2,ee/=2}function me(Oe,de){return le===1?Oe[de]:Oe.readUInt16BE(de*le)}if(ae){var _e=-1;for(ue=ee;uege&&(ee=ge-fe),ue=ee;ue>=0;ue--){for(var we=!0,Te=0;Teae&&(ie=ae):ie=ae;var ue=Q.length;ie>ue/2&&(ie=ue/2);for(var le=0;le>8,fe=le%256,me.push(fe),me.push(ge);return me}(Q,H.length-ee),H,ee,ie)}function O(H,Q,ee){return Q===0&&ee===H.length?s.fromByteArray(H):s.fromByteArray(H.slice(Q,ee))}function R(H,Q,ee){ee=Math.min(H.length,ee);for(var ie=[],ae=Q;ae239?4:me>223?3:me>191?2:1;if(ae+we<=ee)switch(we){case 1:me<128&&(_e=me);break;case 2:(192&(ue=H[ae+1]))==128&&(fe=(31&me)<<6|63&ue)>127&&(_e=fe);break;case 3:ue=H[ae+1],le=H[ae+2],(192&ue)==128&&(192&le)==128&&(fe=(15&me)<<12|(63&ue)<<6|63&le)>2047&&(fe<55296||fe>57343)&&(_e=fe);break;case 4:ue=H[ae+1],le=H[ae+2],ge=H[ae+3],(192&ue)==128&&(192&le)==128&&(192&ge)==128&&(fe=(15&me)<<18|(63&ue)<<12|(63&le)<<6|63&ge)>65535&&fe<1114112&&(_e=fe)}_e===null?(_e=65533,we=1):_e>65535&&(_e-=65536,ie.push(_e>>>10&1023|55296),_e=56320|1023&_e),ie.push(_e),ae+=we}return function(Te){var Oe=Te.length;if(Oe<=4096)return String.fromCharCode.apply(String,Te);for(var de="",ye=0;ye"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}}),typeof Symbol<"u"&&Symbol.species!=null&&h[Symbol.species]===h&&Object.defineProperty(h,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),h.poolSize=8192,h.from=function(H,Q,ee){return m(H,Q,ee)},h.prototype.__proto__=Uint8Array.prototype,h.__proto__=Uint8Array,h.alloc=function(H,Q,ee){return function(ie,ae,ue){return g(ie),ie<=0?d(ie):ae!==void 0?typeof ue=="string"?d(ie).fill(ae,ue):d(ie).fill(ae):d(ie)}(H,Q,ee)},h.allocUnsafe=function(H){return p(H)},h.allocUnsafeSlow=function(H){return p(H)},h.isBuffer=function(H){return H!=null&&H._isBuffer===!0&&H!==h.prototype},h.compare=function(H,Q){if($(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),$(Q,Uint8Array)&&(Q=h.from(Q,Q.offset,Q.byteLength)),!h.isBuffer(H)||!h.isBuffer(Q))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(H===Q)return 0;for(var ee=H.length,ie=Q.length,ae=0,ue=Math.min(ee,ie);aeQ&&(H+=" ... "),""},h.prototype.compare=function(H,Q,ee,ie,ae){if($(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),!h.isBuffer(H))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof H);if(Q===void 0&&(Q=0),ee===void 0&&(ee=H?H.length:0),ie===void 0&&(ie=0),ae===void 0&&(ae=this.length),Q<0||ee>H.length||ie<0||ae>this.length)throw new RangeError("out of range index");if(ie>=ae&&Q>=ee)return 0;if(ie>=ae)return-1;if(Q>=ee)return 1;if(this===H)return 0;for(var ue=(ae>>>=0)-(ie>>>=0),le=(ee>>>=0)-(Q>>>=0),ge=Math.min(ue,le),fe=this.slice(ie,ae),me=H.slice(Q,ee),_e=0;_e>>=0,isFinite(ee)?(ee>>>=0,ie===void 0&&(ie="utf8")):(ie=ee,ee=void 0)}var ae=this.length-Q;if((ee===void 0||ee>ae)&&(ee=ae),H.length>0&&(ee<0||Q<0)||Q>this.length)throw new RangeError("Attempt to write outside buffer bounds");ie||(ie="utf8");for(var ue=!1;;)switch(ie){case"hex":return _(this,H,Q,ee);case"utf8":case"utf-8":return S(this,H,Q,ee);case"ascii":return A(this,H,Q,ee);case"latin1":case"binary":return M(this,H,Q,ee);case"base64":return E(this,H,Q,ee);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,H,Q,ee);default:if(ue)throw new TypeError("Unknown encoding: "+ie);ie=(""+ie).toLowerCase(),ue=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function z(H,Q,ee){var ie="";ee=Math.min(H.length,ee);for(var ae=Q;aeie)&&(ee=ie);for(var ae="",ue=Q;ueee)throw new RangeError("Trying to access beyond buffer length")}function G(H,Q,ee,ie,ae,ue){if(!h.isBuffer(H))throw new TypeError('"buffer" argument must be a Buffer instance');if(Q>ae||QH.length)throw new RangeError("Index out of range")}function W(H,Q,ee,ie,ae,ue){if(ee+ie>H.length)throw new RangeError("Index out of range");if(ee<0)throw new RangeError("Index out of range")}function K(H,Q,ee,ie,ae){return Q=+Q,ee>>>=0,ae||W(H,0,ee,4),u.write(H,Q,ee,ie,23,4),ee+4}function te(H,Q,ee,ie,ae){return Q=+Q,ee>>>=0,ae||W(H,0,ee,8),u.write(H,Q,ee,ie,52,8),ee+8}h.prototype.slice=function(H,Q){var ee=this.length;(H=~~H)<0?(H+=ee)<0&&(H=0):H>ee&&(H=ee),(Q=Q===void 0?ee:~~Q)<0?(Q+=ee)<0&&(Q=0):Q>ee&&(Q=ee),Q>>=0,Q>>>=0,ee||B(H,Q,this.length);for(var ie=this[H],ae=1,ue=0;++ue>>=0,Q>>>=0,ee||B(H,Q,this.length);for(var ie=this[H+--Q],ae=1;Q>0&&(ae*=256);)ie+=this[H+--Q]*ae;return ie},h.prototype.readUInt8=function(H,Q){return H>>>=0,Q||B(H,1,this.length),this[H]},h.prototype.readUInt16LE=function(H,Q){return H>>>=0,Q||B(H,2,this.length),this[H]|this[H+1]<<8},h.prototype.readUInt16BE=function(H,Q){return H>>>=0,Q||B(H,2,this.length),this[H]<<8|this[H+1]},h.prototype.readUInt32LE=function(H,Q){return H>>>=0,Q||B(H,4,this.length),(this[H]|this[H+1]<<8|this[H+2]<<16)+16777216*this[H+3]},h.prototype.readUInt32BE=function(H,Q){return H>>>=0,Q||B(H,4,this.length),16777216*this[H]+(this[H+1]<<16|this[H+2]<<8|this[H+3])},h.prototype.readIntLE=function(H,Q,ee){H>>>=0,Q>>>=0,ee||B(H,Q,this.length);for(var ie=this[H],ae=1,ue=0;++ue=(ae*=128)&&(ie-=Math.pow(2,8*Q)),ie},h.prototype.readIntBE=function(H,Q,ee){H>>>=0,Q>>>=0,ee||B(H,Q,this.length);for(var ie=Q,ae=1,ue=this[H+--ie];ie>0&&(ae*=256);)ue+=this[H+--ie]*ae;return ue>=(ae*=128)&&(ue-=Math.pow(2,8*Q)),ue},h.prototype.readInt8=function(H,Q){return H>>>=0,Q||B(H,1,this.length),128&this[H]?-1*(255-this[H]+1):this[H]},h.prototype.readInt16LE=function(H,Q){H>>>=0,Q||B(H,2,this.length);var ee=this[H]|this[H+1]<<8;return 32768&ee?4294901760|ee:ee},h.prototype.readInt16BE=function(H,Q){H>>>=0,Q||B(H,2,this.length);var ee=this[H+1]|this[H]<<8;return 32768&ee?4294901760|ee:ee},h.prototype.readInt32LE=function(H,Q){return H>>>=0,Q||B(H,4,this.length),this[H]|this[H+1]<<8|this[H+2]<<16|this[H+3]<<24},h.prototype.readInt32BE=function(H,Q){return H>>>=0,Q||B(H,4,this.length),this[H]<<24|this[H+1]<<16|this[H+2]<<8|this[H+3]},h.prototype.readFloatLE=function(H,Q){return H>>>=0,Q||B(H,4,this.length),u.read(this,H,!0,23,4)},h.prototype.readFloatBE=function(H,Q){return H>>>=0,Q||B(H,4,this.length),u.read(this,H,!1,23,4)},h.prototype.readDoubleLE=function(H,Q){return H>>>=0,Q||B(H,8,this.length),u.read(this,H,!0,52,8)},h.prototype.readDoubleBE=function(H,Q){return H>>>=0,Q||B(H,8,this.length),u.read(this,H,!1,52,8)},h.prototype.writeUIntLE=function(H,Q,ee,ie){H=+H,Q>>>=0,ee>>>=0,ie||G(this,H,Q,ee,Math.pow(2,8*ee)-1,0);var ae=1,ue=0;for(this[Q]=255&H;++ue>>=0,ee>>>=0,ie||G(this,H,Q,ee,Math.pow(2,8*ee)-1,0);var ae=ee-1,ue=1;for(this[Q+ae]=255&H;--ae>=0&&(ue*=256);)this[Q+ae]=H/ue&255;return Q+ee},h.prototype.writeUInt8=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,1,255,0),this[Q]=255&H,Q+1},h.prototype.writeUInt16LE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,2,65535,0),this[Q]=255&H,this[Q+1]=H>>>8,Q+2},h.prototype.writeUInt16BE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,2,65535,0),this[Q]=H>>>8,this[Q+1]=255&H,Q+2},h.prototype.writeUInt32LE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,4,4294967295,0),this[Q+3]=H>>>24,this[Q+2]=H>>>16,this[Q+1]=H>>>8,this[Q]=255&H,Q+4},h.prototype.writeUInt32BE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,4,4294967295,0),this[Q]=H>>>24,this[Q+1]=H>>>16,this[Q+2]=H>>>8,this[Q+3]=255&H,Q+4},h.prototype.writeIntLE=function(H,Q,ee,ie){if(H=+H,Q>>>=0,!ie){var ae=Math.pow(2,8*ee-1);G(this,H,Q,ee,ae-1,-ae)}var ue=0,le=1,ge=0;for(this[Q]=255&H;++ue>0)-ge&255;return Q+ee},h.prototype.writeIntBE=function(H,Q,ee,ie){if(H=+H,Q>>>=0,!ie){var ae=Math.pow(2,8*ee-1);G(this,H,Q,ee,ae-1,-ae)}var ue=ee-1,le=1,ge=0;for(this[Q+ue]=255&H;--ue>=0&&(le*=256);)H<0&&ge===0&&this[Q+ue+1]!==0&&(ge=1),this[Q+ue]=(H/le>>0)-ge&255;return Q+ee},h.prototype.writeInt8=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,1,127,-128),H<0&&(H=255+H+1),this[Q]=255&H,Q+1},h.prototype.writeInt16LE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,2,32767,-32768),this[Q]=255&H,this[Q+1]=H>>>8,Q+2},h.prototype.writeInt16BE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,2,32767,-32768),this[Q]=H>>>8,this[Q+1]=255&H,Q+2},h.prototype.writeInt32LE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,4,2147483647,-2147483648),this[Q]=255&H,this[Q+1]=H>>>8,this[Q+2]=H>>>16,this[Q+3]=H>>>24,Q+4},h.prototype.writeInt32BE=function(H,Q,ee){return H=+H,Q>>>=0,ee||G(this,H,Q,4,2147483647,-2147483648),H<0&&(H=4294967295+H+1),this[Q]=H>>>24,this[Q+1]=H>>>16,this[Q+2]=H>>>8,this[Q+3]=255&H,Q+4},h.prototype.writeFloatLE=function(H,Q,ee){return K(this,H,Q,!0,ee)},h.prototype.writeFloatBE=function(H,Q,ee){return K(this,H,Q,!1,ee)},h.prototype.writeDoubleLE=function(H,Q,ee){return te(this,H,Q,!0,ee)},h.prototype.writeDoubleBE=function(H,Q,ee){return te(this,H,Q,!1,ee)},h.prototype.copy=function(H,Q,ee,ie){if(!h.isBuffer(H))throw new TypeError("argument should be a Buffer");if(ee||(ee=0),ie||ie===0||(ie=this.length),Q>=H.length&&(Q=H.length),Q||(Q=0),ie>0&&ie=this.length)throw new RangeError("Index out of range");if(ie<0)throw new RangeError("sourceEnd out of bounds");ie>this.length&&(ie=this.length),H.length-Q=0;--ue)H[ue+Q]=this[ue+ee];else Uint8Array.prototype.set.call(H,this.subarray(ee,ie),Q);return ae},h.prototype.fill=function(H,Q,ee,ie){if(typeof H=="string"){if(typeof Q=="string"?(ie=Q,Q=0,ee=this.length):typeof ee=="string"&&(ie=ee,ee=this.length),ie!==void 0&&typeof ie!="string")throw new TypeError("encoding must be a string");if(typeof ie=="string"&&!h.isEncoding(ie))throw new TypeError("Unknown encoding: "+ie);if(H.length===1){var ae=H.charCodeAt(0);(ie==="utf8"&&ae<128||ie==="latin1")&&(H=ae)}}else typeof H=="number"&&(H&=255);if(Q<0||this.length>>=0,ee=ee===void 0?this.length:ee>>>0,H||(H=0),typeof H=="number")for(ue=Q;ue55295&&ee<57344){if(!ae){if(ee>56319){(Q-=3)>-1&&ue.push(239,191,189);continue}if(le+1===ie){(Q-=3)>-1&&ue.push(239,191,189);continue}ae=ee;continue}if(ee<56320){(Q-=3)>-1&&ue.push(239,191,189),ae=ee;continue}ee=65536+(ae-55296<<10|ee-56320)}else ae&&(Q-=3)>-1&&ue.push(239,191,189);if(ae=null,ee<128){if((Q-=1)<0)break;ue.push(ee)}else if(ee<2048){if((Q-=2)<0)break;ue.push(ee>>6|192,63&ee|128)}else if(ee<65536){if((Q-=3)<0)break;ue.push(ee>>12|224,ee>>6&63|128,63&ee|128)}else{if(!(ee<1114112))throw new Error("Invalid code point");if((Q-=4)<0)break;ue.push(ee>>18|240,ee>>12&63|128,ee>>6&63|128,63&ee|128)}}return ue}function U(H){return s.toByteArray(function(Q){if((Q=(Q=Q.split("=")[0]).trim().replace(Y,"")).length<2)return"";for(;Q.length%4!=0;)Q+="=";return Q}(H))}function q(H,Q,ee,ie){for(var ae=0;ae=Q.length||ae>=H.length);++ae)Q[ae+ee]=H[ae];return ae}function $(H,Q){return H instanceof Q||H!=null&&H.constructor!=null&&H.constructor.name!=null&&H.constructor.name===Q.name}function ne(H){return H!=H}}).call(this)}).call(this,a("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:4}],4:[function(a,l,c){c.read=function(i,s,u,d,h){var m,g,p=8*h-d-1,v=(1<>1,x=-7,w=u?h-1:0,k=u?-1:1,b=i[s+w];for(w+=k,m=b&(1<<-x)-1,b>>=-x,x+=p;x>0;m=256*m+i[s+w],w+=k,x-=8);for(g=m&(1<<-x)-1,m>>=-x,x+=d;x>0;g=256*g+i[s+w],w+=k,x-=8);if(m===0)m=1-y;else{if(m===v)return g?NaN:1/0*(b?-1:1);g+=Math.pow(2,d),m-=y}return(b?-1:1)*g*Math.pow(2,m-d)},c.write=function(i,s,u,d,h,m){var g,p,v,y=8*m-h-1,x=(1<>1,k=h===23?Math.pow(2,-24)-Math.pow(2,-77):0,b=d?0:m-1,T=d?1:-1,_=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(p=isNaN(s)?1:0,g=x):(g=Math.floor(Math.log(s)/Math.LN2),s*(v=Math.pow(2,-g))<1&&(g--,v*=2),(s+=g+w>=1?k/v:k*Math.pow(2,1-w))*v>=2&&(g++,v/=2),g+w>=x?(p=0,g=x):g+w>=1?(p=(s*v-1)*Math.pow(2,h),g+=w):(p=s*Math.pow(2,w-1)*Math.pow(2,h),g=0));h>=8;i[u+b]=255&p,b+=T,p/=256,h-=8);for(g=g<0;i[u+b]=255&g,b+=T,g/=256,y-=8);i[u+b-T]|=128*_}},{}],5:[function(a,l,c){var i,s,u=l.exports={};function d(){throw new Error("setTimeout has not been defined")}function h(){throw new Error("clearTimeout has not been defined")}function m(T){if(i===setTimeout)return setTimeout(T,0);if((i===d||!i)&&setTimeout)return i=setTimeout,setTimeout(T,0);try{return i(T,0)}catch{try{return i.call(null,T,0)}catch{return i.call(this,T,0)}}}(function(){try{i=typeof setTimeout=="function"?setTimeout:d}catch{i=d}try{s=typeof clearTimeout=="function"?clearTimeout:h}catch{s=h}})();var g,p=[],v=!1,y=-1;function x(){v&&g&&(v=!1,g.length?p=g.concat(p):y=-1,p.length&&w())}function w(){if(!v){var T=m(x);v=!0;for(var _=p.length;_;){for(g=p,p=[];++y<_;)g&&g[y].run();y=-1,_=p.length}g=null,v=!1,function(S){if(s===clearTimeout)return clearTimeout(S);if((s===h||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(S);try{s(S)}catch{try{return s.call(null,S)}catch{return s.call(this,S)}}}(T)}}function k(T,_){this.fun=T,this.array=_}function b(){}u.nextTick=function(T){var _=new Array(arguments.length-1);if(arguments.length>1)for(var S=1;S"u"?a("weak-map"):WeakMap,s=a("gl-buffer"),u=a("gl-vao"),d=new i;l.exports=function(h){var m=d.get(h),g=m&&(m._triangleBuffer.handle||m._triangleBuffer.buffer);if(!g||!h.isBuffer(g)){var p=s(h,new Float32Array([-1,-1,-1,4,4,-1]));(m=u(h,[{buffer:p,type:h.FLOAT,size:2}]))._triangleBuffer=p,d.set(h,m)}m.bind(),h.drawArrays(h.TRIANGLES,0,3),m.unbind()}},{"gl-buffer":78,"gl-vao":150,"weak-map":313}],9:[function(a,l,c){var i=a("pad-left");l.exports=function(s,u,d){u=typeof u=="number"?u:1,d=d||": ";var h=s.split(/\r?\n/),m=String(h.length+u-1).length;return h.map(function(g,p){var v=p+u,y=String(v).length;return i(v,m-y)+d+g}).join(` +`)}},{"pad-left":264}],10:[function(a,l,c){l.exports=function(u){var d=u.length;if(d===0)return[];if(d===1)return[0];for(var h=u[0].length,m=[u[0]],g=[0],p=1;p0?y=y.ushln(w):w<0&&(x=x.ushln(-w)),h(y,x)}},{"./div":17,"./is-rat":19,"./lib/is-bn":23,"./lib/num-to-bn":24,"./lib/rationalize":25,"./lib/str-to-bn":26}],19:[function(a,l,c){var i=a("./lib/is-bn");l.exports=function(s){return Array.isArray(s)&&s.length===2&&i(s[0])&&i(s[1])}},{"./lib/is-bn":23}],20:[function(a,l,c){var i=a("bn.js");l.exports=function(s){return s.cmp(new i(0))}},{"bn.js":33}],21:[function(a,l,c){var i=a("./bn-sign");l.exports=function(s){var u=s.length,d=s.words,h=0;if(u===1)h=d[0];else if(u===2)h=d[0]+67108864*d[1];else for(var m=0;m20?52:h+32}},{"bit-twiddle":32,"double-bits":64}],23:[function(a,l,c){a("bn.js"),l.exports=function(i){return i&&typeof i=="object"&&Boolean(i.words)}},{"bn.js":33}],24:[function(a,l,c){var i=a("bn.js"),s=a("double-bits");l.exports=function(u){var d=s.exponent(u);return d<52?new i(u):new i(u*Math.pow(2,52-d)).ushln(d-52)}},{"bn.js":33,"double-bits":64}],25:[function(a,l,c){var i=a("./num-to-bn"),s=a("./bn-sign");l.exports=function(u,d){var h=s(u),m=s(d);if(h===0)return[i(0),i(1)];if(m===0)return[i(0),i(0)];m<0&&(u=u.neg(),d=d.neg());var g=u.gcd(d);return g.cmpn(1)?[u.div(g),d.div(g)]:[u,d]}},{"./bn-sign":20,"./num-to-bn":24}],26:[function(a,l,c){var i=a("bn.js");l.exports=function(s){return new i(s)}},{"bn.js":33}],27:[function(a,l,c){var i=a("./lib/rationalize");l.exports=function(s,u){return i(s[0].mul(u[0]),s[1].mul(u[1]))}},{"./lib/rationalize":25}],28:[function(a,l,c){var i=a("./lib/bn-sign");l.exports=function(s){return i(s[0])*i(s[1])}},{"./lib/bn-sign":20}],29:[function(a,l,c){var i=a("./lib/rationalize");l.exports=function(s,u){return i(s[0].mul(u[1]).sub(s[1].mul(u[0])),s[1].mul(u[1]))}},{"./lib/rationalize":25}],30:[function(a,l,c){var i=a("./lib/bn-to-num"),s=a("./lib/ctz");l.exports=function(u){var d=u[0],h=u[1];if(d.cmpn(0)===0)return 0;var m=d.abs().divmod(h.abs()),g=m.div,p=i(g),v=m.mod,y=d.negative!==h.negative?-1:1;if(v.cmpn(0)===0)return y*p;if(p){var x=s(p)+4,w=i(v.ushln(x).divRound(h));return y*(p+w*Math.pow(2,-x))}var k=h.bitLength()-v.bitLength()+53;return w=i(v.ushln(k).divRound(h)),k<1023?y*w*Math.pow(2,-k):(w*=Math.pow(2,-1023),y*w*Math.pow(2,1023-k))}},{"./lib/bn-to-num":21,"./lib/ctz":22}],31:[function(a,l,c){function i(g,p,v,y,x){for(var w=x+1;y<=x;){var k=y+x>>>1,b=g[k];(v!==void 0?v(b,p):b-p)>=0?(w=k,x=k-1):y=k+1}return w}function s(g,p,v,y,x){for(var w=x+1;y<=x;){var k=y+x>>>1,b=g[k];(v!==void 0?v(b,p):b-p)>0?(w=k,x=k-1):y=k+1}return w}function u(g,p,v,y,x){for(var w=y-1;y<=x;){var k=y+x>>>1,b=g[k];(v!==void 0?v(b,p):b-p)<0?(w=k,y=k+1):x=k-1}return w}function d(g,p,v,y,x){for(var w=y-1;y<=x;){var k=y+x>>>1,b=g[k];(v!==void 0?v(b,p):b-p)<=0?(w=k,y=k+1):x=k-1}return w}function h(g,p,v,y,x){for(;y<=x;){var w=y+x>>>1,k=g[w],b=v!==void 0?v(k,p):k-p;if(b===0)return w;b<=0?y=w+1:x=w-1}return-1}function m(g,p,v,y,x,w){return typeof v=="function"?w(g,p,v,y===void 0?0:0|y,x===void 0?g.length-1:0|x):w(g,p,void 0,v===void 0?0:0|v,y===void 0?g.length-1:0|y)}l.exports={ge:function(g,p,v,y,x){return m(g,p,v,y,x,i)},gt:function(g,p,v,y,x){return m(g,p,v,y,x,s)},lt:function(g,p,v,y,x){return m(g,p,v,y,x,u)},le:function(g,p,v,y,x){return m(g,p,v,y,x,d)},eq:function(g,p,v,y,x){return m(g,p,v,y,x,h)}}},{}],32:[function(a,l,c){function i(u){var d=32;return(u&=-u)&&d--,65535&u&&(d-=16),16711935&u&&(d-=8),252645135&u&&(d-=4),858993459&u&&(d-=2),1431655765&u&&(d-=1),d}c.INT_BITS=32,c.INT_MAX=2147483647,c.INT_MIN=-1<<31,c.sign=function(u){return(u>0)-(u<0)},c.abs=function(u){var d=u>>31;return(u^d)-d},c.min=function(u,d){return d^(u^d)&-(u65535)<<4,d|=h=((u>>>=d)>255)<<3,d|=h=((u>>>=h)>15)<<2,(d|=h=((u>>>=h)>3)<<1)|(u>>>=h)>>1},c.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},c.popCount=function(u){return 16843009*((u=(858993459&(u-=u>>>1&1431655765))+(u>>>2&858993459))+(u>>>4)&252645135)>>>24},c.countTrailingZeros=i,c.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,(u|=u>>>16)+1},c.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,(u|=u>>>16)-(u>>>1)},c.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,27030>>>(u&=15)&1};var s=new Array(256);(function(u){for(var d=0;d<256;++d){var h=d,m=d,g=7;for(h>>>=1;h;h>>>=1)m<<=1,m|=1&h,--g;u[d]=m<>>8&255]<<16|s[u>>>16&255]<<8|s[u>>>24&255]},c.interleave2=function(u,d){return(u=1431655765&((u=858993459&((u=252645135&((u=16711935&((u&=65535)|u<<8))|u<<4))|u<<2))|u<<1))|(d=1431655765&((d=858993459&((d=252645135&((d=16711935&((d&=65535)|d<<8))|d<<4))|d<<2))|d<<1))<<1},c.deinterleave2=function(u,d){return(u=65535&((u=16711935&((u=252645135&((u=858993459&((u=u>>>d&1431655765)|u>>>1))|u>>>2))|u>>>4))|u>>>16))<<16>>16},c.interleave3=function(u,d,h){return u=1227133513&((u=3272356035&((u=251719695&((u=4278190335&((u&=1023)|u<<16))|u<<8))|u<<4))|u<<2),(u|=(d=1227133513&((d=3272356035&((d=251719695&((d=4278190335&((d&=1023)|d<<16))|d<<8))|d<<4))|d<<2))<<1)|(h=1227133513&((h=3272356035&((h=251719695&((h=4278190335&((h&=1023)|h<<16))|h<<8))|h<<4))|h<<2))<<2},c.deinterleave3=function(u,d){return(u=1023&((u=4278190335&((u=251719695&((u=3272356035&((u=u>>>d&1227133513)|u>>>2))|u>>>4))|u>>>8))|u>>>16))<<22>>22},c.nextCombination=function(u){var d=u|u-1;return d+1|(~d&-~d)-1>>>i(u)+1}},{}],33:[function(a,l,c){(function(i,s){function u(L,P){if(!L)throw new Error(P||"Assertion failed")}function d(L,P){L.super_=P;var N=function(){};N.prototype=P.prototype,L.prototype=new N,L.prototype.constructor=L}function h(L,P,N){if(h.isBN(L))return L;this.negative=0,this.words=null,this.length=0,this.red=null,L!==null&&(P!=="le"&&P!=="be"||(N=P,P=10),this._init(L||0,P||10,N||"be"))}var m;typeof i=="object"?i.exports=h:s.BN=h,h.BN=h,h.wordSize=26;try{m=typeof window<"u"&&window.Buffer!==void 0?window.Buffer:a("buffer").Buffer}catch{}function g(L,P){var N=L.charCodeAt(P);return N>=65&&N<=70?N-55:N>=97&&N<=102?N-87:N-48&15}function p(L,P,N){var B=g(L,N);return N-1>=P&&(B|=g(L,N-1)<<4),B}function v(L,P,N,B){for(var G=0,W=Math.min(L.length,N),K=P;K=49?te-49+10:te>=17?te-17+10:te}return G}h.isBN=function(L){return L instanceof h||L!==null&&typeof L=="object"&&L.constructor.wordSize===h.wordSize&&Array.isArray(L.words)},h.max=function(L,P){return L.cmp(P)>0?L:P},h.min=function(L,P){return L.cmp(P)<0?L:P},h.prototype._init=function(L,P,N){if(typeof L=="number")return this._initNumber(L,P,N);if(typeof L=="object")return this._initArray(L,P,N);P==="hex"&&(P=16),u(P===(0|P)&&P>=2&&P<=36);var B=0;(L=L.toString().replace(/\s+/g,""))[0]==="-"&&(B++,this.negative=1),B=0;B-=3)W=L[B]|L[B-1]<<8|L[B-2]<<16,this.words[G]|=W<>>26-K&67108863,(K+=24)>=26&&(K-=26,G++);else if(N==="le")for(B=0,G=0;B>>26-K&67108863,(K+=24)>=26&&(K-=26,G++);return this.strip()},h.prototype._parseHex=function(L,P,N){this.length=Math.ceil((L.length-P)/6),this.words=new Array(this.length);for(var B=0;B=P;B-=2)G=p(L,P,B)<=18?(W-=18,K+=1,this.words[K]|=G>>>26):W+=8;else for(B=(L.length-P)%2==0?P+1:P;B=18?(W-=18,K+=1,this.words[K]|=G>>>26):W+=8;this.strip()},h.prototype._parseBase=function(L,P,N){this.words=[0],this.length=1;for(var B=0,G=1;G<=67108863;G*=P)B++;B--,G=G/P|0;for(var W=L.length-N,K=W%B,te=Math.min(W,W-K)+N,Y=0,Z=N;Z1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},h.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},h.prototype.inspect=function(){return(this.red?""};var y=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],x=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],w=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function k(L,P,N){N.negative=P.negative^L.negative;var B=L.length+P.length|0;N.length=B,B=B-1|0;var G=0|L.words[0],W=0|P.words[0],K=G*W,te=67108863&K,Y=K/67108864|0;N.words[0]=te;for(var Z=1;Z>>26,U=67108863&Y,q=Math.min(Z,P.length-1),$=Math.max(0,Z-L.length+1);$<=q;$++){var ne=Z-$|0;re+=(K=(G=0|L.words[ne])*(W=0|P.words[$])+U)/67108864|0,U=67108863&K}N.words[Z]=0|U,Y=0|re}return Y!==0?N.words[Z]=0|Y:N.length--,N.strip()}h.prototype.toString=function(L,P){var N;if(P=0|P||1,(L=L||10)===16||L==="hex"){N="";for(var B=0,G=0,W=0;W>>24-B&16777215)!==0||W!==this.length-1?y[6-te.length]+te+N:te+N,(B+=2)>=26&&(B-=26,W--)}for(G!==0&&(N=G.toString(16)+N);N.length%P!=0;)N="0"+N;return this.negative!==0&&(N="-"+N),N}if(L===(0|L)&&L>=2&&L<=36){var Y=x[L],Z=w[L];N="";var re=this.clone();for(re.negative=0;!re.isZero();){var U=re.modn(Z).toString(L);N=(re=re.idivn(Z)).isZero()?U+N:y[Y-U.length]+U+N}for(this.isZero()&&(N="0"+N);N.length%P!=0;)N="0"+N;return this.negative!==0&&(N="-"+N),N}u(!1,"Base should be between 2 and 36")},h.prototype.toNumber=function(){var L=this.words[0];return this.length===2?L+=67108864*this.words[1]:this.length===3&&this.words[2]===1?L+=4503599627370496+67108864*this.words[1]:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-L:L},h.prototype.toJSON=function(){return this.toString(16)},h.prototype.toBuffer=function(L,P){return u(m!==void 0),this.toArrayLike(m,L,P)},h.prototype.toArray=function(L,P){return this.toArrayLike(Array,L,P)},h.prototype.toArrayLike=function(L,P,N){var B=this.byteLength(),G=N||Math.max(1,B);u(B<=G,"byte array longer than desired length"),u(G>0,"Requested array length <= 0"),this.strip();var W,K,te=P==="le",Y=new L(G),Z=this.clone();if(te){for(K=0;!Z.isZero();K++)W=Z.andln(255),Z.iushrn(8),Y[K]=W;for(;K=4096&&(N+=13,P>>>=13),P>=64&&(N+=7,P>>>=7),P>=8&&(N+=4,P>>>=4),P>=2&&(N+=2,P>>>=2),N+P},h.prototype._zeroBits=function(L){if(L===0)return 26;var P=L,N=0;return(8191&P)==0&&(N+=13,P>>>=13),(127&P)==0&&(N+=7,P>>>=7),(15&P)==0&&(N+=4,P>>>=4),(3&P)==0&&(N+=2,P>>>=2),(1&P)==0&&N++,N},h.prototype.bitLength=function(){var L=this.words[this.length-1],P=this._countBits(L);return 26*(this.length-1)+P},h.prototype.zeroBits=function(){if(this.isZero())return 0;for(var L=0,P=0;PL.length?this.clone().ior(L):L.clone().ior(this)},h.prototype.uor=function(L){return this.length>L.length?this.clone().iuor(L):L.clone().iuor(this)},h.prototype.iuand=function(L){var P;P=this.length>L.length?L:this;for(var N=0;NL.length?this.clone().iand(L):L.clone().iand(this)},h.prototype.uand=function(L){return this.length>L.length?this.clone().iuand(L):L.clone().iuand(this)},h.prototype.iuxor=function(L){var P,N;this.length>L.length?(P=this,N=L):(P=L,N=this);for(var B=0;BL.length?this.clone().ixor(L):L.clone().ixor(this)},h.prototype.uxor=function(L){return this.length>L.length?this.clone().iuxor(L):L.clone().iuxor(this)},h.prototype.inotn=function(L){u(typeof L=="number"&&L>=0);var P=0|Math.ceil(L/26),N=L%26;this._expand(P),N>0&&P--;for(var B=0;B0&&(this.words[B]=~this.words[B]&67108863>>26-N),this.strip()},h.prototype.notn=function(L){return this.clone().inotn(L)},h.prototype.setn=function(L,P){u(typeof L=="number"&&L>=0);var N=L/26|0,B=L%26;return this._expand(N+1),this.words[N]=P?this.words[N]|1<L.length?(N=this,B=L):(N=L,B=this);for(var G=0,W=0;W>>26;for(;G!==0&&W>>26;if(this.length=N.length,G!==0)this.words[this.length]=G,this.length++;else if(N!==this)for(;WL.length?this.clone().iadd(L):L.clone().iadd(this)},h.prototype.isub=function(L){if(L.negative!==0){L.negative=0;var P=this.iadd(L);return L.negative=1,P._normSign()}if(this.negative!==0)return this.negative=0,this.iadd(L),this.negative=1,this._normSign();var N,B,G=this.cmp(L);if(G===0)return this.negative=0,this.length=1,this.words[0]=0,this;G>0?(N=this,B=L):(N=L,B=this);for(var W=0,K=0;K>26,this.words[K]=67108863&P;for(;W!==0&&K>26,this.words[K]=67108863&P;if(W===0&&K>>13,$=0|K[1],ne=8191&$,H=$>>>13,Q=0|K[2],ee=8191&Q,ie=Q>>>13,ae=0|K[3],ue=8191&ae,le=ae>>>13,ge=0|K[4],fe=8191&ge,me=ge>>>13,_e=0|K[5],we=8191&_e,Te=_e>>>13,Oe=0|K[6],de=8191&Oe,ye=Oe>>>13,Me=0|K[7],ke=8191&Me,Ee=Me>>>13,ze=0|K[8],Fe=8191&ze,Ve=ze>>>13,Ke=0|K[9],Re=8191&Ke,qe=Ke>>>13,We=0|te[0],Ye=8191&We,nt=We>>>13,ft=0|te[1],vt=8191&ft,Pt=ft>>>13,At=0|te[2],at=8191&At,et=At>>>13,Ot=0|te[3],Wt=8191&Ot,Jt=Ot>>>13,Be=0|te[4],Ge=8191&Be,Tt=Be>>>13,dt=0|te[5],Pe=8191&dt,Ie=dt>>>13,Ae=0|te[6],De=8191&Ae,He=Ae>>>13,rt=0|te[7],lt=8191&rt,ot=rt>>>13,kt=0|te[8],wt=8191&kt,Vt=kt>>>13,Ut=0|te[9],tt=8191&Ut,bt=Ut>>>13;N.negative=L.negative^P.negative,N.length=19;var zt=(Z+(B=Math.imul(U,Ye))|0)+((8191&(G=(G=Math.imul(U,nt))+Math.imul(q,Ye)|0))<<13)|0;Z=((W=Math.imul(q,nt))+(G>>>13)|0)+(zt>>>26)|0,zt&=67108863,B=Math.imul(ne,Ye),G=(G=Math.imul(ne,nt))+Math.imul(H,Ye)|0,W=Math.imul(H,nt);var St=(Z+(B=B+Math.imul(U,vt)|0)|0)+((8191&(G=(G=G+Math.imul(U,Pt)|0)+Math.imul(q,vt)|0))<<13)|0;Z=((W=W+Math.imul(q,Pt)|0)+(G>>>13)|0)+(St>>>26)|0,St&=67108863,B=Math.imul(ee,Ye),G=(G=Math.imul(ee,nt))+Math.imul(ie,Ye)|0,W=Math.imul(ie,nt),B=B+Math.imul(ne,vt)|0,G=(G=G+Math.imul(ne,Pt)|0)+Math.imul(H,vt)|0,W=W+Math.imul(H,Pt)|0;var Dt=(Z+(B=B+Math.imul(U,at)|0)|0)+((8191&(G=(G=G+Math.imul(U,et)|0)+Math.imul(q,at)|0))<<13)|0;Z=((W=W+Math.imul(q,et)|0)+(G>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,B=Math.imul(ue,Ye),G=(G=Math.imul(ue,nt))+Math.imul(le,Ye)|0,W=Math.imul(le,nt),B=B+Math.imul(ee,vt)|0,G=(G=G+Math.imul(ee,Pt)|0)+Math.imul(ie,vt)|0,W=W+Math.imul(ie,Pt)|0,B=B+Math.imul(ne,at)|0,G=(G=G+Math.imul(ne,et)|0)+Math.imul(H,at)|0,W=W+Math.imul(H,et)|0;var Le=(Z+(B=B+Math.imul(U,Wt)|0)|0)+((8191&(G=(G=G+Math.imul(U,Jt)|0)+Math.imul(q,Wt)|0))<<13)|0;Z=((W=W+Math.imul(q,Jt)|0)+(G>>>13)|0)+(Le>>>26)|0,Le&=67108863,B=Math.imul(fe,Ye),G=(G=Math.imul(fe,nt))+Math.imul(me,Ye)|0,W=Math.imul(me,nt),B=B+Math.imul(ue,vt)|0,G=(G=G+Math.imul(ue,Pt)|0)+Math.imul(le,vt)|0,W=W+Math.imul(le,Pt)|0,B=B+Math.imul(ee,at)|0,G=(G=G+Math.imul(ee,et)|0)+Math.imul(ie,at)|0,W=W+Math.imul(ie,et)|0,B=B+Math.imul(ne,Wt)|0,G=(G=G+Math.imul(ne,Jt)|0)+Math.imul(H,Wt)|0,W=W+Math.imul(H,Jt)|0;var Je=(Z+(B=B+Math.imul(U,Ge)|0)|0)+((8191&(G=(G=G+Math.imul(U,Tt)|0)+Math.imul(q,Ge)|0))<<13)|0;Z=((W=W+Math.imul(q,Tt)|0)+(G>>>13)|0)+(Je>>>26)|0,Je&=67108863,B=Math.imul(we,Ye),G=(G=Math.imul(we,nt))+Math.imul(Te,Ye)|0,W=Math.imul(Te,nt),B=B+Math.imul(fe,vt)|0,G=(G=G+Math.imul(fe,Pt)|0)+Math.imul(me,vt)|0,W=W+Math.imul(me,Pt)|0,B=B+Math.imul(ue,at)|0,G=(G=G+Math.imul(ue,et)|0)+Math.imul(le,at)|0,W=W+Math.imul(le,et)|0,B=B+Math.imul(ee,Wt)|0,G=(G=G+Math.imul(ee,Jt)|0)+Math.imul(ie,Wt)|0,W=W+Math.imul(ie,Jt)|0,B=B+Math.imul(ne,Ge)|0,G=(G=G+Math.imul(ne,Tt)|0)+Math.imul(H,Ge)|0,W=W+Math.imul(H,Tt)|0;var st=(Z+(B=B+Math.imul(U,Pe)|0)|0)+((8191&(G=(G=G+Math.imul(U,Ie)|0)+Math.imul(q,Pe)|0))<<13)|0;Z=((W=W+Math.imul(q,Ie)|0)+(G>>>13)|0)+(st>>>26)|0,st&=67108863,B=Math.imul(de,Ye),G=(G=Math.imul(de,nt))+Math.imul(ye,Ye)|0,W=Math.imul(ye,nt),B=B+Math.imul(we,vt)|0,G=(G=G+Math.imul(we,Pt)|0)+Math.imul(Te,vt)|0,W=W+Math.imul(Te,Pt)|0,B=B+Math.imul(fe,at)|0,G=(G=G+Math.imul(fe,et)|0)+Math.imul(me,at)|0,W=W+Math.imul(me,et)|0,B=B+Math.imul(ue,Wt)|0,G=(G=G+Math.imul(ue,Jt)|0)+Math.imul(le,Wt)|0,W=W+Math.imul(le,Jt)|0,B=B+Math.imul(ee,Ge)|0,G=(G=G+Math.imul(ee,Tt)|0)+Math.imul(ie,Ge)|0,W=W+Math.imul(ie,Tt)|0,B=B+Math.imul(ne,Pe)|0,G=(G=G+Math.imul(ne,Ie)|0)+Math.imul(H,Pe)|0,W=W+Math.imul(H,Ie)|0;var Et=(Z+(B=B+Math.imul(U,De)|0)|0)+((8191&(G=(G=G+Math.imul(U,He)|0)+Math.imul(q,De)|0))<<13)|0;Z=((W=W+Math.imul(q,He)|0)+(G>>>13)|0)+(Et>>>26)|0,Et&=67108863,B=Math.imul(ke,Ye),G=(G=Math.imul(ke,nt))+Math.imul(Ee,Ye)|0,W=Math.imul(Ee,nt),B=B+Math.imul(de,vt)|0,G=(G=G+Math.imul(de,Pt)|0)+Math.imul(ye,vt)|0,W=W+Math.imul(ye,Pt)|0,B=B+Math.imul(we,at)|0,G=(G=G+Math.imul(we,et)|0)+Math.imul(Te,at)|0,W=W+Math.imul(Te,et)|0,B=B+Math.imul(fe,Wt)|0,G=(G=G+Math.imul(fe,Jt)|0)+Math.imul(me,Wt)|0,W=W+Math.imul(me,Jt)|0,B=B+Math.imul(ue,Ge)|0,G=(G=G+Math.imul(ue,Tt)|0)+Math.imul(le,Ge)|0,W=W+Math.imul(le,Tt)|0,B=B+Math.imul(ee,Pe)|0,G=(G=G+Math.imul(ee,Ie)|0)+Math.imul(ie,Pe)|0,W=W+Math.imul(ie,Ie)|0,B=B+Math.imul(ne,De)|0,G=(G=G+Math.imul(ne,He)|0)+Math.imul(H,De)|0,W=W+Math.imul(H,He)|0;var It=(Z+(B=B+Math.imul(U,lt)|0)|0)+((8191&(G=(G=G+Math.imul(U,ot)|0)+Math.imul(q,lt)|0))<<13)|0;Z=((W=W+Math.imul(q,ot)|0)+(G>>>13)|0)+(It>>>26)|0,It&=67108863,B=Math.imul(Fe,Ye),G=(G=Math.imul(Fe,nt))+Math.imul(Ve,Ye)|0,W=Math.imul(Ve,nt),B=B+Math.imul(ke,vt)|0,G=(G=G+Math.imul(ke,Pt)|0)+Math.imul(Ee,vt)|0,W=W+Math.imul(Ee,Pt)|0,B=B+Math.imul(de,at)|0,G=(G=G+Math.imul(de,et)|0)+Math.imul(ye,at)|0,W=W+Math.imul(ye,et)|0,B=B+Math.imul(we,Wt)|0,G=(G=G+Math.imul(we,Jt)|0)+Math.imul(Te,Wt)|0,W=W+Math.imul(Te,Jt)|0,B=B+Math.imul(fe,Ge)|0,G=(G=G+Math.imul(fe,Tt)|0)+Math.imul(me,Ge)|0,W=W+Math.imul(me,Tt)|0,B=B+Math.imul(ue,Pe)|0,G=(G=G+Math.imul(ue,Ie)|0)+Math.imul(le,Pe)|0,W=W+Math.imul(le,Ie)|0,B=B+Math.imul(ee,De)|0,G=(G=G+Math.imul(ee,He)|0)+Math.imul(ie,De)|0,W=W+Math.imul(ie,He)|0,B=B+Math.imul(ne,lt)|0,G=(G=G+Math.imul(ne,ot)|0)+Math.imul(H,lt)|0,W=W+Math.imul(H,ot)|0;var Zt=(Z+(B=B+Math.imul(U,wt)|0)|0)+((8191&(G=(G=G+Math.imul(U,Vt)|0)+Math.imul(q,wt)|0))<<13)|0;Z=((W=W+Math.imul(q,Vt)|0)+(G>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,B=Math.imul(Re,Ye),G=(G=Math.imul(Re,nt))+Math.imul(qe,Ye)|0,W=Math.imul(qe,nt),B=B+Math.imul(Fe,vt)|0,G=(G=G+Math.imul(Fe,Pt)|0)+Math.imul(Ve,vt)|0,W=W+Math.imul(Ve,Pt)|0,B=B+Math.imul(ke,at)|0,G=(G=G+Math.imul(ke,et)|0)+Math.imul(Ee,at)|0,W=W+Math.imul(Ee,et)|0,B=B+Math.imul(de,Wt)|0,G=(G=G+Math.imul(de,Jt)|0)+Math.imul(ye,Wt)|0,W=W+Math.imul(ye,Jt)|0,B=B+Math.imul(we,Ge)|0,G=(G=G+Math.imul(we,Tt)|0)+Math.imul(Te,Ge)|0,W=W+Math.imul(Te,Tt)|0,B=B+Math.imul(fe,Pe)|0,G=(G=G+Math.imul(fe,Ie)|0)+Math.imul(me,Pe)|0,W=W+Math.imul(me,Ie)|0,B=B+Math.imul(ue,De)|0,G=(G=G+Math.imul(ue,He)|0)+Math.imul(le,De)|0,W=W+Math.imul(le,He)|0,B=B+Math.imul(ee,lt)|0,G=(G=G+Math.imul(ee,ot)|0)+Math.imul(ie,lt)|0,W=W+Math.imul(ie,ot)|0,B=B+Math.imul(ne,wt)|0,G=(G=G+Math.imul(ne,Vt)|0)+Math.imul(H,wt)|0,W=W+Math.imul(H,Vt)|0;var Kt=(Z+(B=B+Math.imul(U,tt)|0)|0)+((8191&(G=(G=G+Math.imul(U,bt)|0)+Math.imul(q,tt)|0))<<13)|0;Z=((W=W+Math.imul(q,bt)|0)+(G>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,B=Math.imul(Re,vt),G=(G=Math.imul(Re,Pt))+Math.imul(qe,vt)|0,W=Math.imul(qe,Pt),B=B+Math.imul(Fe,at)|0,G=(G=G+Math.imul(Fe,et)|0)+Math.imul(Ve,at)|0,W=W+Math.imul(Ve,et)|0,B=B+Math.imul(ke,Wt)|0,G=(G=G+Math.imul(ke,Jt)|0)+Math.imul(Ee,Wt)|0,W=W+Math.imul(Ee,Jt)|0,B=B+Math.imul(de,Ge)|0,G=(G=G+Math.imul(de,Tt)|0)+Math.imul(ye,Ge)|0,W=W+Math.imul(ye,Tt)|0,B=B+Math.imul(we,Pe)|0,G=(G=G+Math.imul(we,Ie)|0)+Math.imul(Te,Pe)|0,W=W+Math.imul(Te,Ie)|0,B=B+Math.imul(fe,De)|0,G=(G=G+Math.imul(fe,He)|0)+Math.imul(me,De)|0,W=W+Math.imul(me,He)|0,B=B+Math.imul(ue,lt)|0,G=(G=G+Math.imul(ue,ot)|0)+Math.imul(le,lt)|0,W=W+Math.imul(le,ot)|0,B=B+Math.imul(ee,wt)|0,G=(G=G+Math.imul(ee,Vt)|0)+Math.imul(ie,wt)|0,W=W+Math.imul(ie,Vt)|0;var Ht=(Z+(B=B+Math.imul(ne,tt)|0)|0)+((8191&(G=(G=G+Math.imul(ne,bt)|0)+Math.imul(H,tt)|0))<<13)|0;Z=((W=W+Math.imul(H,bt)|0)+(G>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,B=Math.imul(Re,at),G=(G=Math.imul(Re,et))+Math.imul(qe,at)|0,W=Math.imul(qe,et),B=B+Math.imul(Fe,Wt)|0,G=(G=G+Math.imul(Fe,Jt)|0)+Math.imul(Ve,Wt)|0,W=W+Math.imul(Ve,Jt)|0,B=B+Math.imul(ke,Ge)|0,G=(G=G+Math.imul(ke,Tt)|0)+Math.imul(Ee,Ge)|0,W=W+Math.imul(Ee,Tt)|0,B=B+Math.imul(de,Pe)|0,G=(G=G+Math.imul(de,Ie)|0)+Math.imul(ye,Pe)|0,W=W+Math.imul(ye,Ie)|0,B=B+Math.imul(we,De)|0,G=(G=G+Math.imul(we,He)|0)+Math.imul(Te,De)|0,W=W+Math.imul(Te,He)|0,B=B+Math.imul(fe,lt)|0,G=(G=G+Math.imul(fe,ot)|0)+Math.imul(me,lt)|0,W=W+Math.imul(me,ot)|0,B=B+Math.imul(ue,wt)|0,G=(G=G+Math.imul(ue,Vt)|0)+Math.imul(le,wt)|0,W=W+Math.imul(le,Vt)|0;var mn=(Z+(B=B+Math.imul(ee,tt)|0)|0)+((8191&(G=(G=G+Math.imul(ee,bt)|0)+Math.imul(ie,tt)|0))<<13)|0;Z=((W=W+Math.imul(ie,bt)|0)+(G>>>13)|0)+(mn>>>26)|0,mn&=67108863,B=Math.imul(Re,Wt),G=(G=Math.imul(Re,Jt))+Math.imul(qe,Wt)|0,W=Math.imul(qe,Jt),B=B+Math.imul(Fe,Ge)|0,G=(G=G+Math.imul(Fe,Tt)|0)+Math.imul(Ve,Ge)|0,W=W+Math.imul(Ve,Tt)|0,B=B+Math.imul(ke,Pe)|0,G=(G=G+Math.imul(ke,Ie)|0)+Math.imul(Ee,Pe)|0,W=W+Math.imul(Ee,Ie)|0,B=B+Math.imul(de,De)|0,G=(G=G+Math.imul(de,He)|0)+Math.imul(ye,De)|0,W=W+Math.imul(ye,He)|0,B=B+Math.imul(we,lt)|0,G=(G=G+Math.imul(we,ot)|0)+Math.imul(Te,lt)|0,W=W+Math.imul(Te,ot)|0,B=B+Math.imul(fe,wt)|0,G=(G=G+Math.imul(fe,Vt)|0)+Math.imul(me,wt)|0,W=W+Math.imul(me,Vt)|0;var zn=(Z+(B=B+Math.imul(ue,tt)|0)|0)+((8191&(G=(G=G+Math.imul(ue,bt)|0)+Math.imul(le,tt)|0))<<13)|0;Z=((W=W+Math.imul(le,bt)|0)+(G>>>13)|0)+(zn>>>26)|0,zn&=67108863,B=Math.imul(Re,Ge),G=(G=Math.imul(Re,Tt))+Math.imul(qe,Ge)|0,W=Math.imul(qe,Tt),B=B+Math.imul(Fe,Pe)|0,G=(G=G+Math.imul(Fe,Ie)|0)+Math.imul(Ve,Pe)|0,W=W+Math.imul(Ve,Ie)|0,B=B+Math.imul(ke,De)|0,G=(G=G+Math.imul(ke,He)|0)+Math.imul(Ee,De)|0,W=W+Math.imul(Ee,He)|0,B=B+Math.imul(de,lt)|0,G=(G=G+Math.imul(de,ot)|0)+Math.imul(ye,lt)|0,W=W+Math.imul(ye,ot)|0,B=B+Math.imul(we,wt)|0,G=(G=G+Math.imul(we,Vt)|0)+Math.imul(Te,wt)|0,W=W+Math.imul(Te,Vt)|0;var pn=(Z+(B=B+Math.imul(fe,tt)|0)|0)+((8191&(G=(G=G+Math.imul(fe,bt)|0)+Math.imul(me,tt)|0))<<13)|0;Z=((W=W+Math.imul(me,bt)|0)+(G>>>13)|0)+(pn>>>26)|0,pn&=67108863,B=Math.imul(Re,Pe),G=(G=Math.imul(Re,Ie))+Math.imul(qe,Pe)|0,W=Math.imul(qe,Ie),B=B+Math.imul(Fe,De)|0,G=(G=G+Math.imul(Fe,He)|0)+Math.imul(Ve,De)|0,W=W+Math.imul(Ve,He)|0,B=B+Math.imul(ke,lt)|0,G=(G=G+Math.imul(ke,ot)|0)+Math.imul(Ee,lt)|0,W=W+Math.imul(Ee,ot)|0,B=B+Math.imul(de,wt)|0,G=(G=G+Math.imul(de,Vt)|0)+Math.imul(ye,wt)|0,W=W+Math.imul(ye,Vt)|0;var tn=(Z+(B=B+Math.imul(we,tt)|0)|0)+((8191&(G=(G=G+Math.imul(we,bt)|0)+Math.imul(Te,tt)|0))<<13)|0;Z=((W=W+Math.imul(Te,bt)|0)+(G>>>13)|0)+(tn>>>26)|0,tn&=67108863,B=Math.imul(Re,De),G=(G=Math.imul(Re,He))+Math.imul(qe,De)|0,W=Math.imul(qe,He),B=B+Math.imul(Fe,lt)|0,G=(G=G+Math.imul(Fe,ot)|0)+Math.imul(Ve,lt)|0,W=W+Math.imul(Ve,ot)|0,B=B+Math.imul(ke,wt)|0,G=(G=G+Math.imul(ke,Vt)|0)+Math.imul(Ee,wt)|0,W=W+Math.imul(Ee,Vt)|0;var nn=(Z+(B=B+Math.imul(de,tt)|0)|0)+((8191&(G=(G=G+Math.imul(de,bt)|0)+Math.imul(ye,tt)|0))<<13)|0;Z=((W=W+Math.imul(ye,bt)|0)+(G>>>13)|0)+(nn>>>26)|0,nn&=67108863,B=Math.imul(Re,lt),G=(G=Math.imul(Re,ot))+Math.imul(qe,lt)|0,W=Math.imul(qe,ot),B=B+Math.imul(Fe,wt)|0,G=(G=G+Math.imul(Fe,Vt)|0)+Math.imul(Ve,wt)|0,W=W+Math.imul(Ve,Vt)|0;var sn=(Z+(B=B+Math.imul(ke,tt)|0)|0)+((8191&(G=(G=G+Math.imul(ke,bt)|0)+Math.imul(Ee,tt)|0))<<13)|0;Z=((W=W+Math.imul(Ee,bt)|0)+(G>>>13)|0)+(sn>>>26)|0,sn&=67108863,B=Math.imul(Re,wt),G=(G=Math.imul(Re,Vt))+Math.imul(qe,wt)|0,W=Math.imul(qe,Vt);var gn=(Z+(B=B+Math.imul(Fe,tt)|0)|0)+((8191&(G=(G=G+Math.imul(Fe,bt)|0)+Math.imul(Ve,tt)|0))<<13)|0;Z=((W=W+Math.imul(Ve,bt)|0)+(G>>>13)|0)+(gn>>>26)|0,gn&=67108863;var bn=(Z+(B=Math.imul(Re,tt))|0)+((8191&(G=(G=Math.imul(Re,bt))+Math.imul(qe,tt)|0))<<13)|0;return Z=((W=Math.imul(qe,bt))+(G>>>13)|0)+(bn>>>26)|0,bn&=67108863,Y[0]=zt,Y[1]=St,Y[2]=Dt,Y[3]=Le,Y[4]=Je,Y[5]=st,Y[6]=Et,Y[7]=It,Y[8]=Zt,Y[9]=Kt,Y[10]=Ht,Y[11]=mn,Y[12]=zn,Y[13]=pn,Y[14]=tn,Y[15]=nn,Y[16]=sn,Y[17]=gn,Y[18]=bn,Z!==0&&(Y[19]=Z,N.length++),N};function T(L,P,N){return new _().mulp(L,P,N)}function _(L,P){this.x=L,this.y=P}Math.imul||(b=k),h.prototype.mulTo=function(L,P){var N=this.length+L.length;return this.length===10&&L.length===10?b(this,L,P):N<63?k(this,L,P):N<1024?function(B,G,W){W.negative=G.negative^B.negative,W.length=B.length+G.length;for(var K=0,te=0,Y=0;Y>>26)|0)>>>26,Z&=67108863}W.words[Y]=re,K=Z,Z=te}return K!==0?W.words[Y]=K:W.length--,W.strip()}(this,L,P):T(this,L,P)},_.prototype.makeRBT=function(L){for(var P=new Array(L),N=h.prototype._countBits(L)-1,B=0;B>=1;return B},_.prototype.permute=function(L,P,N,B,G,W){for(var K=0;K>>=1)G++;return 1<>>=13,N[2*W+1]=8191&G,G>>>=13;for(W=2*P;W>=26,P+=B/67108864|0,P+=G>>>26,this.words[N]=67108863&G}return P!==0&&(this.words[N]=P,this.length++),this},h.prototype.muln=function(L){return this.clone().imuln(L)},h.prototype.sqr=function(){return this.mul(this)},h.prototype.isqr=function(){return this.imul(this.clone())},h.prototype.pow=function(L){var P=function(W){for(var K=new Array(W.bitLength()),te=0;te>>Z}return K}(L);if(P.length===0)return new h(1);for(var N=this,B=0;B=0);var P,N=L%26,B=(L-N)/26,G=67108863>>>26-N<<26-N;if(N!==0){var W=0;for(P=0;P>>26-N}W&&(this.words[P]=W,this.length++)}if(B!==0){for(P=this.length-1;P>=0;P--)this.words[P+B]=this.words[P];for(P=0;P=0),B=P?(P-P%26)/26:0;var G=L%26,W=Math.min((L-G)/26,this.length),K=67108863^67108863>>>G<W)for(this.length-=W,Y=0;Y=0&&(Z!==0||Y>=B);Y--){var re=0|this.words[Y];this.words[Y]=Z<<26-G|re>>>G,Z=re&K}return te&&Z!==0&&(te.words[te.length++]=Z),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},h.prototype.ishrn=function(L,P,N){return u(this.negative===0),this.iushrn(L,P,N)},h.prototype.shln=function(L){return this.clone().ishln(L)},h.prototype.ushln=function(L){return this.clone().iushln(L)},h.prototype.shrn=function(L){return this.clone().ishrn(L)},h.prototype.ushrn=function(L){return this.clone().iushrn(L)},h.prototype.testn=function(L){u(typeof L=="number"&&L>=0);var P=L%26,N=(L-P)/26,B=1<=0);var P=L%26,N=(L-P)/26;if(u(this.negative===0,"imaskn works only with positive numbers"),this.length<=N)return this;if(P!==0&&N++,this.length=Math.min(N,this.length),P!==0){var B=67108863^67108863>>>P<=67108864;P++)this.words[P]-=67108864,P===this.length-1?this.words[P+1]=1:this.words[P+1]++;return this.length=Math.max(this.length,P+1),this},h.prototype.isubn=function(L){if(u(typeof L=="number"),u(L<67108864),L<0)return this.iaddn(-L);if(this.negative!==0)return this.negative=0,this.iaddn(L),this.negative=1,this;if(this.words[0]-=L,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var P=0;P>26)-(te/67108864|0),this.words[B+N]=67108863&G}for(;B>26,this.words[B+N]=67108863&G;if(K===0)return this.strip();for(u(K===-1),K=0,B=0;B>26,this.words[B]=67108863&G;return this.negative=1,this.strip()},h.prototype._wordDiv=function(L,P){var N=(this.length,L.length),B=this.clone(),G=L,W=0|G.words[G.length-1];(N=26-this._countBits(W))!==0&&(G=G.ushln(N),B.iushln(N),W=0|G.words[G.length-1]);var K,te=B.length-G.length;if(P!=="mod"){(K=new h(null)).length=te+1,K.words=new Array(K.length);for(var Y=0;Y=0;re--){var U=67108864*(0|B.words[G.length+re])+(0|B.words[G.length+re-1]);for(U=Math.min(U/W|0,67108863),B._ishlnsubmul(G,U,re);B.negative!==0;)U--,B.negative=0,B._ishlnsubmul(G,1,re),B.isZero()||(B.negative^=1);K&&(K.words[re]=U)}return K&&K.strip(),B.strip(),P!=="div"&&N!==0&&B.iushrn(N),{div:K||null,mod:B}},h.prototype.divmod=function(L,P,N){return u(!L.isZero()),this.isZero()?{div:new h(0),mod:new h(0)}:this.negative!==0&&L.negative===0?(W=this.neg().divmod(L,P),P!=="mod"&&(B=W.div.neg()),P!=="div"&&(G=W.mod.neg(),N&&G.negative!==0&&G.iadd(L)),{div:B,mod:G}):this.negative===0&&L.negative!==0?(W=this.divmod(L.neg(),P),P!=="mod"&&(B=W.div.neg()),{div:B,mod:W.mod}):(this.negative&L.negative)!=0?(W=this.neg().divmod(L.neg(),P),P!=="div"&&(G=W.mod.neg(),N&&G.negative!==0&&G.isub(L)),{div:W.div,mod:G}):L.length>this.length||this.cmp(L)<0?{div:new h(0),mod:this}:L.length===1?P==="div"?{div:this.divn(L.words[0]),mod:null}:P==="mod"?{div:null,mod:new h(this.modn(L.words[0]))}:{div:this.divn(L.words[0]),mod:new h(this.modn(L.words[0]))}:this._wordDiv(L,P);var B,G,W},h.prototype.div=function(L){return this.divmod(L,"div",!1).div},h.prototype.mod=function(L){return this.divmod(L,"mod",!1).mod},h.prototype.umod=function(L){return this.divmod(L,"mod",!0).mod},h.prototype.divRound=function(L){var P=this.divmod(L);if(P.mod.isZero())return P.div;var N=P.div.negative!==0?P.mod.isub(L):P.mod,B=L.ushrn(1),G=L.andln(1),W=N.cmp(B);return W<0||G===1&&W===0?P.div:P.div.negative!==0?P.div.isubn(1):P.div.iaddn(1)},h.prototype.modn=function(L){u(L<=67108863);for(var P=(1<<26)%L,N=0,B=this.length-1;B>=0;B--)N=(P*N+(0|this.words[B]))%L;return N},h.prototype.idivn=function(L){u(L<=67108863);for(var P=0,N=this.length-1;N>=0;N--){var B=(0|this.words[N])+67108864*P;this.words[N]=B/L|0,P=B%L}return this.strip()},h.prototype.divn=function(L){return this.clone().idivn(L)},h.prototype.egcd=function(L){u(L.negative===0),u(!L.isZero());var P=this,N=L.clone();P=P.negative!==0?P.umod(L):P.clone();for(var B=new h(1),G=new h(0),W=new h(0),K=new h(1),te=0;P.isEven()&&N.isEven();)P.iushrn(1),N.iushrn(1),++te;for(var Y=N.clone(),Z=P.clone();!P.isZero();){for(var re=0,U=1;(P.words[0]&U)==0&&re<26;++re,U<<=1);if(re>0)for(P.iushrn(re);re-- >0;)(B.isOdd()||G.isOdd())&&(B.iadd(Y),G.isub(Z)),B.iushrn(1),G.iushrn(1);for(var q=0,$=1;(N.words[0]&$)==0&&q<26;++q,$<<=1);if(q>0)for(N.iushrn(q);q-- >0;)(W.isOdd()||K.isOdd())&&(W.iadd(Y),K.isub(Z)),W.iushrn(1),K.iushrn(1);P.cmp(N)>=0?(P.isub(N),B.isub(W),G.isub(K)):(N.isub(P),W.isub(B),K.isub(G))}return{a:W,b:K,gcd:N.iushln(te)}},h.prototype._invmp=function(L){u(L.negative===0),u(!L.isZero());var P=this,N=L.clone();P=P.negative!==0?P.umod(L):P.clone();for(var B,G=new h(1),W=new h(0),K=N.clone();P.cmpn(1)>0&&N.cmpn(1)>0;){for(var te=0,Y=1;(P.words[0]&Y)==0&&te<26;++te,Y<<=1);if(te>0)for(P.iushrn(te);te-- >0;)G.isOdd()&&G.iadd(K),G.iushrn(1);for(var Z=0,re=1;(N.words[0]&re)==0&&Z<26;++Z,re<<=1);if(Z>0)for(N.iushrn(Z);Z-- >0;)W.isOdd()&&W.iadd(K),W.iushrn(1);P.cmp(N)>=0?(P.isub(N),G.isub(W)):(N.isub(P),W.isub(G))}return(B=P.cmpn(1)===0?G:W).cmpn(0)<0&&B.iadd(L),B},h.prototype.gcd=function(L){if(this.isZero())return L.abs();if(L.isZero())return this.abs();var P=this.clone(),N=L.clone();P.negative=0,N.negative=0;for(var B=0;P.isEven()&&N.isEven();B++)P.iushrn(1),N.iushrn(1);for(;;){for(;P.isEven();)P.iushrn(1);for(;N.isEven();)N.iushrn(1);var G=P.cmp(N);if(G<0){var W=P;P=N,N=W}else if(G===0||N.cmpn(1)===0)break;P.isub(N)}return N.iushln(B)},h.prototype.invm=function(L){return this.egcd(L).a.umod(L)},h.prototype.isEven=function(){return(1&this.words[0])==0},h.prototype.isOdd=function(){return(1&this.words[0])==1},h.prototype.andln=function(L){return this.words[0]&L},h.prototype.bincn=function(L){u(typeof L=="number");var P=L%26,N=(L-P)/26,B=1<>>26,K&=67108863,this.words[W]=K}return G!==0&&(this.words[W]=G,this.length++),this},h.prototype.isZero=function(){return this.length===1&&this.words[0]===0},h.prototype.cmpn=function(L){var P,N=L<0;if(this.negative!==0&&!N)return-1;if(this.negative===0&&N)return 1;if(this.strip(),this.length>1)P=1;else{N&&(L=-L),u(L<=67108863,"Number is too big");var B=0|this.words[0];P=B===L?0:BL.length)return 1;if(this.length=0;N--){var B=0|this.words[N],G=0|L.words[N];if(B!==G){BG&&(P=1);break}}return P},h.prototype.gtn=function(L){return this.cmpn(L)===1},h.prototype.gt=function(L){return this.cmp(L)===1},h.prototype.gten=function(L){return this.cmpn(L)>=0},h.prototype.gte=function(L){return this.cmp(L)>=0},h.prototype.ltn=function(L){return this.cmpn(L)===-1},h.prototype.lt=function(L){return this.cmp(L)===-1},h.prototype.lten=function(L){return this.cmpn(L)<=0},h.prototype.lte=function(L){return this.cmp(L)<=0},h.prototype.eqn=function(L){return this.cmpn(L)===0},h.prototype.eq=function(L){return this.cmp(L)===0},h.red=function(L){return new R(L)},h.prototype.toRed=function(L){return u(!this.red,"Already a number in reduction context"),u(this.negative===0,"red works only with positives"),L.convertTo(this)._forceRed(L)},h.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},h.prototype._forceRed=function(L){return this.red=L,this},h.prototype.forceRed=function(L){return u(!this.red,"Already a number in reduction context"),this._forceRed(L)},h.prototype.redAdd=function(L){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,L)},h.prototype.redIAdd=function(L){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,L)},h.prototype.redSub=function(L){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,L)},h.prototype.redISub=function(L){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,L)},h.prototype.redShl=function(L){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,L)},h.prototype.redMul=function(L){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.mul(this,L)},h.prototype.redIMul=function(L){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.imul(this,L)},h.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},h.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},h.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},h.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},h.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},h.prototype.redPow=function(L){return u(this.red&&!L.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,L)};var S={k256:null,p224:null,p192:null,p25519:null};function A(L,P){this.name=L,this.p=new h(P,16),this.n=this.p.bitLength(),this.k=new h(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function M(){A.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){A.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function D(){A.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function O(){A.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function R(L){if(typeof L=="string"){var P=h._prime(L);this.m=P.p,this.prime=P}else u(L.gtn(1),"modulus must be greater than 1"),this.m=L,this.prime=null}function z(L){R.call(this,L),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new h(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}A.prototype._tmp=function(){var L=new h(null);return L.words=new Array(Math.ceil(this.n/13)),L},A.prototype.ireduce=function(L){var P,N=L;do this.split(N,this.tmp),P=(N=(N=this.imulK(N)).iadd(this.tmp)).bitLength();while(P>this.n);var B=P0?N.isub(this.p):N.strip!==void 0?N.strip():N._strip(),N},A.prototype.split=function(L,P){L.iushrn(this.n,0,P)},A.prototype.imulK=function(L){return L.imul(this.k)},d(M,A),M.prototype.split=function(L,P){for(var N=Math.min(L.length,9),B=0;B>>22,G=W}G>>>=22,L.words[B-10]=G,G===0&&L.length>10?L.length-=10:L.length-=9},M.prototype.imulK=function(L){L.words[L.length]=0,L.words[L.length+1]=0,L.length+=2;for(var P=0,N=0;N>>=26,L.words[N]=G,P=B}return P!==0&&(L.words[L.length++]=P),L},h._prime=function(L){if(S[L])return S[L];var P;if(L==="k256")P=new M;else if(L==="p224")P=new E;else if(L==="p192")P=new D;else{if(L!=="p25519")throw new Error("Unknown prime "+L);P=new O}return S[L]=P,P},R.prototype._verify1=function(L){u(L.negative===0,"red works only with positives"),u(L.red,"red works only with red numbers")},R.prototype._verify2=function(L,P){u((L.negative|P.negative)==0,"red works only with positives"),u(L.red&&L.red===P.red,"red works only with red numbers")},R.prototype.imod=function(L){return this.prime?this.prime.ireduce(L)._forceRed(this):L.umod(this.m)._forceRed(this)},R.prototype.neg=function(L){return L.isZero()?L.clone():this.m.sub(L)._forceRed(this)},R.prototype.add=function(L,P){this._verify2(L,P);var N=L.add(P);return N.cmp(this.m)>=0&&N.isub(this.m),N._forceRed(this)},R.prototype.iadd=function(L,P){this._verify2(L,P);var N=L.iadd(P);return N.cmp(this.m)>=0&&N.isub(this.m),N},R.prototype.sub=function(L,P){this._verify2(L,P);var N=L.sub(P);return N.cmpn(0)<0&&N.iadd(this.m),N._forceRed(this)},R.prototype.isub=function(L,P){this._verify2(L,P);var N=L.isub(P);return N.cmpn(0)<0&&N.iadd(this.m),N},R.prototype.shl=function(L,P){return this._verify1(L),this.imod(L.ushln(P))},R.prototype.imul=function(L,P){return this._verify2(L,P),this.imod(L.imul(P))},R.prototype.mul=function(L,P){return this._verify2(L,P),this.imod(L.mul(P))},R.prototype.isqr=function(L){return this.imul(L,L.clone())},R.prototype.sqr=function(L){return this.mul(L,L)},R.prototype.sqrt=function(L){if(L.isZero())return L.clone();var P=this.m.andln(3);if(u(P%2==1),P===3){var N=this.m.add(new h(1)).iushrn(2);return this.pow(L,N)}for(var B=this.m.subn(1),G=0;!B.isZero()&&B.andln(1)===0;)G++,B.iushrn(1);u(!B.isZero());var W=new h(1).toRed(this),K=W.redNeg(),te=this.m.subn(1).iushrn(1),Y=this.m.bitLength();for(Y=new h(2*Y*Y).toRed(this);this.pow(Y,te).cmp(K)!==0;)Y.redIAdd(K);for(var Z=this.pow(Y,B),re=this.pow(L,B.addn(1).iushrn(1)),U=this.pow(L,B),q=G;U.cmp(W)!==0;){for(var $=U,ne=0;$.cmp(W)!==0;ne++)$=$.redSqr();u(ne=0;B--){for(var Y=P.words[B],Z=te-1;Z>=0;Z--){var re=Y>>Z&1;G!==N[0]&&(G=this.sqr(G)),re!==0||W!==0?(W<<=1,W|=re,(++K===4||B===0&&Z===0)&&(G=this.mul(G,N[W]),K=0,W=0)):K=0}te=26}return G},R.prototype.convertTo=function(L){var P=L.umod(this.m);return P===L?P.clone():P},R.prototype.convertFrom=function(L){var P=L.clone();return P.red=null,P},h.mont=function(L){return new z(L)},d(z,R),z.prototype.convertTo=function(L){return this.imod(L.ushln(this.shift))},z.prototype.convertFrom=function(L){var P=this.imod(L.mul(this.rinv));return P.red=null,P},z.prototype.imul=function(L,P){if(L.isZero()||P.isZero())return L.words[0]=0,L.length=1,L;var N=L.imul(P),B=N.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),G=N.isub(B).iushrn(this.shift),W=G;return G.cmp(this.m)>=0?W=G.isub(this.m):G.cmpn(0)<0&&(W=G.iadd(this.m)),W._forceRed(this)},z.prototype.mul=function(L,P){if(L.isZero()||P.isZero())return new h(0)._forceRed(this);var N=L.mul(P),B=N.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),G=N.isub(B).iushrn(this.shift),W=G;return G.cmp(this.m)>=0?W=G.isub(this.m):G.cmpn(0)<0&&(W=G.iadd(this.m)),W._forceRed(this)},z.prototype.invm=function(L){return this.imod(L._invmp(this.m).mul(this.r2))._forceRed(this)}})(l===void 0||l,this)},{buffer:2}],34:[function(a,l,c){l.exports=function(i){var s,u,d,h=i.length,m=0;for(s=0;s>>1;if(!(S<=0)){var A,M=s.mallocDouble(2*S*T),E=s.mallocInt32(T);if((T=m(x,S,M,E))>0){if(S===1&&b)u.init(T),A=u.sweepComplete(S,k,0,T,M,E,0,T,M,E);else{var D=s.mallocDouble(2*S*_),O=s.mallocInt32(_);(_=m(w,S,D,O))>0&&(u.init(T+_),A=S===1?u.sweepBipartite(S,k,0,T,M,E,0,_,D,O):d(S,k,b,T,M,E,_,D,O),s.free(D),s.free(O))}s.free(M),s.free(E)}return A}}}function p(x,w){i.push([x,w])}function v(x){return i=[],g(x,x,p,!0),i}function y(x,w){return i=[],g(x,w,p,!1),i}},{"./lib/intersect":37,"./lib/sweep":41,"typedarray-pool":308}],36:[function(a,l,c){function i(s){return s?function(u,d,h,m,g,p,v,y,x,w,k){return g-m>x-y?function(b,T,_,S,A,M,E,D,O,R,z){for(var L=2*b,P=S,N=L*S;Pw-x?m?function(T,_,S,A,M,E,D,O,R,z,L){for(var P=2*T,N=A,B=P*A;N0;){var te=6*(W-=1),Y=T[te],Z=T[te+1],re=T[te+2],U=T[te+3],q=T[te+4],$=T[te+5],ne=2*W,H=_[ne],Q=_[ne+1],ee=1&$,ie=!!(16&$),ae=z,ue=L,le=N,ge=B;if(ee&&(ae=N,ue=B,le=z,ge=L),!(2&$&&(re=x(E,Y,Z,re,ae,ue,Q),Z>=re)||4&$&&(Z=w(E,Y,Z,re,ae,ue,H))>=re)){var fe=re-Z,me=q-U;if(ie){if(E*fe*(fe+me)<1<<22){if((G=m.scanComplete(E,Y,D,Z,re,ae,ue,U,q,le,ge))!==void 0)return G;continue}}else{if(E*Math.min(fe,me)<128){if((G=d(E,Y,D,ee,Z,re,ae,ue,U,q,le,ge))!==void 0)return G;continue}if(E*fe*me<1<<22){if((G=m.scanBipartite(E,Y,D,ee,Z,re,ae,ue,U,q,le,ge))!==void 0)return G;continue}}var _e=v(E,Y,Z,re,ae,ue,H,Q);if(Z<_e)if(E*(_e-Z)<128){if((G=h(E,Y+1,D,Z,_e,ae,ue,U,q,le,ge))!==void 0)return G}else if(Y===E-2){if((G=ee?m.sweepBipartite(E,D,U,q,le,ge,Z,_e,ae,ue):m.sweepBipartite(E,D,Z,_e,ae,ue,U,q,le,ge))!==void 0)return G}else S(W++,Y+1,Z,_e,U,q,ee,-1/0,1/0),S(W++,Y+1,U,q,Z,_e,1^ee,-1/0,1/0);if(_e=p0)&&!(p1>=hi)"),y=p("lo===p0"),x=p("lo>>1,w=2*u,k=x,b=g[w*x+d];v=M?(k=A,b=M):S>=D?(k=_,b=S):(k=E,b=D):M>=D?(k=A,b=M):D>=S?(k=_,b=S):(k=E,b=D);for(var O=w*(y-1),R=w*k,z=0;zh&&g[b+d]>w;--k,b-=v){for(var T=b,_=b+v,S=0;Sb;++b,y+=v)if(m[y+k]===p)if(w===b)w+=1,x+=v;else{for(var T=0;v>T;++T){var _=m[y+T];m[y+T]=m[x],m[x++]=_}var S=g[b];g[b]=g[w],g[w++]=S}return w},"lob;++b,y+=v)if(m[y+k]T;++T){var _=m[y+T];m[y+T]=m[x],m[x++]=_}var S=g[b];g[b]=g[w],g[w++]=S}return w},"lo<=p0":function(s,u,d,h,m,g,p){for(var v=2*s,y=v*d,x=y,w=d,k=s+u,b=d;h>b;++b,y+=v)if(m[y+k]<=p)if(w===b)w+=1,x+=v;else{for(var T=0;v>T;++T){var _=m[y+T];m[y+T]=m[x],m[x++]=_}var S=g[b];g[b]=g[w],g[w++]=S}return w},"hi<=p0":function(s,u,d,h,m,g,p){for(var v=2*s,y=v*d,x=y,w=d,k=s+u,b=d;h>b;++b,y+=v)if(m[y+k]<=p)if(w===b)w+=1,x+=v;else{for(var T=0;v>T;++T){var _=m[y+T];m[y+T]=m[x],m[x++]=_}var S=g[b];g[b]=g[w],g[w++]=S}return w},"loT;++T,y+=v){var _=m[y+k],S=m[y+b];if(_A;++A){var M=m[y+A];m[y+A]=m[x],m[x++]=M}var E=g[T];g[T]=g[w],g[w++]=E}}return w},"lo<=p0&&p0<=hi":function(s,u,d,h,m,g,p){for(var v=2*s,y=v*d,x=y,w=d,k=u,b=s+u,T=d;h>T;++T,y+=v){var _=m[y+k],S=m[y+b];if(_<=p&&p<=S)if(w===T)w+=1,x+=v;else{for(var A=0;v>A;++A){var M=m[y+A];m[y+A]=m[x],m[x++]=M}var E=g[T];g[T]=g[w],g[w++]=E}}return w},"!(lo>=p0)&&!(p1>=hi)":function(s,u,d,h,m,g,p,v){for(var y=2*s,x=y*d,w=x,k=d,b=u,T=s+u,_=d;h>_;++_,x+=y){var S=m[x+b],A=m[x+T];if(!(S>=p||v>=A))if(k===_)k+=1,w+=y;else{for(var M=0;y>M;++M){var E=m[x+M];m[x+M]=m[w],m[w++]=E}var D=g[_];g[_]=g[k],g[k++]=D}}return k}}},{}],40:[function(a,l,c){l.exports=function(p,v){v<=128?i(0,v-1,p):function y(x,w,k){var b=(w-x+1)/6|0,T=x+b,_=w-b,S=x+w>>1,A=S-b,M=S+b,E=T,D=A,O=S,R=M,z=_,L=x+1,P=w-1,N=0;m(E,D,k)&&(N=E,E=D,D=N),m(R,z,k)&&(N=R,R=z,z=N),m(E,O,k)&&(N=E,E=O,O=N),m(D,O,k)&&(N=D,D=O,O=N),m(E,R,k)&&(N=E,E=R,R=N),m(O,R,k)&&(N=O,O=R,R=N),m(D,z,k)&&(N=D,D=z,z=N),m(D,O,k)&&(N=D,D=O,O=N),m(R,z,k)&&(N=R,R=z,z=N);for(var B=k[2*D],G=k[2*D+1],W=k[2*R],K=k[2*R+1],te=2*E,Y=2*O,Z=2*z,re=2*T,U=2*S,q=2*_,$=0;$<2;++$){var ne=k[te+$],H=k[Y+$],Q=k[Z+$];k[re+$]=ne,k[U+$]=H,k[q+$]=Q}u(A,x,k),u(M,w,k);for(var ee=L;ee<=P;++ee)if(g(ee,B,G,k))ee!==L&&s(ee,L,k),++L;else if(!g(ee,W,K,k))for(;;){if(g(P,W,K,k)){g(P,B,G,k)?(d(ee,L,P,k),++L,--P):(s(ee,P,k),--P);break}if(--Pp;){var S=y[_-2],A=y[_-1];if(Sy[v+1])}function g(p,v,y,x){var w=x[p*=2];return w>>1;u(y,K);var te=0,Y=0;for(N=0;N=1<<28)x(m,g,Y--,Z=Z-(1<<28)|0);else if(Z>=0)x(d,h,te--,Z);else if(Z<=-(1<<28)){Z=-Z-(1<<28)|0;for(var re=0;re>>1;u(y,K);var te=0,Y=0,Z=0;for(N=0;N>1==y[2*N+3]>>1&&(U=2,N+=1),re<0){for(var q=-(re>>1)-1,$=0;$>1)-1,U===0?x(d,h,te--,q):U===1?x(m,g,Y--,q):U===2&&x(p,v,Z--,q)}},scanBipartite:function(k,b,T,_,S,A,M,E,D,O,R,z){var L=0,P=2*k,N=b,B=b+k,G=1,W=1;_?W=1<<28:G=1<<28;for(var K=S;K>>1;u(y,re);var U=0;for(K=0;K=1<<28?($=!_,te-=1<<28):($=!!_,te-=1),$)w(d,h,U++,te);else{var ne=z[te],H=P*te,Q=R[H+b+1],ee=R[H+b+1+k];e:for(var ie=0;ie>>1;u(y,te);var Y=0;for(B=0;B=1<<28)d[Y++]=G-(1<<28);else{var re=R[G-=1],U=L*G,q=O[U+b+1],$=O[U+b+1+k];e:for(var ne=0;ne=0;--ne)if(d[ne]===G){for(ie=ne+1;ie0;){for(var b=h.pop(),T=(p=h.pop(),x=-1,w=-1,v=g[p],1);T=0||(d.flip(p,b),s(u,d,h,x,p,w),s(u,d,h,p,w,x),s(u,d,h,w,b,x),s(u,d,h,b,x,w))}}},{"binary-search-bounds":31,"robust-in-sphere":282}],44:[function(a,l,c){var i,s=a("binary-search-bounds");function u(h,m,g,p,v,y,x){this.cells=h,this.neighbor=m,this.flags=p,this.constraint=g,this.active=v,this.next=y,this.boundary=x}function d(h,m){return h[0]-m[0]||h[1]-m[1]||h[2]-m[2]}l.exports=function(h,m,g){var p=function(D,O){for(var R=D.cells(),z=R.length,L=0;L0||x.length>0;){for(;y.length>0;){var _=y.pop();if(w[_]!==-v){w[_]=v,k[_];for(var S=0;S<3;++S){var A=T[3*_+S];A>=0&&w[A]===0&&(b[3*_+S]?x.push(A):(y.push(A),w[A]=v))}}}var M=x;x=y,y=M,x.length=0,v=-v}var E=function(D,O,R){for(var z=0,L=0;L1&&s(k[E[D-2]],k[E[D-1]],b)>0;)x.push([E[D-1],E[D-2],T]),D-=1;E.length=D,E.push(T);var O=M.upperIds;for(D=O.length;D>1&&s(k[O[D-2]],k[O[D-1]],b)<0;)x.push([O[D-2],O[D-1],T]),D-=1;O.length=D,O.push(T)}}function p(x,w){var k;return(k=x.a[0]M[0]&&T.push(new d(M,A,2,_),new d(A,M,1,_))}T.sort(h);for(var E=T[0].a[0]-(1+Math.abs(T[0].a[0]))*Math.pow(2,-52),D=[new u([E,1],[E,0],-1,[],[],[],[])],O=[],R=(_=0,T.length);_=0}}(),u.removeTriangle=function(h,m,g){var p=this.stars;d(p[h],m,g),d(p[m],g,h),d(p[g],h,m)},u.addTriangle=function(h,m,g){var p=this.stars;p[h].push(m,g),p[m].push(g,h),p[g].push(h,m)},u.opposite=function(h,m){for(var g=this.stars[m],p=1,v=g.length;pA[2]?1:0)}function T(S,A,M){if(S.length!==0){if(A)for(var E=0;E=0;--W){var ne=P[K=(ge=B[W])[0]],H=ne[0],Q=ne[1],ee=L[H],ie=L[Q];if((ee[0]-ie[0]||ee[1]-ie[1])<0){var ae=H;H=Q,Q=ae}ne[0]=H;var ue,le=ne[1]=ge[1];for(G&&(ue=ne[2]);W>0&&B[W-1][0]===K;){var ge,fe=(ge=B[--W])[1];G?P.push([le,fe,ue]):P.push([le,fe]),le=fe}G?P.push([le,Q,ue]):P.push([le,Q])}return te}(S,A,D,R,M));return T(A,z,M),!!z||D.length>0||R.length>0}},{"./lib/rat-seg-intersect":51,"big-rat":18,"big-rat/cmp":16,"big-rat/to-float":30,"box-intersect":35,nextafter:260,"rat-vec":273,"robust-segment-intersect":287,"union-find":309}],51:[function(a,l,c){l.exports=function(v,y,x,w){var k=h(y,v),b=h(w,x),T=p(k,b);if(d(T)===0)return null;var _=h(v,x),S=p(b,_),A=s(S,T),M=g(k,A);return m(v,M)};var i=a("big-rat/mul"),s=a("big-rat/div"),u=a("big-rat/sub"),d=a("big-rat/sign"),h=a("rat-vec/sub"),m=a("rat-vec/add"),g=a("rat-vec/muls");function p(v,y){return u(i(v[0],y[1]),i(v[1],y[0]))}},{"big-rat/div":17,"big-rat/mul":27,"big-rat/sign":28,"big-rat/sub":29,"rat-vec/add":272,"rat-vec/muls":274,"rat-vec/sub":275}],52:[function(a,l,c){l.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:1,rgb:[255,255,255,1]}],viridis:[{index:0,rgb:[68,1,84]},{index:.13,rgb:[71,44,122]},{index:.25,rgb:[59,81,139]},{index:.38,rgb:[44,113,142]},{index:.5,rgb:[33,144,141]},{index:.63,rgb:[39,173,129]},{index:.75,rgb:[92,200,99]},{index:.88,rgb:[170,220,50]},{index:1,rgb:[253,231,37]}],inferno:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[31,12,72]},{index:.25,rgb:[85,15,109]},{index:.38,rgb:[136,34,106]},{index:.5,rgb:[186,54,85]},{index:.63,rgb:[227,89,51]},{index:.75,rgb:[249,140,10]},{index:.88,rgb:[249,201,50]},{index:1,rgb:[252,255,164]}],magma:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[28,16,68]},{index:.25,rgb:[79,18,123]},{index:.38,rgb:[129,37,129]},{index:.5,rgb:[181,54,122]},{index:.63,rgb:[229,80,100]},{index:.75,rgb:[251,135,97]},{index:.88,rgb:[254,194,135]},{index:1,rgb:[252,253,191]}],plasma:[{index:0,rgb:[13,8,135]},{index:.13,rgb:[75,3,161]},{index:.25,rgb:[125,3,168]},{index:.38,rgb:[168,34,150]},{index:.5,rgb:[203,70,121]},{index:.63,rgb:[229,107,93]},{index:.75,rgb:[248,148,65]},{index:.88,rgb:[253,195,40]},{index:1,rgb:[240,249,33]}],warm:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[172,0,187]},{index:.25,rgb:[219,0,170]},{index:.38,rgb:[255,0,130]},{index:.5,rgb:[255,63,74]},{index:.63,rgb:[255,123,0]},{index:.75,rgb:[234,176,0]},{index:.88,rgb:[190,228,0]},{index:1,rgb:[147,255,0]}],cool:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[116,0,218]},{index:.25,rgb:[98,74,237]},{index:.38,rgb:[68,146,231]},{index:.5,rgb:[0,204,197]},{index:.63,rgb:[0,247,146]},{index:.75,rgb:[0,255,88]},{index:.88,rgb:[40,255,8]},{index:1,rgb:[147,255,0]}],"rainbow-soft":[{index:0,rgb:[125,0,179]},{index:.1,rgb:[199,0,180]},{index:.2,rgb:[255,0,121]},{index:.3,rgb:[255,108,0]},{index:.4,rgb:[222,194,0]},{index:.5,rgb:[150,255,0]},{index:.6,rgb:[0,255,55]},{index:.7,rgb:[0,246,150]},{index:.8,rgb:[50,167,222]},{index:.9,rgb:[103,51,235]},{index:1,rgb:[124,0,186]}],bathymetry:[{index:0,rgb:[40,26,44]},{index:.13,rgb:[59,49,90]},{index:.25,rgb:[64,76,139]},{index:.38,rgb:[63,110,151]},{index:.5,rgb:[72,142,158]},{index:.63,rgb:[85,174,163]},{index:.75,rgb:[120,206,163]},{index:.88,rgb:[187,230,172]},{index:1,rgb:[253,254,204]}],cdom:[{index:0,rgb:[47,15,62]},{index:.13,rgb:[87,23,86]},{index:.25,rgb:[130,28,99]},{index:.38,rgb:[171,41,96]},{index:.5,rgb:[206,67,86]},{index:.63,rgb:[230,106,84]},{index:.75,rgb:[242,149,103]},{index:.88,rgb:[249,193,135]},{index:1,rgb:[254,237,176]}],chlorophyll:[{index:0,rgb:[18,36,20]},{index:.13,rgb:[25,63,41]},{index:.25,rgb:[24,91,59]},{index:.38,rgb:[13,119,72]},{index:.5,rgb:[18,148,80]},{index:.63,rgb:[80,173,89]},{index:.75,rgb:[132,196,122]},{index:.88,rgb:[175,221,162]},{index:1,rgb:[215,249,208]}],density:[{index:0,rgb:[54,14,36]},{index:.13,rgb:[89,23,80]},{index:.25,rgb:[110,45,132]},{index:.38,rgb:[120,77,178]},{index:.5,rgb:[120,113,213]},{index:.63,rgb:[115,151,228]},{index:.75,rgb:[134,185,227]},{index:.88,rgb:[177,214,227]},{index:1,rgb:[230,241,241]}],"freesurface-blue":[{index:0,rgb:[30,4,110]},{index:.13,rgb:[47,14,176]},{index:.25,rgb:[41,45,236]},{index:.38,rgb:[25,99,212]},{index:.5,rgb:[68,131,200]},{index:.63,rgb:[114,156,197]},{index:.75,rgb:[157,181,203]},{index:.88,rgb:[200,208,216]},{index:1,rgb:[241,237,236]}],"freesurface-red":[{index:0,rgb:[60,9,18]},{index:.13,rgb:[100,17,27]},{index:.25,rgb:[142,20,29]},{index:.38,rgb:[177,43,27]},{index:.5,rgb:[192,87,63]},{index:.63,rgb:[205,125,105]},{index:.75,rgb:[216,162,148]},{index:.88,rgb:[227,199,193]},{index:1,rgb:[241,237,236]}],oxygen:[{index:0,rgb:[64,5,5]},{index:.13,rgb:[106,6,15]},{index:.25,rgb:[144,26,7]},{index:.38,rgb:[168,64,3]},{index:.5,rgb:[188,100,4]},{index:.63,rgb:[206,136,11]},{index:.75,rgb:[220,174,25]},{index:.88,rgb:[231,215,44]},{index:1,rgb:[248,254,105]}],par:[{index:0,rgb:[51,20,24]},{index:.13,rgb:[90,32,35]},{index:.25,rgb:[129,44,34]},{index:.38,rgb:[159,68,25]},{index:.5,rgb:[182,99,19]},{index:.63,rgb:[199,134,22]},{index:.75,rgb:[212,171,35]},{index:.88,rgb:[221,210,54]},{index:1,rgb:[225,253,75]}],phase:[{index:0,rgb:[145,105,18]},{index:.13,rgb:[184,71,38]},{index:.25,rgb:[186,58,115]},{index:.38,rgb:[160,71,185]},{index:.5,rgb:[110,97,218]},{index:.63,rgb:[50,123,164]},{index:.75,rgb:[31,131,110]},{index:.88,rgb:[77,129,34]},{index:1,rgb:[145,105,18]}],salinity:[{index:0,rgb:[42,24,108]},{index:.13,rgb:[33,50,162]},{index:.25,rgb:[15,90,145]},{index:.38,rgb:[40,118,137]},{index:.5,rgb:[59,146,135]},{index:.63,rgb:[79,175,126]},{index:.75,rgb:[120,203,104]},{index:.88,rgb:[193,221,100]},{index:1,rgb:[253,239,154]}],temperature:[{index:0,rgb:[4,35,51]},{index:.13,rgb:[23,51,122]},{index:.25,rgb:[85,59,157]},{index:.38,rgb:[129,79,143]},{index:.5,rgb:[175,95,130]},{index:.63,rgb:[222,112,101]},{index:.75,rgb:[249,146,66]},{index:.88,rgb:[249,196,65]},{index:1,rgb:[232,250,91]}],turbidity:[{index:0,rgb:[34,31,27]},{index:.13,rgb:[65,50,41]},{index:.25,rgb:[98,69,52]},{index:.38,rgb:[131,89,57]},{index:.5,rgb:[161,112,59]},{index:.63,rgb:[185,140,66]},{index:.75,rgb:[202,174,88]},{index:.88,rgb:[216,209,126]},{index:1,rgb:[233,246,171]}],"velocity-blue":[{index:0,rgb:[17,32,64]},{index:.13,rgb:[35,52,116]},{index:.25,rgb:[29,81,156]},{index:.38,rgb:[31,113,162]},{index:.5,rgb:[50,144,169]},{index:.63,rgb:[87,173,176]},{index:.75,rgb:[149,196,189]},{index:.88,rgb:[203,221,211]},{index:1,rgb:[254,251,230]}],"velocity-green":[{index:0,rgb:[23,35,19]},{index:.13,rgb:[24,64,38]},{index:.25,rgb:[11,95,45]},{index:.38,rgb:[39,123,35]},{index:.5,rgb:[95,146,12]},{index:.63,rgb:[152,165,18]},{index:.75,rgb:[201,186,69]},{index:.88,rgb:[233,216,137]},{index:1,rgb:[255,253,205]}],cubehelix:[{index:0,rgb:[0,0,0]},{index:.07,rgb:[22,5,59]},{index:.13,rgb:[60,4,105]},{index:.2,rgb:[109,1,135]},{index:.27,rgb:[161,0,147]},{index:.33,rgb:[210,2,142]},{index:.4,rgb:[251,11,123]},{index:.47,rgb:[255,29,97]},{index:.53,rgb:[255,54,69]},{index:.6,rgb:[255,85,46]},{index:.67,rgb:[255,120,34]},{index:.73,rgb:[255,157,37]},{index:.8,rgb:[241,191,57]},{index:.87,rgb:[224,220,93]},{index:.93,rgb:[218,241,142]},{index:1,rgb:[227,253,198]}]}},{}],53:[function(a,l,c){var i=a("./colorScale"),s=a("lerp");function u(m){return[m[0]/255,m[1]/255,m[2]/255,m[3]]}function d(m){for(var g,p="#",v=0;v<3;++v)p+=("00"+(g=(g=m[v]).toString(16))).substr(g.length);return p}function h(m){return"rgba("+m.join(",")+")"}l.exports=function(m){var g,p,v,y,x,w,k,b,T,_;if(m||(m={}),b=(m.nshades||72)-1,k=m.format||"hex",(w=m.colormap)||(w="jet"),typeof w=="string"){if(w=w.toLowerCase(),!i[w])throw Error(w+" not a supported colorscale");x=i[w]}else{if(!Array.isArray(w))throw Error("unsupported colormap option",w);x=w.slice()}if(x.length>b+1)throw new Error(w+" map requires nshades to be at least size "+x.length);T=Array.isArray(m.alpha)?m.alpha.length!==2?[1,1]:m.alpha.slice():typeof m.alpha=="number"?[m.alpha,m.alpha]:[1,1],g=x.map(function(D){return Math.round(D.index*b)}),T[0]=Math.min(Math.max(T[0],0),1),T[1]=Math.min(Math.max(T[1],0),1);var S=x.map(function(D,O){var R=x[O].index,z=x[O].rgb.slice();return z.length===4&&z[3]>=0&&z[3]<=1||(z[3]=T[0]+(T[1]-T[0])*R),z}),A=[];for(_=0;_0||m(g,p,y)?-1:1:w===0?k>0||m(g,p,v)?1:-1:s(k-w)}var _=i(g,p,v);return _>0?x>0&&i(g,p,y)>0?1:-1:_<0?x>0||i(g,p,y)>0?1:-1:i(g,p,y)>0||m(g,p,v)?1:-1};var i=a("robust-orientation"),s=a("signum"),u=a("two-sum"),d=a("robust-product"),h=a("robust-sum");function m(g,p,v){var y=u(g[0],-p[0]),x=u(g[1],-p[1]),w=u(v[0],-p[0]),k=u(v[1],-p[1]),b=h(d(y,w),d(x,k));return b[b.length-1]>=0}},{"robust-orientation":284,"robust-product":285,"robust-sum":289,signum:55,"two-sum":307}],55:[function(a,l,c){l.exports=function(i){return i<0?-1:i>0?1:0}},{}],56:[function(a,l,c){l.exports=function(u,d){var h=u.length,m=u.length-d.length;if(m)return m;switch(h){case 0:return 0;case 1:return u[0]-d[0];case 2:return u[0]+u[1]-d[0]-d[1]||i(u[0],u[1])-i(d[0],d[1]);case 3:var g=u[0]+u[1],p=d[0]+d[1];if(m=g+u[2]-(p+d[2]))return m;var v=i(u[0],u[1]),y=i(d[0],d[1]);return i(v,u[2])-i(y,d[2])||i(v+u[2],g)-i(y+d[2],p);case 4:var x=u[0],w=u[1],k=u[2],b=u[3],T=d[0],_=d[1],S=d[2],A=d[3];return x+w+k+b-(T+_+S+A)||i(x,w,k,b)-i(T,_,S,A,T)||i(x+w,x+k,x+b,w+k,w+b,k+b)-i(T+_,T+S,T+A,_+S,_+A,S+A)||i(x+w+k,x+w+b,x+k+b,w+k+b)-i(T+_+S,T+_+A,T+S+A,_+S+A);default:for(var M=u.slice().sort(s),E=d.slice().sort(s),D=0;Di[u][0]&&(u=d);return su?[[u],[s]]:[[s]]}},{}],60:[function(a,l,c){l.exports=function(s){var u=i(s),d=u.length;if(d<=2)return[];for(var h=new Array(d),m=u[d-1],g=0;g=v[_]&&(T+=1);k[b]=T}}return p}(i(m,!0),h)}};var i=a("incremental-convex-hull"),s=a("affine-hull")},{"affine-hull":10,"incremental-convex-hull":233}],62:[function(a,l,c){l.exports=function(i,s,u,d,h,m){var g=h-1,p=h*h,v=g*g,y=(1+2*h)*v,x=h*v,w=p*(3-2*h),k=p*g;if(i.length){m||(m=new Array(i.length));for(var b=i.length-1;b>=0;--b)m[b]=y*i[b]+x*s[b]+w*u[b]+k*d[b];return m}return y*i+x*s+w*u+k*d},l.exports.derivative=function(i,s,u,d,h,m){var g=6*h*h-6*h,p=3*h*h-4*h+1,v=-6*h*h+6*h,y=3*h*h-2*h;if(i.length){m||(m=new Array(i.length));for(var x=i.length-1;x>=0;--x)m[x]=g*i[x]+p*s[x]+v*u[x]+y*d[x];return m}return g*i+p*s+v*u[x]+y*d}},{}],63:[function(a,l,c){var i=a("incremental-convex-hull"),s=a("uniq");function u(h,m){this.point=h,this.index=m}function d(h,m){for(var g=h.point,p=m.point,v=g.length,y=0;y=2)return!1;R[L]=P}return!0}):O.filter(function(R){for(var z=0;z<=p;++z){var L=A[R[z]];if(L<0)return!1;R[z]=L}return!0}),1&p)for(x=0;x>>31},l.exports.exponent=function(m){return(l.exports.hi(m)<<1>>>21)-1023},l.exports.fraction=function(m){var g=l.exports.lo(m),p=l.exports.hi(m),v=1048575&p;return 2146435072&p&&(v+=1<<20),[g,v]},l.exports.denormalized=function(m){return!(2146435072&l.exports.hi(m))}}).call(this)}).call(this,a("buffer").Buffer)},{buffer:3}],65:[function(a,l,c){l.exports=function(i,s){switch(s===void 0&&(s=0),typeof i){case"number":if(i>0)return function(u,d){var h,m;for(h=new Array(u),m=0;m=v-1){_=w.length-1;var A=g-p[v-1];for(S=0;S=v-1)for(var T=w.length-1,_=(p[v-1],0);_=0;--v)if(g[--p])return!1;return!0},h.jump=function(g){var p=this.lastT(),v=this.dimension;if(!(g0;--S)y.push(u(b[S-1],T[S-1],arguments[S])),x.push(0)}},h.push=function(g){var p=this.lastT(),v=this.dimension;if(!(g1e-6?1/k:0;this._time.push(g);for(var A=v;A>0;--A){var M=u(T[A-1],_[A-1],arguments[A]);y.push(M),x.push((M-y[w++])*S)}}},h.set=function(g){var p=this.dimension;if(!(g0;--b)v.push(u(w[b-1],k[b-1],arguments[b])),y.push(0)}},h.move=function(g){var p=this.lastT(),v=this.dimension;if(!(g<=p||arguments.length!==v+1)){var y=this._state,x=this._velocity,w=y.length-this.dimension,k=this.bounds,b=k[0],T=k[1],_=g-p,S=_>1e-6?1/_:0;this._time.push(g);for(var A=v;A>0;--A){var M=arguments[A];y.push(u(b[A-1],T[A-1],y[w++]+M)),x.push(M*S)}}},h.idle=function(g){var p=this.lastT();if(!(g=0;--S)y.push(u(b[S],T[S],y[w]+_*x[w])),x.push(0),w+=1}}},{"binary-search-bounds":31,"cubic-hermite":62}],69:[function(a,l,c){l.exports=function(b){return new h(b||k,null)};function i(b,T,_,S,A,M){this._color=b,this.key=T,this.value=_,this.left=S,this.right=A,this._count=M}function s(b){return new i(b._color,b.key,b.value,b.left,b.right,b._count)}function u(b,T){return new i(b,T.key,T.value,T.left,T.right,T._count)}function d(b){b._count=1+(b.left?b.left._count:0)+(b.right?b.right._count:0)}function h(b,T){this._compare=b,this.root=T}var m=h.prototype;function g(b,T){var _;return T.left&&(_=g(b,T.left))?_:(_=b(T.key,T.value))||(T.right?g(b,T.right):void 0)}function p(b,T,_,S){if(T(b,S.key)<=0){var A;if(S.left&&(A=p(b,T,_,S.left))||(A=_(S.key,S.value)))return A}if(S.right)return p(b,T,_,S.right)}function v(b,T,_,S,A){var M,E=_(b,A.key),D=_(T,A.key);if(E<=0&&(A.left&&(M=v(b,T,_,S,A.left))||D>0&&(M=S(A.key,A.value))))return M;if(D>0&&A.right)return v(b,T,_,S,A.right)}function y(b,T){this.tree=b,this._stack=T}Object.defineProperty(m,"keys",{get:function(){var b=[];return this.forEach(function(T,_){b.push(T)}),b}}),Object.defineProperty(m,"values",{get:function(){var b=[];return this.forEach(function(T,_){b.push(_)}),b}}),Object.defineProperty(m,"length",{get:function(){return this.root?this.root._count:0}}),m.insert=function(b,T){for(var _=this._compare,S=this.root,A=[],M=[];S;){var E=_(b,S.key);A.push(S),M.push(E),S=E<=0?S.left:S.right}A.push(new i(0,b,T,null,null,1));for(var D=A.length-2;D>=0;--D)S=A[D],M[D]<=0?A[D]=new i(S._color,S.key,S.value,A[D+1],S.right,S._count+1):A[D]=new i(S._color,S.key,S.value,S.left,A[D+1],S._count+1);for(D=A.length-1;D>1;--D){var O=A[D-1];if(S=A[D],O._color===1||S._color===1)break;var R=A[D-2];if(R.left===O)if(O.left===S){if(!(z=R.right)||z._color!==0){R._color=0,R.left=O.right,O._color=1,O.right=R,A[D-2]=O,A[D-1]=S,d(R),d(O),D>=3&&((L=A[D-3]).left===R?L.left=O:L.right=O);break}O._color=1,R.right=u(1,z),R._color=0,D-=1}else{if(!(z=R.right)||z._color!==0){O.right=S.left,R._color=0,R.left=S.right,S._color=1,S.left=O,S.right=R,A[D-2]=S,A[D-1]=O,d(R),d(O),d(S),D>=3&&((L=A[D-3]).left===R?L.left=S:L.right=S);break}O._color=1,R.right=u(1,z),R._color=0,D-=1}else if(O.right===S){if(!(z=R.left)||z._color!==0){R._color=0,R.right=O.left,O._color=1,O.left=R,A[D-2]=O,A[D-1]=S,d(R),d(O),D>=3&&((L=A[D-3]).right===R?L.right=O:L.left=O);break}O._color=1,R.left=u(1,z),R._color=0,D-=1}else{var z;if(!(z=R.left)||z._color!==0){var L;O.left=S.right,R._color=0,R.right=S.left,S._color=1,S.right=O,S.left=R,A[D-2]=S,A[D-1]=O,d(R),d(O),d(S),D>=3&&((L=A[D-3]).right===R?L.right=S:L.left=S);break}O._color=1,R.left=u(1,z),R._color=0,D-=1}}return A[0]._color=1,new h(_,A[0])},m.forEach=function(b,T,_){if(this.root)switch(arguments.length){case 1:return g(b,this.root);case 2:return p(T,this._compare,b,this.root);case 3:return this._compare(T,_)>=0?void 0:v(T,_,this._compare,b,this.root)}},Object.defineProperty(m,"begin",{get:function(){for(var b=[],T=this.root;T;)b.push(T),T=T.left;return new y(this,b)}}),Object.defineProperty(m,"end",{get:function(){for(var b=[],T=this.root;T;)b.push(T),T=T.right;return new y(this,b)}}),m.at=function(b){if(b<0)return new y(this,[]);for(var T=this.root,_=[];;){if(_.push(T),T.left){if(b=T.right._count)break;T=T.right}return new y(this,[])},m.ge=function(b){for(var T=this._compare,_=this.root,S=[],A=0;_;){var M=T(b,_.key);S.push(_),M<=0&&(A=S.length),_=M<=0?_.left:_.right}return S.length=A,new y(this,S)},m.gt=function(b){for(var T=this._compare,_=this.root,S=[],A=0;_;){var M=T(b,_.key);S.push(_),M<0&&(A=S.length),_=M<0?_.left:_.right}return S.length=A,new y(this,S)},m.lt=function(b){for(var T=this._compare,_=this.root,S=[],A=0;_;){var M=T(b,_.key);S.push(_),M>0&&(A=S.length),_=M<=0?_.left:_.right}return S.length=A,new y(this,S)},m.le=function(b){for(var T=this._compare,_=this.root,S=[],A=0;_;){var M=T(b,_.key);S.push(_),M>=0&&(A=S.length),_=M<0?_.left:_.right}return S.length=A,new y(this,S)},m.find=function(b){for(var T=this._compare,_=this.root,S=[];_;){var A=T(b,_.key);if(S.push(_),A===0)return new y(this,S);_=A<=0?_.left:_.right}return new y(this,[])},m.remove=function(b){var T=this.find(b);return T?T.remove():this},m.get=function(b){for(var T=this._compare,_=this.root;_;){var S=T(b,_.key);if(S===0)return _.value;_=S<=0?_.left:_.right}};var x=y.prototype;function w(b,T){b.key=T.key,b.value=T.value,b.left=T.left,b.right=T.right,b._color=T._color,b._count=T._count}function k(b,T){return bT?1:0}Object.defineProperty(x,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(x,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),x.clone=function(){return new y(this.tree,this._stack.slice())},x.remove=function(){var b=this._stack;if(b.length===0)return this.tree;var T=new Array(b.length),_=b[b.length-1];T[T.length-1]=new i(_._color,_.key,_.value,_.left,_.right,_._count);for(var S=b.length-2;S>=0;--S)(_=b[S]).left===b[S+1]?T[S]=new i(_._color,_.key,_.value,T[S+1],_.right,_._count):T[S]=new i(_._color,_.key,_.value,_.left,T[S+1],_._count);if((_=T[T.length-1]).left&&_.right){var A=T.length;for(_=_.left;_.right;)T.push(_),_=_.right;var M=T[A-1];for(T.push(new i(_._color,M.key,M.value,_.left,_.right,_._count)),T[A-1].key=_.key,T[A-1].value=_.value,S=T.length-2;S>=A;--S)_=T[S],T[S]=new i(_._color,_.key,_.value,_.left,T[S+1],_._count);T[A-1].left=T[A]}if((_=T[T.length-1])._color===0){var E=T[T.length-2];for(E.left===_?E.left=null:E.right===_&&(E.right=null),T.pop(),S=0;S=0;--N){if(R=O[N],N===0)return void(R._color=1);if((z=O[N-1]).left===R){if((L=z.right).right&&L.right._color===0)return P=(L=z.right=s(L)).right=s(L.right),z.right=L.left,L.left=z,L.right=P,L._color=z._color,R._color=1,z._color=1,P._color=1,d(z),d(L),N>1&&((B=O[N-2]).left===z?B.left=L:B.right=L),void(O[N-1]=L);if(L.left&&L.left._color===0)return P=(L=z.right=s(L)).left=s(L.left),z.right=P.left,L.left=P.right,P.left=z,P.right=L,P._color=z._color,z._color=1,L._color=1,R._color=1,d(z),d(L),d(P),N>1&&((B=O[N-2]).left===z?B.left=P:B.right=P),void(O[N-1]=P);if(L._color===1){if(z._color===0)return z._color=1,void(z.right=u(0,L));z.right=u(0,L);continue}L=s(L),z.right=L.left,L.left=z,L._color=z._color,z._color=0,d(z),d(L),N>1&&((B=O[N-2]).left===z?B.left=L:B.right=L),O[N-1]=L,O[N]=z,N+11&&((B=O[N-2]).right===z?B.right=L:B.left=L),void(O[N-1]=L);if(L.right&&L.right._color===0)return P=(L=z.left=s(L)).right=s(L.right),z.left=P.right,L.right=P.left,P.right=z,P.left=L,P._color=z._color,z._color=1,L._color=1,R._color=1,d(z),d(L),d(P),N>1&&((B=O[N-2]).right===z?B.right=P:B.left=P),void(O[N-1]=P);if(L._color===1){if(z._color===0)return z._color=1,void(z.left=u(0,L));z.left=u(0,L);continue}var B;L=s(L),z.left=L.right,L.right=z,L._color=z._color,z._color=0,d(z),d(L),N>1&&((B=O[N-2]).right===z?B.right=L:B.left=L),O[N-1]=L,O[N]=z,N+10)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(x,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(x,"index",{get:function(){var b=0,T=this._stack;if(T.length===0){var _=this.tree.root;return _?_._count:0}T[T.length-1].left&&(b=T[T.length-1].left._count);for(var S=T.length-2;S>=0;--S)T[S+1]===T[S].right&&(++b,T[S].left&&(b+=T[S].left._count));return b},enumerable:!0}),x.next=function(){var b=this._stack;if(b.length!==0){var T=b[b.length-1];if(T.right)for(T=T.right;T;)b.push(T),T=T.left;else for(b.pop();b.length>0&&b[b.length-1].right===T;)T=b[b.length-1],b.pop()}},Object.defineProperty(x,"hasNext",{get:function(){var b=this._stack;if(b.length===0)return!1;if(b[b.length-1].right)return!0;for(var T=b.length-1;T>0;--T)if(b[T-1].left===b[T])return!0;return!1}}),x.update=function(b){var T=this._stack;if(T.length===0)throw new Error("Can't update empty node!");var _=new Array(T.length),S=T[T.length-1];_[_.length-1]=new i(S._color,S.key,b,S.left,S.right,S._count);for(var A=T.length-2;A>=0;--A)(S=T[A]).left===T[A+1]?_[A]=new i(S._color,S.key,S.value,_[A+1],S.right,S._count):_[A]=new i(S._color,S.key,S.value,S.left,_[A+1],S._count);return new h(this.tree._compare,_[0])},x.prev=function(){var b=this._stack;if(b.length!==0){var T=b[b.length-1];if(T.left)for(T=T.left;T;)b.push(T),T=T.right;else for(b.pop();b.length>0&&b[b.length-1].left===T;)T=b[b.length-1],b.pop()}},Object.defineProperty(x,"hasPrev",{get:function(){var b=this._stack;if(b.length===0)return!1;if(b[b.length-1].left)return!0;for(var T=b.length-1;T>0;--T)if(b[T-1].right===b[T])return!0;return!1}})},{}],70:[function(a,l,c){l.exports=function(A,M){var E=new p(A);return E.update(M),E};var i=a("./lib/text.js"),s=a("./lib/lines.js"),u=a("./lib/background.js"),d=a("./lib/cube.js"),h=a("./lib/ticks.js"),m=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function g(A,M){return A[0]=M[0],A[1]=M[1],A[2]=M[2],A}function p(A){this.gl=A,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont="sans-serif",this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(A)}var v=p.prototype;function y(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}v.update=function(A){function M(K,te,Y){if(Y in A){var Z,re=A[Y],U=this[Y];(K?Array.isArray(re)&&Array.isArray(re[0]):Array.isArray(re))?this[Y]=Z=[te(re[0]),te(re[1]),te(re[2])]:this[Y]=Z=[te(re),te(re),te(re)];for(var q=0;q<3;++q)if(Z[q]!==U[q])return!0}return!1}A=A||{};var E,D=M.bind(this,!1,Number),O=M.bind(this,!1,Boolean),R=M.bind(this,!1,String),z=M.bind(this,!0,function(K){if(Array.isArray(K)){if(K.length===3)return[+K[0],+K[1],+K[2],1];if(K.length===4)return[+K[0],+K[1],+K[2],+K[3]]}return[0,0,0,1]}),L=!1,P=!1;if("bounds"in A)for(var N=A.bounds,B=0;B<2;++B)for(var G=0;G<3;++G)N[B][G]!==this.bounds[B][G]&&(P=!0),this.bounds[B][G]=N[B][G];if("ticks"in A)for(E=A.ticks,L=!0,this.autoTicks=!1,B=0;B<3;++B)this.tickSpacing[B]=0;else D("tickSpacing")&&(this.autoTicks=!0,P=!0);if(this._firstInit&&("ticks"in A||"tickSpacing"in A||(this.autoTicks=!0),P=!0,L=!0,this._firstInit=!1),P&&this.autoTicks&&(E=h.create(this.bounds,this.tickSpacing),L=!0),L){for(B=0;B<3;++B)E[B].sort(function(K,te){return K.x-te.x});h.equal(E,this.ticks)?L=!1:this.ticks=E}O("tickEnable"),R("tickFont")&&(L=!0),D("tickSize"),D("tickAngle"),D("tickPad"),z("tickColor");var W=R("labels");R("labelFont")&&(W=!0),O("labelEnable"),D("labelSize"),D("labelPad"),z("labelColor"),O("lineEnable"),O("lineMirror"),D("lineWidth"),z("lineColor"),O("lineTickEnable"),O("lineTickMirror"),D("lineTickLength"),D("lineTickWidth"),z("lineTickColor"),O("gridEnable"),D("gridWidth"),z("gridColor"),O("zeroEnable"),z("zeroLineColor"),D("zeroLineWidth"),O("backgroundEnable"),z("backgroundColor"),this._text?this._text&&(W||L)&&this._text.update(this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont):this._text=i(this.gl,this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont),this._lines&&L&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=s(this.gl,this.bounds,this.ticks))};var x=[new y,new y,new y];function w(A,M,E,D,O){for(var R=A.primalOffset,z=A.primalMinor,L=A.mirrorOffset,P=A.mirrorMinor,N=D[M],B=0;B<3;++B)if(M!==B){var G=R,W=L,K=z,te=P;N&1<0?(K[B]=-1,te[B]=0):(K[B]=0,te[B]=1)}}var k=[0,0,0],b={model:m,view:m,projection:m,_ortho:!1};v.isOpaque=function(){return!0},v.isTransparent=function(){return!1},v.drawTransparent=function(A){};var T=[0,0,0],_=[0,0,0],S=[0,0,0];v.draw=function(A){A=A||b;for(var M=this.gl,E=A.model||m,D=A.view||m,O=A.projection||m,R=this.bounds,z=A._ortho||!1,L=d(E,D,O,R,z),P=L.cubeEdges,N=L.axis,B=D[12],G=D[13],W=D[14],K=D[15],te=(z?2:1)*this.pixelRatio*(O[3]*B+O[7]*G+O[11]*W+O[15]*K)/M.drawingBufferHeight,Y=0;Y<3;++Y)this.lastCubeProps.cubeEdges[Y]=P[Y],this.lastCubeProps.axis[Y]=N[Y];var Z=x;for(Y=0;Y<3;++Y)w(x[Y],Y,this.bounds,P,N);M=this.gl;var re,U=k;for(Y=0;Y<3;++Y)this.backgroundEnable[Y]?U[Y]=N[Y]:U[Y]=0;for(this._background.draw(E,D,O,R,U,this.backgroundColor),this._lines.bind(E,D,O,this),Y=0;Y<3;++Y){var q=[0,0,0];N[Y]>0?q[Y]=R[1][Y]:q[Y]=R[0][Y];for(var $=0;$<2;++$){var ne=(Y+1+$)%3,H=(Y+1+(1^$))%3;this.gridEnable[ne]&&this._lines.drawGrid(ne,H,this.bounds,q,this.gridColor[ne],this.gridWidth[ne]*this.pixelRatio)}for($=0;$<2;++$)ne=(Y+1+$)%3,H=(Y+1+(1^$))%3,this.zeroEnable[H]&&Math.min(R[0][H],R[1][H])<=0&&Math.max(R[0][H],R[1][H])>=0&&this._lines.drawZero(ne,H,this.bounds,q,this.zeroLineColor[H],this.zeroLineWidth[H]*this.pixelRatio)}for(Y=0;Y<3;++Y){this.lineEnable[Y]&&this._lines.drawAxisLine(Y,this.bounds,Z[Y].primalOffset,this.lineColor[Y],this.lineWidth[Y]*this.pixelRatio),this.lineMirror[Y]&&this._lines.drawAxisLine(Y,this.bounds,Z[Y].mirrorOffset,this.lineColor[Y],this.lineWidth[Y]*this.pixelRatio);var Q=g(T,Z[Y].primalMinor),ee=g(_,Z[Y].mirrorMinor),ie=this.lineTickLength;for($=0;$<3;++$){var ae=te/E[5*$];Q[$]*=ie[$]*ae,ee[$]*=ie[$]*ae}this.lineTickEnable[Y]&&this._lines.drawAxisTicks(Y,Z[Y].primalOffset,Q,this.lineTickColor[Y],this.lineTickWidth[Y]*this.pixelRatio),this.lineTickMirror[Y]&&this._lines.drawAxisTicks(Y,Z[Y].mirrorOffset,ee,this.lineTickColor[Y],this.lineTickWidth[Y]*this.pixelRatio)}this._lines.unbind(),this._text.bind(E,D,O,this.pixelRatio);var ue,le;function ge(Oe){(le=[0,0,0])[Oe]=1}function fe(Oe,de,ye){var Me=(Oe+1)%3,ke=(Oe+2)%3,Ee=de[Me],ze=de[ke],Fe=ye[Me],Ve=ye[ke];Ee>0&&Ve>0||Ee>0&&Ve<0||Ee<0&&Ve>0||Ee<0&&Ve<0?ge(Me):(ze>0&&Fe>0||ze>0&&Fe<0||ze<0&&Fe>0||ze<0&&Fe<0)&&ge(ke)}for(Y=0;Y<3;++Y){var me=Z[Y].primalMinor,_e=Z[Y].mirrorMinor,we=g(S,Z[Y].primalOffset);for($=0;$<3;++$)this.lineTickEnable[Y]&&(we[$]+=te*me[$]*Math.max(this.lineTickLength[$],0)/E[5*$]);var Te=[0,0,0];if(Te[Y]=1,this.tickEnable[Y]){for(this.tickAngle[Y]===-3600?(this.tickAngle[Y]=0,this.tickAlign[Y]="auto"):this.tickAlign[Y]=-1,ue=1,(re=[this.tickAlign[Y],.5,ue])[0]==="auto"?re[0]=0:re[0]=parseInt(""+re[0]),le=[0,0,0],fe(Y,me,_e),$=0;$<3;++$)we[$]+=te*me[$]*this.tickPad[$]/E[5*$];this._text.drawTicks(Y,this.tickSize[Y],this.tickAngle[Y],we,this.tickColor[Y],Te,le,re)}if(this.labelEnable[Y]){for(ue=0,le=[0,0,0],this.labels[Y].length>4&&(ge(Y),ue=1),(re=[this.labelAlign[Y],.5,ue])[0]==="auto"?re[0]=0:re[0]=parseInt(""+re[0]),$=0;$<3;++$)we[$]+=te*me[$]*this.labelPad[$]/E[5*$];we[Y]+=.5*(R[0][Y]+R[1][Y]),this._text.drawLabel(Y,this.labelSize[Y],this.labelAngle[Y],we,this.labelColor[Y],[0,0,0],le,re)}}this._text.unbind()},v.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},{"./lib/background.js":71,"./lib/cube.js":72,"./lib/lines.js":73,"./lib/text.js":75,"./lib/ticks.js":76}],71:[function(a,l,c){l.exports=function(m){for(var g=[],p=[],v=0,y=0;y<3;++y)for(var x=(y+1)%3,w=(y+2)%3,k=[0,0,0],b=[0,0,0],T=-1;T<=1;T+=2){p.push(v,v+2,v+1,v+1,v+2,v+3),k[y]=T,b[y]=T;for(var _=-1;_<=1;_+=2){k[x]=_;for(var S=-1;S<=1;S+=2)k[w]=S,g.push(k[0],k[1],k[2],b[0],b[1],b[2]),v+=1}var A=x;x=w,w=A}var M=i(m,new Float32Array(g)),E=i(m,new Uint16Array(p),m.ELEMENT_ARRAY_BUFFER),D=s(m,[{buffer:M,type:m.FLOAT,size:3,offset:0,stride:24},{buffer:M,type:m.FLOAT,size:3,offset:12,stride:24}],E),O=u(m);return O.attributes.position.location=0,O.attributes.normal.location=1,new d(m,M,D,O)};var i=a("gl-buffer"),s=a("gl-vao"),u=a("./shaders").bg;function d(m,g,p,v){this.gl=m,this.buffer=g,this.vao=p,this.shader=v}var h=d.prototype;h.draw=function(m,g,p,v,y,x){for(var w=!1,k=0;k<3;++k)w=w||y[k];if(w){var b=this.gl;b.enable(b.POLYGON_OFFSET_FILL),b.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:m,view:g,projection:p,bounds:v,enable:y,colors:x},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),b.disable(b.POLYGON_OFFSET_FILL)}},h.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},{"./shaders":74,"gl-buffer":78,"gl-vao":150}],72:[function(a,l,c){l.exports=function(_,S,A,M,E){s(h,S,_),s(h,A,h);for(var D=0,O=0;O<2;++O){p[2]=M[O][2];for(var R=0;R<2;++R){p[1]=M[R][1];for(var z=0;z<2;++z)p[0]=M[z][0],y(m[D],p,h),D+=1}}var L=-1;for(O=0;O<8;++O){for(var P=m[O][3],N=0;N<3;++N)g[O][N]=m[O][N]/P;E&&(g[O][2]*=-1),P<0&&(L<0||g[O][2]K&&(L|=1<K&&(L|=1<g[O][1])&&(ne=O);var H=-1;for(O=0;O<3;++O)(ee=ne^1<g[Q][0]&&(Q=ee))}var ie=k;ie[0]=ie[1]=ie[2]=0,ie[i.log2(H^ne)]=ne&H,ie[i.log2(ne^Q)]=ne&Q;var ae=7^Q;ae===L||ae===$?(ae=7^H,ie[i.log2(Q^ae)]=ae&Q):ie[i.log2(H^ae)]=ae&H;var ue=b,le=L;for(B=0;B<3;++B)ue[B]=le&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ? + b - PI : + b; +} + +float look_horizontal_or_vertical(float a, float ratio) { + // ratio controls the ratio between being horizontal to (vertical + horizontal) + // if ratio is set to 0.5 then it is 50%, 50%. + // when using a higher ratio e.g. 0.75 the result would + // likely be more horizontal than vertical. + + float b = positive_angle(a); + + return + (b < ( ratio) * HALF_PI) ? 0.0 : + (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI : + (b < (2.0 + ratio) * HALF_PI) ? 0.0 : + (b < (4.0 - ratio) * HALF_PI) ? HALF_PI : + 0.0; +} + +float roundTo(float a, float b) { + return float(b * floor((a + 0.5 * b) / b)); +} + +float look_round_n_directions(float a, int n) { + float b = positive_angle(a); + float div = TWO_PI / float(n); + float c = roundTo(b, div); + return look_upwards(c); +} + +float applyAlignOption(float rawAngle, float delta) { + return + (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions + (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical + (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis + (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards + (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal + rawAngle; // otherwise return back raw input angle +} + +bool isAxisTitle = (axis.x == 0.0) && + (axis.y == 0.0) && + (axis.z == 0.0); + +void main() { + //Compute world offset + float axisDistance = position.z; + vec3 dataPosition = axisDistance * axis + offset; + + float beta = angle; // i.e. user defined attributes for each tick + + float axisAngle; + float clipAngle; + float flip; + + if (enableAlign) { + axisAngle = (isAxisTitle) ? HALF_PI : + computeViewAngle(dataPosition, dataPosition + axis); + clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir); + + axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0; + clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0; + + flip = (dot(vec2(cos(axisAngle), sin(axisAngle)), + vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0; + + beta += applyAlignOption(clipAngle, flip * PI); + } + + //Compute plane offset + vec2 planeCoord = position.xy * pixelScale; + + mat2 planeXform = scale * mat2( + cos(beta), sin(beta), + -sin(beta), cos(beta) + ); + + vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution; + + //Compute clip position + vec3 clipPosition = project(dataPosition); + + //Apply text offset in clip coordinates + clipPosition += vec3(viewOffset, 0.0); + + //Done + gl_Position = vec4(clipPosition, 1.0); +}`]),m=i([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 color; +void main() { + gl_FragColor = color; +}`]);c.text=function(v){return s(v,h,m,null,[{name:"position",type:"vec3"}])};var g=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec3 normal; + +uniform mat4 model, view, projection; +uniform vec3 enable; +uniform vec3 bounds[2]; + +varying vec3 colorChannel; + +void main() { + + vec3 signAxis = sign(bounds[1] - bounds[0]); + + vec3 realNormal = signAxis * normal; + + if(dot(realNormal, enable) > 0.0) { + vec3 minRange = min(bounds[0], bounds[1]); + vec3 maxRange = max(bounds[0], bounds[1]); + vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0)); + gl_Position = projection * view * model * vec4(nPosition, 1.0); + } else { + gl_Position = vec4(0,0,0,0); + } + + colorChannel = abs(realNormal); +}`]),p=i([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 colors[3]; + +varying vec3 colorChannel; + +void main() { + gl_FragColor = colorChannel.x * colors[0] + + colorChannel.y * colors[1] + + colorChannel.z * colors[2]; +}`]);c.bg=function(v){return s(v,g,p,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},{"gl-shader":132,glslify:231}],75:[function(a,l,c){(function(i){(function(){l.exports=function(x,w,k,b,T,_){var S=s(x),A=u(x,[{buffer:S,size:3}]),M=h(x);M.attributes.position.location=0;var E=new p(x,M,S,A);return E.update(w,k,b,T,_),E};var s=a("gl-buffer"),u=a("gl-vao"),d=a("vectorize-text"),h=a("./shaders").text,m=window||i.global||{},g=m.__TEXT_CACHE||{};m.__TEXT_CACHE={};function p(x,w,k,b){this.gl=x,this.shader=w,this.buffer=k,this.vao=b,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var v=p.prototype,y=[0,0];v.bind=function(x,w,k,b){this.vao.bind(),this.shader.bind();var T=this.shader.uniforms;T.model=x,T.view=w,T.projection=k,T.pixelScale=b,y[0]=this.gl.drawingBufferWidth,y[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=y},v.unbind=function(){this.vao.unbind()},v.update=function(x,w,k,b,T){var _=[];function S(L,P,N,B,G,W){var K=g[N];K||(K=g[N]={});var te=K[P];te||(te=K[P]=function(Q,ee){try{return d(Q,ee)}catch(ie){return console.warn('error vectorizing text:"'+Q+'" error:',ie),{cells:[],positions:[]}}}(P,{triangles:!0,font:N,textAlign:"center",textBaseline:"middle",lineSpacing:G,styletags:W}));for(var Y=(B||12)/12,Z=te.positions,re=te.cells,U=0,q=re.length;U=0;--ne){var H=Z[$[ne]];_.push(Y*H[0],-Y*H[1],L)}}for(var A=[0,0,0],M=[0,0,0],E=[0,0,0],D=[0,0,0],O={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},R=0;R<3;++R){E[R]=_.length/3|0,S(.5*(x[0][R]+x[1][R]),w[R],k[R],12,1.25,O),D[R]=(_.length/3|0)-E[R],A[R]=_.length/3|0;for(var z=0;z=0&&(m=d.length-h-1);var g=Math.pow(10,m),p=Math.round(s*u*g),v=p+"";if(v.indexOf("e")>=0)return v;var y=p/g,x=p%g;p<0?(y=0|-Math.ceil(y),x=0|-x):(y=0|Math.floor(y),x|=0);var w=""+y;if(p<0&&(w="-"+w),m){for(var k=""+x;k.length=s[0][h];--g)m.push({x:g*u[h],text:i(u[h],g)});d.push(m)}return d},c.equal=function(s,u){for(var d=0;d<3;++d){if(s[d].length!==u[d].length)return!1;for(var h=0;hx)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return v.bufferSubData(y,b,k),x}function p(v,y){for(var x=i.malloc(v.length,y),w=v.length,k=0;k=0;--A){if(_[A]!==S)return!1;S*=T[A]}return!0}(v.shape,v.stride))v.offset===0&&v.data.length===v.shape[0]?this.length=g(this.gl,this.type,this.length,this.usage,v.data,y):this.length=g(this.gl,this.type,this.length,this.usage,v.data.subarray(v.offset,v.shape[0]),y);else{var w=i.malloc(v.size,x),k=u(w,v.shape);s.assign(k,v),this.length=g(this.gl,this.type,this.length,this.usage,y<0?w:w.subarray(0,v.size),y),i.free(w)}}else if(Array.isArray(v)){var b;b=this.type===this.gl.ELEMENT_ARRAY_BUFFER?p(v,"uint16"):p(v,"float32"),this.length=g(this.gl,this.type,this.length,this.usage,y<0?b:b.subarray(0,v.length),y),i.free(b)}else if(typeof v=="object"&&typeof v.length=="number")this.length=g(this.gl,this.type,this.length,this.usage,v,y);else{if(typeof v!="number"&&v!==void 0)throw new Error("gl-buffer: Invalid data type");if(y>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");(v|=0)<=0&&(v=1),this.gl.bufferData(this.type,0|v,this.usage),this.length=v}},l.exports=function(v,y,x,w){if(x=x||v.ARRAY_BUFFER,w=w||v.DYNAMIC_DRAW,x!==v.ARRAY_BUFFER&&x!==v.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(w!==v.DYNAMIC_DRAW&&w!==v.STATIC_DRAW&&w!==v.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var k=v.createBuffer(),b=new h(v,x,k,0,w);return b.update(y),b}},{ndarray:259,"ndarray-ops":254,"typedarray-pool":308}],79:[function(a,l,c){var i=a("gl-vec3");l.exports=function(u,d){var h=u.positions,m=u.vectors,g={positions:[],vertexIntensity:[],vertexIntensityBounds:u.vertexIntensityBounds,vectors:[],cells:[],coneOffset:u.coneOffset,colormap:u.colormap};if(u.positions.length===0)return d&&(d[0]=[0,0,0],d[1]=[0,0,0]),g;for(var p=0,v=1/0,y=-1/0,x=1/0,w=-1/0,k=1/0,b=-1/0,T=null,_=null,S=[],A=1/0,M=!1,E=0;Ep&&(p=i.length(O)),E){var R=2*i.distance(T,D)/(i.length(_)+i.length(O));R?(A=Math.min(A,R),M=!1):M=!0}M||(T=D,_=O),S.push(O)}var z=[v,x,k],L=[y,w,b];d&&(d[0]=z,d[1]=L),p===0&&(p=1);var P=1/p;isFinite(A)||(A=1),g.vectorScale=A;var N=u.coneSize||.5;u.absoluteConeSize&&(N=u.absoluteConeSize*P),g.coneScale=N,E=0;for(var B=0;E=1},x.isTransparent=function(){return this.opacity<1},x.pickSlots=1,x.setPickBase=function(b){this.pickId=b},x.update=function(b){b=b||{};var T=this.gl;this.dirty=!0,"lightPosition"in b&&(this.lightPosition=b.lightPosition),"opacity"in b&&(this.opacity=b.opacity),"ambient"in b&&(this.ambientLight=b.ambient),"diffuse"in b&&(this.diffuseLight=b.diffuse),"specular"in b&&(this.specularLight=b.specular),"roughness"in b&&(this.roughness=b.roughness),"fresnel"in b&&(this.fresnel=b.fresnel),b.tubeScale!==void 0&&(this.tubeScale=b.tubeScale),b.vectorScale!==void 0&&(this.vectorScale=b.vectorScale),b.coneScale!==void 0&&(this.coneScale=b.coneScale),b.coneOffset!==void 0&&(this.coneOffset=b.coneOffset),b.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=T.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=T.LINEAR,this.texture.setPixels(function(ne){for(var H=p({colormap:ne,nshades:256,format:"rgba"}),Q=new Uint8Array(1024),ee=0;ee<256;++ee){for(var ie=H[ee],ae=0;ae<3;++ae)Q[4*ee+ae]=ie[ae];Q[4*ee+3]=255*ie[3]}return g(Q,[256,256,4],[4,0,1])}(b.colormap)),this.texture.generateMipmap());var _=b.cells,S=b.positions,A=b.vectors;if(S&&_&&A){var M=[],E=[],D=[],O=[],R=[];this.cells=_,this.positions=S,this.vectors=A;var z=b.meshColor||[1,1,1,1],L=b.vertexIntensity,P=1/0,N=-1/0;if(L)if(b.vertexIntensityBounds)P=+b.vertexIntensityBounds[0],N=+b.vertexIntensityBounds[1];else for(var B=0;B0){var P=this.triShader;P.bind(),P.uniforms=D,this.triangleVAO.bind(),T.drawArrays(T.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()}},x.drawPick=function(b){b=b||{};for(var T=this.gl,_=b.model||v,S=b.view||v,A=b.projection||v,M=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],E=0;E<3;++E)M[0][E]=Math.max(M[0][E],this.clipBounds[0][E]),M[1][E]=Math.min(M[1][E],this.clipBounds[1][E]);this._model=[].slice.call(_),this._view=[].slice.call(S),this._projection=[].slice.call(A),this._resolution=[T.drawingBufferWidth,T.drawingBufferHeight];var D={model:_,view:S,projection:A,clipBounds:M,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},O=this.pickShader;O.bind(),O.uniforms=D,this.triangleCount>0&&(this.triangleVAO.bind(),T.drawArrays(T.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind())},x.pick=function(b){if(!b||b.id!==this.pickId)return null;var T=b.value[0]+256*b.value[1]+65536*b.value[2],_=this.cells[T],S=this.positions[_[1]].slice(0,3),A={position:S,dataCoordinate:S,index:Math.floor(_[1]/48)};return this.traceType==="cone"?A.index=Math.floor(_[1]/48):this.traceType==="streamtube"&&(A.intensity=this.intensity[_[1]],A.velocity=this.vectors[_[1]].slice(0,3),A.divergence=this.vectors[_[1]][3],A.index=T),A},x.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()},l.exports=function(b,T,_){var S=_.shaders;arguments.length===1&&(b=(T=b).gl);var A=w(b,S),M=k(b,S),E=d(b,g(new Uint8Array([255,255,255,255]),[1,1,4]));E.generateMipmap(),E.minFilter=b.LINEAR_MIPMAP_LINEAR,E.magFilter=b.LINEAR;var D=s(b),O=s(b),R=s(b),z=s(b),L=s(b),P=u(b,[{buffer:D,type:b.FLOAT,size:4},{buffer:L,type:b.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:R,type:b.FLOAT,size:4},{buffer:z,type:b.FLOAT,size:2},{buffer:O,type:b.FLOAT,size:4}]),N=new y(b,E,A,M,D,O,L,R,z,P,_.traceType||"cone");return N.update(T),N}},{colormap:53,"gl-buffer":78,"gl-mat4/invert":98,"gl-mat4/multiply":100,"gl-shader":132,"gl-texture2d":146,"gl-vao":150,ndarray:259}],81:[function(a,l,c){var i=a("glslify"),s=i([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec3 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, coneScale, coneOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * conePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(conePosition, 1.0); + vec4 t_position = view * conePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = conePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=i([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),d=i([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float vectorScale, coneScale, coneOffset; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + gl_Position = projection * view * conePosition; + f_id = id; + f_position = position.xyz; +} +`]),h=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);c.meshShader={vertex:s,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},c.pickShader={vertex:d,fragment:h,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},{glslify:231}],82:[function(a,l,c){l.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},{}],83:[function(a,l,c){var i=a("./1.0/numbers");l.exports=function(s){return i[s]}},{"./1.0/numbers":82}],84:[function(a,l,c){l.exports=function(y){var x=y.gl,w=i(x),k=s(x,[{buffer:w,type:x.FLOAT,size:3,offset:0,stride:40},{buffer:w,type:x.FLOAT,size:4,offset:12,stride:40},{buffer:w,type:x.FLOAT,size:3,offset:28,stride:40}]),b=u(x);b.attributes.position.location=0,b.attributes.color.location=1,b.attributes.offset.location=2;var T=new h(x,w,k,b);return T.update(y),T};var i=a("gl-buffer"),s=a("gl-vao"),u=a("./shaders/index"),d=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function h(y,x,w,k){this.gl=y,this.shader=k,this.buffer=x,this.vao=w,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var m=h.prototype;function g(y,x){for(var w=0;w<3;++w)y[0][w]=Math.min(y[0][w],x[w]),y[1][w]=Math.max(y[1][w],x[w])}m.isOpaque=function(){return!this.hasAlpha},m.isTransparent=function(){return this.hasAlpha},m.drawTransparent=m.draw=function(y){var x=this.gl,w=this.shader.uniforms;this.shader.bind();var k=w.view=y.view||d,b=w.projection=y.projection||d;w.model=y.model||d,w.clipBounds=this.clipBounds,w.opacity=this.opacity;var T=k[12],_=k[13],S=k[14],A=k[15],M=(y._ortho?2:1)*this.pixelRatio*(b[3]*T+b[7]*_+b[11]*S+b[15]*A)/x.drawingBufferHeight;this.vao.bind();for(var E=0;E<3;++E)x.lineWidth(this.lineWidth[E]*this.pixelRatio),w.capSize=this.capSize[E]*M,this.lineCount[E]&&x.drawArrays(x.LINES,this.lineOffset[E],this.lineCount[E]);this.vao.unbind()};var p=function(){for(var y=new Array(3),x=0;x<3;++x){for(var w=[],k=1;k<=2;++k)for(var b=-1;b<=1;b+=2){var T=[0,0,0];T[(k+x)%3]=b,w.push(T)}y[x]=w}return y}();function v(y,x,w,k){for(var b=p[k],T=0;T0&&((R=M.slice())[S]+=D[1][S],b.push(M[0],M[1],M[2],O[0],O[1],O[2],O[3],0,0,0,R[0],R[1],R[2],O[0],O[1],O[2],O[3],0,0,0),g(this.bounds,R),_+=2+v(b,R,O,S))}}this.lineCount[S]=_-this.lineOffset[S]}this.buffer.update(b)}},m.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},{"./shaders/index":85,"gl-buffer":78,"gl-vao":150}],85:[function(a,l,c){var i=a("glslify"),s=a("gl-shader"),u=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, offset; +attribute vec4 color; +uniform mat4 model, view, projection; +uniform float capSize; +varying vec4 fragColor; +varying vec3 fragPosition; + +void main() { + vec4 worldPosition = model * vec4(position, 1.0); + worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0); + gl_Position = projection * view * worldPosition; + fragColor = color; + fragPosition = position; +}`]),d=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float opacity; +varying vec3 fragPosition; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], fragPosition) || + fragColor.a * opacity == 0. + ) discard; + + gl_FragColor = opacity * fragColor; +}`]);l.exports=function(h){return s(h,u,d,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},{"gl-shader":132,glslify:231}],86:[function(a,l,c){var i=a("gl-texture2d");l.exports=function(T,_,S,A){s||(s=T.FRAMEBUFFER_UNSUPPORTED,u=T.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,d=T.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,h=T.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);var M=T.getExtension("WEBGL_draw_buffers");if(!m&&M&&function(P,N){var B=P.getParameter(N.MAX_COLOR_ATTACHMENTS_WEBGL);m=new Array(B+1);for(var G=0;G<=B;++G){for(var W=new Array(B),K=0;KE||S<0||S>E)throw new Error("gl-fbo: Parameters are too large for FBO");var D=1;if("color"in(A=A||{})){if((D=Math.max(0|A.color,0))<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(D>1){if(!M)throw new Error("gl-fbo: Multiple draw buffer extension not supported");if(D>T.getParameter(M.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+D+" draw buffers")}}var O=T.UNSIGNED_BYTE,R=T.getExtension("OES_texture_float");if(A.float&&D>0){if(!R)throw new Error("gl-fbo: Context does not support floating point textures");O=T.FLOAT}else A.preferFloat&&D>0&&R&&(O=T.FLOAT);var z=!0;"depth"in A&&(z=!!A.depth);var L=!1;return"stencil"in A&&(L=!!A.stencil),new w(T,_,S,O,D,z,L,M)};var s,u,d,h,m=null;function g(T){return[T.getParameter(T.FRAMEBUFFER_BINDING),T.getParameter(T.RENDERBUFFER_BINDING),T.getParameter(T.TEXTURE_BINDING_2D)]}function p(T,_){T.bindFramebuffer(T.FRAMEBUFFER,_[0]),T.bindRenderbuffer(T.RENDERBUFFER,_[1]),T.bindTexture(T.TEXTURE_2D,_[2])}function v(T){switch(T){case s:throw new Error("gl-fbo: Framebuffer unsupported");case u:throw new Error("gl-fbo: Framebuffer incomplete attachment");case d:throw new Error("gl-fbo: Framebuffer incomplete dimensions");case h:throw new Error("gl-fbo: Framebuffer incomplete missing attachment");default:throw new Error("gl-fbo: Framebuffer failed for unspecified reason")}}function y(T,_,S,A,M,E){if(!A)return null;var D=i(T,_,S,M,A);return D.magFilter=T.NEAREST,D.minFilter=T.NEAREST,D.mipSamples=1,D.bind(),T.framebufferTexture2D(T.FRAMEBUFFER,E,T.TEXTURE_2D,D.handle,0),D}function x(T,_,S,A,M){var E=T.createRenderbuffer();return T.bindRenderbuffer(T.RENDERBUFFER,E),T.renderbufferStorage(T.RENDERBUFFER,A,_,S),T.framebufferRenderbuffer(T.FRAMEBUFFER,M,T.RENDERBUFFER,E),E}function w(T,_,S,A,M,E,D,O){this.gl=T,this._shape=[0|_,0|S],this._destroyed=!1,this._ext=O,this.color=new Array(M);for(var R=0;R1&&Y.drawBuffersWEBGL(m[te]);var $=B.getExtension("WEBGL_depth_texture");$?Z?P.depth=y(B,W,K,$.UNSIGNED_INT_24_8_WEBGL,B.DEPTH_STENCIL,B.DEPTH_STENCIL_ATTACHMENT):re&&(P.depth=y(B,W,K,B.UNSIGNED_SHORT,B.DEPTH_COMPONENT,B.DEPTH_ATTACHMENT)):re&&Z?P._depth_rb=x(B,W,K,B.DEPTH_STENCIL,B.DEPTH_STENCIL_ATTACHMENT):re?P._depth_rb=x(B,W,K,B.DEPTH_COMPONENT16,B.DEPTH_ATTACHMENT):Z&&(P._depth_rb=x(B,W,K,B.STENCIL_INDEX,B.STENCIL_ATTACHMENT));var ne=B.checkFramebufferStatus(B.FRAMEBUFFER);if(ne!==B.FRAMEBUFFER_COMPLETE){for(P._destroyed=!0,B.bindFramebuffer(B.FRAMEBUFFER,null),B.deleteFramebuffer(P.handle),P.handle=null,P.depth&&(P.depth.dispose(),P.depth=null),P._depth_rb&&(B.deleteRenderbuffer(P._depth_rb),P._depth_rb=null),q=0;qM||S<0||S>M)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");T._shape[0]=_,T._shape[1]=S;for(var E=g(A),D=0;D>8*z&255;this.pickOffset=k,T.bind();var L=T.uniforms;L.viewTransform=x,L.pickOffset=w,L.shape=this.shape;var P=T.attributes;return this.positionBuffer.bind(),P.position.pointer(),this.weightBuffer.bind(),P.weight.pointer(A.UNSIGNED_BYTE,!1),this.idBuffer.bind(),P.pickId.pointer(A.UNSIGNED_BYTE,!1),A.drawArrays(A.TRIANGLES,0,S),k+this.shape[0]*this.shape[1]}}}(),v.pick=function(x,w,k){var b=this.pickOffset,T=this.shape[0]*this.shape[1];if(k=b+T)return null;var _=k-b,S=this.xData,A=this.yData;return{object:this,pointId:_,dataCoord:[S[_%this.shape[0]],A[_/this.shape[0]|0]]}},v.update=function(x){var w=(x=x||{}).shape||[0,0],k=x.x||s(w[0]),b=x.y||s(w[1]),T=x.z||new Float32Array(w[0]*w[1]),_=x.zsmooth!==!1;this.xData=k,this.yData=b;var S,A,M,E,D=x.colorLevels||[0],O=x.colorValues||[0,0,0,1],R=D.length,z=this.bounds;_?(S=z[0]=k[0],A=z[1]=b[0],M=z[2]=k[k.length-1],E=z[3]=b[b.length-1]):(S=z[0]=k[0]+(k[1]-k[0])/2,A=z[1]=b[0]+(b[1]-b[0])/2,M=z[2]=k[k.length-1]+(k[k.length-1]-k[k.length-2])/2,E=z[3]=b[b.length-1]+(b[b.length-1]-b[b.length-2])/2);var L=1/(M-S),P=1/(E-A),N=w[0],B=w[1];this.shape=[N,B];var G=(_?(N-1)*(B-1):N*B)*(y.length>>>1);this.numVertices=G;for(var W=u.mallocUint8(4*G),K=u.mallocFloat32(2*G),te=u.mallocUint8(2*G),Y=u.mallocUint32(G),Z=0,re=_?N-1:N,U=_?B-1:B,q=0;q max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D dashTexture; +uniform float dashScale; +uniform float opacity; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], worldPosition) || + fragColor.a * opacity == 0. + ) discard; + + float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r; + if(dashWeight < 0.5) { + discard; + } + gl_FragColor = fragColor * opacity; +} +`]),h=i([`precision highp float; +#define GLSLIFY 1 + +#define FLOAT_MAX 1.70141184e38 +#define FLOAT_MIN 1.17549435e-38 + +// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl +vec4 packFloat(float v) { + float av = abs(v); + + //Handle special cases + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(127.0, 128.0, 0.0, 0.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(255.0, 128.0, 0.0, 0.0) / 255.0; + } + + vec4 c = vec4(0,0,0,0); + + //Compute exponent and mantissa + float e = floor(log2(av)); + float m = av * pow(2.0, -e) - 1.0; + + //Unpack mantissa + c[1] = floor(128.0 * m); + m -= c[1] / 128.0; + c[2] = floor(32768.0 * m); + m -= c[2] / 32768.0; + c[3] = floor(8388608.0 * m); + + //Unpack exponent + float ebias = e + 127.0; + c[0] = floor(ebias / 2.0); + ebias -= c[0] * 2.0; + c[1] += floor(ebias) * 128.0; + + //Unpack sign bit + c[0] += 128.0 * step(0.0, -v); + + //Scale back to range + return c / 255.0; +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform float pickId; +uniform vec3 clipBounds[2]; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard; + + gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz); +}`]),m=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];c.createShader=function(g){return s(g,u,d,null,m)},c.createPickShader=function(g){return s(g,u,h,null,m)}},{"gl-shader":132,glslify:231}],91:[function(a,l,c){l.exports=function(S){var A=S.gl||S.scene&&S.scene.gl,M=v(A);M.attributes.position.location=0,M.attributes.nextPosition.location=1,M.attributes.arcLength.location=2,M.attributes.lineWidth.location=3,M.attributes.color.location=4;var E=y(A);E.attributes.position.location=0,E.attributes.nextPosition.location=1,E.attributes.arcLength.location=2,E.attributes.lineWidth.location=3,E.attributes.color.location=4;for(var D=i(A),O=s(A,[{buffer:D,size:3,offset:0,stride:48},{buffer:D,size:3,offset:12,stride:48},{buffer:D,size:1,offset:24,stride:48},{buffer:D,size:1,offset:28,stride:48},{buffer:D,size:4,offset:32,stride:48}]),R=g(new Array(1024),[256,1,4]),z=0;z<1024;++z)R.data[z]=255;var L=u(A,R);L.wrap=A.REPEAT;var P=new T(A,M,E,D,O,L);return P.update(S),P};var i=a("gl-buffer"),s=a("gl-vao"),u=a("gl-texture2d"),d=new Uint8Array(4),h=new Float32Array(d.buffer),m=a("binary-search-bounds"),g=a("ndarray"),p=a("./lib/shaders"),v=p.createShader,y=p.createPickShader,x=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function w(S,A){for(var M=0,E=0;E<3;++E){var D=S[E]-A[E];M+=D*D}return Math.sqrt(M)}function k(S){for(var A=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],M=0;M<3;++M)A[0][M]=Math.max(S[0][M],A[0][M]),A[1][M]=Math.min(S[1][M],A[1][M]);return A}function b(S,A,M,E){this.arcLength=S,this.position=A,this.index=M,this.dataCoordinate=E}function T(S,A,M,E,D,O){this.gl=S,this.shader=A,this.pickShader=M,this.buffer=E,this.vao=D,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=O,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var _=T.prototype;_.isTransparent=function(){return this.hasAlpha},_.isOpaque=function(){return!this.hasAlpha},_.pickSlots=1,_.setPickBase=function(S){this.pickId=S},_.drawTransparent=_.draw=function(S){if(this.vertexCount){var A=this.gl,M=this.shader,E=this.vao;M.bind(),M.uniforms={model:S.model||x,view:S.view||x,projection:S.projection||x,clipBounds:k(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[A.drawingBufferWidth,A.drawingBufferHeight],pixelRatio:this.pixelRatio},E.bind(),E.draw(A.TRIANGLE_STRIP,this.vertexCount),E.unbind()}},_.drawPick=function(S){if(this.vertexCount){var A=this.gl,M=this.pickShader,E=this.vao;M.bind(),M.uniforms={model:S.model||x,view:S.view||x,projection:S.projection||x,pickId:this.pickId,clipBounds:k(this.clipBounds),screenShape:[A.drawingBufferWidth,A.drawingBufferHeight],pixelRatio:this.pixelRatio},E.bind(),E.draw(A.TRIANGLE_STRIP,this.vertexCount),E.unbind()}},_.update=function(S){var A,M;this.dirty=!0;var E=!!S.connectGaps;"dashScale"in S&&(this.dashScale=S.dashScale),this.hasAlpha=!1,"opacity"in S&&(this.opacity=+S.opacity,this.opacity<1&&(this.hasAlpha=!0));var D=[],O=[],R=[],z=0,L=0,P=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],N=S.position||S.positions;if(N){var B=S.color||S.colors||[0,0,0,1],G=S.lineWidth||1,W=!1;e:for(A=1;A0){for(var U=0;U<24;++U)D.push(D[D.length-12]);L+=2,W=!0}continue e}P[0][M]=Math.min(P[0][M],Z[M],re[M]),P[1][M]=Math.max(P[1][M],Z[M],re[M])}Array.isArray(B[0])?(K=B.length>A-1?B[A-1]:B.length>0?B[B.length-1]:[0,0,0,1],te=B.length>A?B[A]:B.length>0?B[B.length-1]:[0,0,0,1]):K=te=B,K.length===3&&(K=[K[0],K[1],K[2],1]),te.length===3&&(te=[te[0],te[1],te[2],1]),!this.hasAlpha&&K[3]<1&&(this.hasAlpha=!0),Y=Array.isArray(G)?G.length>A-1?G[A-1]:G.length>0?G[G.length-1]:[0,0,0,1]:G;var q=z;if(z+=w(Z,re),W){for(M=0;M<2;++M)D.push(Z[0],Z[1],Z[2],re[0],re[1],re[2],q,Y,K[0],K[1],K[2],K[3]);L+=2,W=!1}D.push(Z[0],Z[1],Z[2],re[0],re[1],re[2],q,Y,K[0],K[1],K[2],K[3],Z[0],Z[1],Z[2],re[0],re[1],re[2],q,-Y,K[0],K[1],K[2],K[3],re[0],re[1],re[2],Z[0],Z[1],Z[2],z,-Y,te[0],te[1],te[2],te[3],re[0],re[1],re[2],Z[0],Z[1],Z[2],z,Y,te[0],te[1],te[2],te[3]),L+=4}}if(this.buffer.update(D),O.push(z),R.push(N[N.length-1].slice()),this.bounds=P,this.vertexCount=L,this.points=R,this.arcLength=O,"dashes"in S){var $=S.dashes.slice();for($.unshift(0),A=1;A<$.length;++A)$[A]=$[A-1]+$[A];var ne=g(new Array(1024),[256,1,4]);for(A=0;A<256;++A){for(M=0;M<4;++M)ne.set(A,0,M,0);1&m.le($,$[$.length-1]*A/255)?ne.set(A,0,0,0):ne.set(A,0,0,255)}this.texture.setPixels(ne)}},_.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()},_.pick=function(S){if(!S||S.id!==this.pickId)return null;var A=function(N,B,G,W){return d[0]=W,d[1]=G,d[2]=B,d[3]=N,h[0]}(S.value[0],S.value[1],S.value[2],0),M=m.le(this.arcLength,A);if(M<0)return null;if(M===this.arcLength.length-1)return new b(this.arcLength[this.arcLength.length-1],this.points[this.points.length-1].slice(),M);for(var E=this.points[M],D=this.points[Math.min(M+1,this.points.length-1)],O=(A-this.arcLength[M])/(this.arcLength[M+1]-this.arcLength[M]),R=1-O,z=[0,0,0],L=0;L<3;++L)z[L]=R*E[L]+O*D[L];var P=Math.min(O<.5?M:M+1,this.points.length-1);return new b(A,z,P,this.points[P])}},{"./lib/shaders":90,"binary-search-bounds":31,"gl-buffer":78,"gl-texture2d":146,"gl-vao":150,ndarray:259}],92:[function(a,l,c){l.exports=function(i){var s=new Float32Array(16);return s[0]=i[0],s[1]=i[1],s[2]=i[2],s[3]=i[3],s[4]=i[4],s[5]=i[5],s[6]=i[6],s[7]=i[7],s[8]=i[8],s[9]=i[9],s[10]=i[10],s[11]=i[11],s[12]=i[12],s[13]=i[13],s[14]=i[14],s[15]=i[15],s}},{}],93:[function(a,l,c){l.exports=function(){var i=new Float32Array(16);return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}},{}],94:[function(a,l,c){l.exports=function(i){var s=i[0],u=i[1],d=i[2],h=i[3],m=i[4],g=i[5],p=i[6],v=i[7],y=i[8],x=i[9],w=i[10],k=i[11],b=i[12],T=i[13],_=i[14],S=i[15];return(s*g-u*m)*(w*S-k*_)-(s*p-d*m)*(x*S-k*T)+(s*v-h*m)*(x*_-w*T)+(u*p-d*g)*(y*S-k*b)-(u*v-h*g)*(y*_-w*b)+(d*v-h*p)*(y*T-x*b)}},{}],95:[function(a,l,c){l.exports=function(i,s){var u=s[0],d=s[1],h=s[2],m=s[3],g=u+u,p=d+d,v=h+h,y=u*g,x=d*g,w=d*p,k=h*g,b=h*p,T=h*v,_=m*g,S=m*p,A=m*v;return i[0]=1-w-T,i[1]=x+A,i[2]=k-S,i[3]=0,i[4]=x-A,i[5]=1-y-T,i[6]=b+_,i[7]=0,i[8]=k+S,i[9]=b-_,i[10]=1-y-w,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}},{}],96:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=s[3],p=d+d,v=h+h,y=m+m,x=d*p,w=d*v,k=d*y,b=h*v,T=h*y,_=m*y,S=g*p,A=g*v,M=g*y;return i[0]=1-(b+_),i[1]=w+M,i[2]=k-A,i[3]=0,i[4]=w-M,i[5]=1-(x+_),i[6]=T+S,i[7]=0,i[8]=k+A,i[9]=T-S,i[10]=1-(x+b),i[11]=0,i[12]=u[0],i[13]=u[1],i[14]=u[2],i[15]=1,i}},{}],97:[function(a,l,c){l.exports=function(i){return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}},{}],98:[function(a,l,c){l.exports=function(i,s){var u=s[0],d=s[1],h=s[2],m=s[3],g=s[4],p=s[5],v=s[6],y=s[7],x=s[8],w=s[9],k=s[10],b=s[11],T=s[12],_=s[13],S=s[14],A=s[15],M=u*p-d*g,E=u*v-h*g,D=u*y-m*g,O=d*v-h*p,R=d*y-m*p,z=h*y-m*v,L=x*_-w*T,P=x*S-k*T,N=x*A-b*T,B=w*S-k*_,G=w*A-b*_,W=k*A-b*S,K=M*W-E*G+D*B+O*N-R*P+z*L;return K?(K=1/K,i[0]=(p*W-v*G+y*B)*K,i[1]=(h*G-d*W-m*B)*K,i[2]=(_*z-S*R+A*O)*K,i[3]=(k*R-w*z-b*O)*K,i[4]=(v*N-g*W-y*P)*K,i[5]=(u*W-h*N+m*P)*K,i[6]=(S*D-T*z-A*E)*K,i[7]=(x*z-k*D+b*E)*K,i[8]=(g*G-p*N+y*L)*K,i[9]=(d*N-u*G-m*L)*K,i[10]=(T*R-_*D+A*M)*K,i[11]=(w*D-x*R-b*M)*K,i[12]=(p*P-g*B-v*L)*K,i[13]=(u*B-d*P+h*L)*K,i[14]=(_*E-T*O-S*M)*K,i[15]=(x*O-w*E+k*M)*K,i):null}},{}],99:[function(a,l,c){var i=a("./identity");l.exports=function(s,u,d,h){var m,g,p,v,y,x,w,k,b,T,_=u[0],S=u[1],A=u[2],M=h[0],E=h[1],D=h[2],O=d[0],R=d[1],z=d[2];return Math.abs(_-O)<1e-6&&Math.abs(S-R)<1e-6&&Math.abs(A-z)<1e-6?i(s):(w=_-O,k=S-R,b=A-z,T=1/Math.sqrt(w*w+k*k+b*b),m=E*(b*=T)-D*(k*=T),g=D*(w*=T)-M*b,p=M*k-E*w,(T=Math.sqrt(m*m+g*g+p*p))?(m*=T=1/T,g*=T,p*=T):(m=0,g=0,p=0),v=k*p-b*g,y=b*m-w*p,x=w*g-k*m,(T=Math.sqrt(v*v+y*y+x*x))?(v*=T=1/T,y*=T,x*=T):(v=0,y=0,x=0),s[0]=m,s[1]=v,s[2]=w,s[3]=0,s[4]=g,s[5]=y,s[6]=k,s[7]=0,s[8]=p,s[9]=x,s[10]=b,s[11]=0,s[12]=-(m*_+g*S+p*A),s[13]=-(v*_+y*S+x*A),s[14]=-(w*_+k*S+b*A),s[15]=1,s)}},{"./identity":97}],100:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=s[3],p=s[4],v=s[5],y=s[6],x=s[7],w=s[8],k=s[9],b=s[10],T=s[11],_=s[12],S=s[13],A=s[14],M=s[15],E=u[0],D=u[1],O=u[2],R=u[3];return i[0]=E*d+D*p+O*w+R*_,i[1]=E*h+D*v+O*k+R*S,i[2]=E*m+D*y+O*b+R*A,i[3]=E*g+D*x+O*T+R*M,E=u[4],D=u[5],O=u[6],R=u[7],i[4]=E*d+D*p+O*w+R*_,i[5]=E*h+D*v+O*k+R*S,i[6]=E*m+D*y+O*b+R*A,i[7]=E*g+D*x+O*T+R*M,E=u[8],D=u[9],O=u[10],R=u[11],i[8]=E*d+D*p+O*w+R*_,i[9]=E*h+D*v+O*k+R*S,i[10]=E*m+D*y+O*b+R*A,i[11]=E*g+D*x+O*T+R*M,E=u[12],D=u[13],O=u[14],R=u[15],i[12]=E*d+D*p+O*w+R*_,i[13]=E*h+D*v+O*k+R*S,i[14]=E*m+D*y+O*b+R*A,i[15]=E*g+D*x+O*T+R*M,i}},{}],101:[function(a,l,c){l.exports=function(i,s,u,d,h,m,g){var p=1/(s-u),v=1/(d-h),y=1/(m-g);return i[0]=-2*p,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=-2*v,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=2*y,i[11]=0,i[12]=(s+u)*p,i[13]=(h+d)*v,i[14]=(g+m)*y,i[15]=1,i}},{}],102:[function(a,l,c){l.exports=function(i,s,u,d,h){var m=1/Math.tan(s/2),g=1/(d-h);return i[0]=m/u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=m,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=(h+d)*g,i[11]=-1,i[12]=0,i[13]=0,i[14]=2*h*d*g,i[15]=0,i}},{}],103:[function(a,l,c){l.exports=function(i,s,u,d){var h,m,g,p,v,y,x,w,k,b,T,_,S,A,M,E,D,O,R,z,L,P,N,B,G=d[0],W=d[1],K=d[2],te=Math.sqrt(G*G+W*W+K*K);return Math.abs(te)<1e-6?null:(G*=te=1/te,W*=te,K*=te,h=Math.sin(u),m=Math.cos(u),g=1-m,p=s[0],v=s[1],y=s[2],x=s[3],w=s[4],k=s[5],b=s[6],T=s[7],_=s[8],S=s[9],A=s[10],M=s[11],E=G*G*g+m,D=W*G*g+K*h,O=K*G*g-W*h,R=G*W*g-K*h,z=W*W*g+m,L=K*W*g+G*h,P=G*K*g+W*h,N=W*K*g-G*h,B=K*K*g+m,i[0]=p*E+w*D+_*O,i[1]=v*E+k*D+S*O,i[2]=y*E+b*D+A*O,i[3]=x*E+T*D+M*O,i[4]=p*R+w*z+_*L,i[5]=v*R+k*z+S*L,i[6]=y*R+b*z+A*L,i[7]=x*R+T*z+M*L,i[8]=p*P+w*N+_*B,i[9]=v*P+k*N+S*B,i[10]=y*P+b*N+A*B,i[11]=x*P+T*N+M*B,s!==i&&(i[12]=s[12],i[13]=s[13],i[14]=s[14],i[15]=s[15]),i)}},{}],104:[function(a,l,c){l.exports=function(i,s,u){var d=Math.sin(u),h=Math.cos(u),m=s[4],g=s[5],p=s[6],v=s[7],y=s[8],x=s[9],w=s[10],k=s[11];return s!==i&&(i[0]=s[0],i[1]=s[1],i[2]=s[2],i[3]=s[3],i[12]=s[12],i[13]=s[13],i[14]=s[14],i[15]=s[15]),i[4]=m*h+y*d,i[5]=g*h+x*d,i[6]=p*h+w*d,i[7]=v*h+k*d,i[8]=y*h-m*d,i[9]=x*h-g*d,i[10]=w*h-p*d,i[11]=k*h-v*d,i}},{}],105:[function(a,l,c){l.exports=function(i,s,u){var d=Math.sin(u),h=Math.cos(u),m=s[0],g=s[1],p=s[2],v=s[3],y=s[8],x=s[9],w=s[10],k=s[11];return s!==i&&(i[4]=s[4],i[5]=s[5],i[6]=s[6],i[7]=s[7],i[12]=s[12],i[13]=s[13],i[14]=s[14],i[15]=s[15]),i[0]=m*h-y*d,i[1]=g*h-x*d,i[2]=p*h-w*d,i[3]=v*h-k*d,i[8]=m*d+y*h,i[9]=g*d+x*h,i[10]=p*d+w*h,i[11]=v*d+k*h,i}},{}],106:[function(a,l,c){l.exports=function(i,s,u){var d=Math.sin(u),h=Math.cos(u),m=s[0],g=s[1],p=s[2],v=s[3],y=s[4],x=s[5],w=s[6],k=s[7];return s!==i&&(i[8]=s[8],i[9]=s[9],i[10]=s[10],i[11]=s[11],i[12]=s[12],i[13]=s[13],i[14]=s[14],i[15]=s[15]),i[0]=m*h+y*d,i[1]=g*h+x*d,i[2]=p*h+w*d,i[3]=v*h+k*d,i[4]=y*h-m*d,i[5]=x*h-g*d,i[6]=w*h-p*d,i[7]=k*h-v*d,i}},{}],107:[function(a,l,c){l.exports=function(i,s,u){var d=u[0],h=u[1],m=u[2];return i[0]=s[0]*d,i[1]=s[1]*d,i[2]=s[2]*d,i[3]=s[3]*d,i[4]=s[4]*h,i[5]=s[5]*h,i[6]=s[6]*h,i[7]=s[7]*h,i[8]=s[8]*m,i[9]=s[9]*m,i[10]=s[10]*m,i[11]=s[11]*m,i[12]=s[12],i[13]=s[13],i[14]=s[14],i[15]=s[15],i}},{}],108:[function(a,l,c){l.exports=function(i,s,u){var d,h,m,g,p,v,y,x,w,k,b,T,_=u[0],S=u[1],A=u[2];return s===i?(i[12]=s[0]*_+s[4]*S+s[8]*A+s[12],i[13]=s[1]*_+s[5]*S+s[9]*A+s[13],i[14]=s[2]*_+s[6]*S+s[10]*A+s[14],i[15]=s[3]*_+s[7]*S+s[11]*A+s[15]):(d=s[0],h=s[1],m=s[2],g=s[3],p=s[4],v=s[5],y=s[6],x=s[7],w=s[8],k=s[9],b=s[10],T=s[11],i[0]=d,i[1]=h,i[2]=m,i[3]=g,i[4]=p,i[5]=v,i[6]=y,i[7]=x,i[8]=w,i[9]=k,i[10]=b,i[11]=T,i[12]=d*_+p*S+w*A+s[12],i[13]=h*_+v*S+k*A+s[13],i[14]=m*_+y*S+b*A+s[14],i[15]=g*_+x*S+T*A+s[15]),i}},{}],109:[function(a,l,c){l.exports=function(i,s){if(i===s){var u=s[1],d=s[2],h=s[3],m=s[6],g=s[7],p=s[11];i[1]=s[4],i[2]=s[8],i[3]=s[12],i[4]=u,i[6]=s[9],i[7]=s[13],i[8]=d,i[9]=m,i[11]=s[14],i[12]=h,i[13]=g,i[14]=p}else i[0]=s[0],i[1]=s[4],i[2]=s[8],i[3]=s[12],i[4]=s[1],i[5]=s[5],i[6]=s[9],i[7]=s[13],i[8]=s[2],i[9]=s[6],i[10]=s[10],i[11]=s[14],i[12]=s[3],i[13]=s[7],i[14]=s[11],i[15]=s[15];return i}},{}],110:[function(a,l,c){var i=a("barycentric"),s=a("polytope-closest-point/lib/closest_point_2d.js");function u(m,g){for(var p=[0,0,0,0],v=0;v<4;++v)for(var y=0;y<4;++y)p[y]+=m[4*v+y]*g[v];return p}function d(m,g,p,v,y){for(var x=u(v,u(p,u(g,[m[0],m[1],m[2],1]))),w=0;w<3;++w)x[w]/=x[3];return[.5*y[0]*(1+x[0]),.5*y[1]*(1-x[1])]}function h(m,g){for(var p=[0,0,0],v=0;v1.0001)return null;M+=A[k]}return Math.abs(M-1)>.001?null:[b,h(m,A),A]}},{barycentric:14,"polytope-closest-point/lib/closest_point_2d.js":270}],111:[function(a,l,c){var i=a("glslify"),s=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, normal; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model + , view + , projection + , inverseModel; +uniform vec3 eyePosition + , lightPosition; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +vec4 project(vec3 p) { + return projection * view * model * vec4(p, 1.0); +} + +void main() { + gl_Position = project(position); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * vec4(position , 1.0); + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + f_color = color; + f_data = position; + f_uv = uv; +} +`]),u=i([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness + , fresnel + , kambient + , kdiffuse + , kspecular; +uniform sampler2D texture; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (f_color.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], f_data) + ) discard; + + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d + + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * f_color.a; +} +`]),d=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model, view, projection; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); + f_color = color; + f_data = position; + f_uv = uv; +}`]),h=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard; + + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),m=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; +attribute float pointSize; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0); + } else { + gl_Position = projection * view * model * vec4(position, 1.0); + } + gl_PointSize = pointSize; + f_color = color; + f_uv = uv; +}`]),g=i([`precision highp float; +#define GLSLIFY 1 + +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5); + if(dot(pointR, pointR) > 0.25) { + discard; + } + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),p=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 id; + +uniform mat4 model, view, projection; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); + f_id = id; + f_position = position; +}`]),v=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]),y=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute float pointSize; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_Position = projection * view * model * vec4(position, 1.0); + gl_PointSize = pointSize; + } + f_id = id; + f_position = position; +}`]),x=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; + +uniform mat4 model, view, projection; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); +}`]),w=i([`precision highp float; +#define GLSLIFY 1 + +uniform vec3 contourColor; + +void main() { + gl_FragColor = vec4(contourColor, 1.0); +} +`]);c.meshShader={vertex:s,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},c.wireShader={vertex:d,fragment:h,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},c.pointShader={vertex:m,fragment:g,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},c.pickShader={vertex:p,fragment:v,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},c.pointPickShader={vertex:y,fragment:v,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},c.contourShader={vertex:x,fragment:w,attributes:[{name:"position",type:"vec3"}]}},{glslify:231}],112:[function(a,l,c){var i=a("gl-shader"),s=a("gl-buffer"),u=a("gl-vao"),d=a("gl-texture2d"),h=a("normals"),m=a("gl-mat4/multiply"),g=a("gl-mat4/invert"),p=a("ndarray"),v=a("colormap"),y=a("simplicial-complex-contour"),x=a("typedarray-pool"),w=a("./lib/shaders"),k=a("./lib/closest-point"),b=w.meshShader,T=w.wireShader,_=w.pointShader,S=w.pickShader,A=w.pointPickShader,M=w.contourShader,E=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function D(W,K,te,Y,Z,re,U,q,$,ne,H,Q,ee,ie,ae,ue,le,ge,fe,me,_e,we,Te,Oe,de,ye,Me){this.gl=W,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=K,this.dirty=!0,this.triShader=te,this.lineShader=Y,this.pointShader=Z,this.pickShader=re,this.pointPickShader=U,this.contourShader=q,this.trianglePositions=$,this.triangleColors=H,this.triangleNormals=ee,this.triangleUVs=Q,this.triangleIds=ne,this.triangleVAO=ie,this.triangleCount=0,this.lineWidth=1,this.edgePositions=ae,this.edgeColors=le,this.edgeUVs=ge,this.edgeIds=ue,this.edgeVAO=fe,this.edgeCount=0,this.pointPositions=me,this.pointColors=we,this.pointUVs=Te,this.pointSizes=Oe,this.pointIds=_e,this.pointVAO=de,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=ye,this.contourVAO=Me,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=E,this._view=E,this._projection=E,this._resolution=[1,1]}var O=D.prototype;function R(W,K){if(!K||!K.length)return 1;for(var te=0;teW&&te>0){var Y=(K[te][0]-W)/(K[te][0]-K[te-1][0]);return K[te][1]*(1-Y)+Y*K[te-1][1]}}return 1}function z(W){var K=i(W,b.vertex,b.fragment);return K.attributes.position.location=0,K.attributes.color.location=2,K.attributes.uv.location=3,K.attributes.normal.location=4,K}function L(W){var K=i(W,T.vertex,T.fragment);return K.attributes.position.location=0,K.attributes.color.location=2,K.attributes.uv.location=3,K}function P(W){var K=i(W,_.vertex,_.fragment);return K.attributes.position.location=0,K.attributes.color.location=2,K.attributes.uv.location=3,K.attributes.pointSize.location=4,K}function N(W){var K=i(W,S.vertex,S.fragment);return K.attributes.position.location=0,K.attributes.id.location=1,K}function B(W){var K=i(W,A.vertex,A.fragment);return K.attributes.position.location=0,K.attributes.id.location=1,K.attributes.pointSize.location=4,K}function G(W){var K=i(W,M.vertex,M.fragment);return K.attributes.position.location=0,K}O.isOpaque=function(){return!this.hasAlpha},O.isTransparent=function(){return this.hasAlpha},O.pickSlots=1,O.setPickBase=function(W){this.pickId=W},O.highlight=function(W){if(W&&this.contourEnable){for(var K=y(this.cells,this.intensity,W.intensity),te=K.cells,Y=K.vertexIds,Z=K.vertexWeights,re=te.length,U=x.mallocFloat32(6*re),q=0,$=0;$0&&((ne=this.triShader).bind(),ne.uniforms=q,this.triangleVAO.bind(),K.drawArrays(K.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&this.lineWidth>0&&((ne=this.lineShader).bind(),ne.uniforms=q,this.edgeVAO.bind(),K.lineWidth(this.lineWidth*this.pixelRatio),K.drawArrays(K.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((ne=this.pointShader).bind(),ne.uniforms=q,this.pointVAO.bind(),K.drawArrays(K.POINTS,0,this.pointCount),this.pointVAO.unbind()),this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((ne=this.contourShader).bind(),ne.uniforms=q,this.contourVAO.bind(),K.drawArrays(K.LINES,0,this.contourCount),this.contourVAO.unbind())},O.drawPick=function(W){W=W||{};for(var K=this.gl,te=W.model||E,Y=W.view||E,Z=W.projection||E,re=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],U=0;U<3;++U)re[0][U]=Math.max(re[0][U],this.clipBounds[0][U]),re[1][U]=Math.min(re[1][U],this.clipBounds[1][U]);this._model=[].slice.call(te),this._view=[].slice.call(Y),this._projection=[].slice.call(Z),this._resolution=[K.drawingBufferWidth,K.drawingBufferHeight];var q,$={model:te,view:Y,projection:Z,clipBounds:re,pickId:this.pickId/255};(q=this.pickShader).bind(),q.uniforms=$,this.triangleCount>0&&(this.triangleVAO.bind(),K.drawArrays(K.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),K.lineWidth(this.lineWidth*this.pixelRatio),K.drawArrays(K.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((q=this.pointPickShader).bind(),q.uniforms=$,this.pointVAO.bind(),K.drawArrays(K.POINTS,0,this.pointCount),this.pointVAO.unbind())},O.pick=function(W){if(!W||W.id!==this.pickId)return null;for(var K=W.value[0]+256*W.value[1]+65536*W.value[2],te=this.cells[K],Y=this.positions,Z=new Array(te.length),re=0;reA[Z]&&(_.uniforms.dataAxis=g,_.uniforms.screenOffset=p,_.uniforms.color=P[b],_.uniforms.angle=N[b],M.drawArrays(M.TRIANGLES,A[Z],A[re]-A[Z]))),B[b]&&Y&&(p[1^b]-=U*R*G[b],_.uniforms.dataAxis=v,_.uniforms.screenOffset=p,_.uniforms.color=W[b],_.uniforms.angle=K[b],M.drawArrays(M.TRIANGLES,te,Y)),p[1^b]=U*E[2+(1^b)]-1,z[b+2]&&(p[1^b]+=U*R*L[b+2],ZA[Z]&&(_.uniforms.dataAxis=g,_.uniforms.screenOffset=p,_.uniforms.color=P[b+2],_.uniforms.angle=N[b+2],M.drawArrays(M.TRIANGLES,A[Z],A[re]-A[Z]))),B[b+2]&&Y&&(p[1^b]+=U*R*G[b+2],_.uniforms.dataAxis=v,_.uniforms.screenOffset=p,_.uniforms.color=W[b+2],_.uniforms.angle=K[b+2],M.drawArrays(M.TRIANGLES,te,Y))}),k.drawTitle=function(){var b=[0,0],T=[0,0];return function(){var _=this.plot,S=this.shader,A=_.gl,M=_.screenBox,E=_.titleCenter,D=_.titleAngle,O=_.titleColor,R=_.pixelRatio;if(this.titleCount){for(var z=0;z<2;++z)T[z]=2*(E[z]*R-M[z])/(M[2+z]-M[z])-1;S.bind(),S.uniforms.dataAxis=b,S.uniforms.screenOffset=T,S.uniforms.angle=D,S.uniforms.color=O,A.drawArrays(A.TRIANGLES,this.titleOffset,this.titleCount)}}}(),k.bind=(y=[0,0],x=[0,0],w=[0,0],function(){var b=this.plot,T=this.shader,_=b._tickBounds,S=b.dataBox,A=b.screenBox,M=b.viewBox;T.bind();for(var E=0;E<2;++E){var D=_[E],O=_[E+2]-D,R=.5*(S[E+2]+S[E]),z=S[E+2]-S[E],L=M[E],P=M[E+2]-L,N=A[E],B=A[E+2]-N;x[E]=2*O/z*P/B,y[E]=2*(D-R)/z*P/B}w[1]=2*b.pixelRatio/(A[3]-A[1]),w[0]=w[1]*(A[3]-A[1])/(A[2]-A[0]),T.uniforms.dataScale=x,T.uniforms.dataShift=y,T.uniforms.textScale=w,this.vbo.bind(),T.attributes.textCoordinate.pointer()}),k.update=function(b){var T,_,S,A,M,E=[],D=b.ticks,O=b.bounds;for(M=0;M<2;++M){var R=[Math.floor(E.length/3)],z=[-1/0],L=D[M];for(T=0;T=0){var L=x[z]-k[z]*(x[z+2]-x[z])/(k[z+2]-k[z]);z===0?_.drawLine(L,x[1],L,x[3],R[z],O[z]):_.drawLine(x[0],L,x[2],L,R[z],O[z])}}for(z=0;z=0;--y)this.objects[y].dispose();for(this.objects.length=0,y=this.overlays.length-1;y>=0;--y)this.overlays[y].dispose();this.overlays.length=0,this.gl=null},g.addObject=function(y){this.objects.indexOf(y)<0&&(this.objects.push(y),this.setDirty())},g.removeObject=function(y){for(var x=this.objects,w=0;wMath.abs(A))y.rotate(D,0,0,-S*M*Math.PI*T.rotateSpeed/window.innerWidth);else if(!T._ortho){var O=-T.zoomSpeed*E*A/window.innerHeight*(D-y.lastT())/20;y.pan(D,0,0,w*(Math.exp(O)-1))}}},!0)},T.enableMouseListeners(),T};var i=a("right-now"),s=a("3d-view"),u=a("mouse-change"),d=a("mouse-wheel"),h=a("mouse-event-offset"),m=a("has-passive-events")},{"3d-view":7,"has-passive-events":232,"mouse-change":247,"mouse-event-offset":248,"mouse-wheel":250,"right-now":278}],120:[function(a,l,c){var i=a("glslify"),s=a("gl-shader"),u=i([`precision mediump float; +#define GLSLIFY 1 +attribute vec2 position; +varying vec2 uv; +void main() { + uv = position; + gl_Position = vec4(position, 0, 1); +}`]),d=i([`precision mediump float; +#define GLSLIFY 1 + +uniform sampler2D accumBuffer; +varying vec2 uv; + +void main() { + vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); + gl_FragColor = min(vec4(1,1,1,1), accum); +}`]);l.exports=function(h){return s(h,u,d,null,[{name:"position",type:"vec2"}])}},{"gl-shader":132,glslify:231}],121:[function(a,l,c){var i=a("./camera.js"),s=a("gl-axes3d"),u=a("gl-axes3d/properties"),d=a("gl-spikes3d"),h=a("gl-select-static"),m=a("gl-fbo"),g=a("a-big-triangle"),p=a("mouse-change"),v=a("gl-mat4/perspective"),y=a("gl-mat4/ortho"),x=a("./lib/shader"),w=a("is-mobile")({tablet:!0,featureDetect:!0});function k(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function b(_){var S=Math.round(Math.log(Math.abs(_))/Math.log(10));if(S<0){var A=Math.round(Math.pow(10,-S));return Math.ceil(_*A)/A}return S>0?(A=Math.round(Math.pow(10,S)),Math.ceil(_/A)*A):Math.ceil(_)}function T(_){return typeof _!="boolean"||_}l.exports={createScene:function(_){(_=_||{}).camera=_.camera||{};var S=_.canvas;S||(S=document.createElement("canvas"),_.container?_.container.appendChild(S):document.body.appendChild(S));var A=_.gl;if(A||(_.glOptions&&(w=!!_.glOptions.preserveDrawingBuffer),A=function(fe,me){var _e=null;try{(_e=fe.getContext("webgl",me))||(_e=fe.getContext("experimental-webgl",me))}catch{return null}return _e}(S,_.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:w})),!A)throw new Error("webgl not supported");var M=_.bounds||[[-10,-10,-10],[10,10,10]],E=new k,D=m(A,A.drawingBufferWidth,A.drawingBufferHeight,{preferFloat:!w}),O=x(A),R=_.cameraObject&&_.cameraObject._ortho===!0||_.camera.projection&&_.camera.projection.type==="orthographic"||!1,z={eye:_.camera.eye||[2,0,0],center:_.camera.center||[0,0,0],up:_.camera.up||[0,1,0],zoomMin:_.camera.zoomMax||.1,zoomMax:_.camera.zoomMin||100,mode:_.camera.mode||"turntable",_ortho:R},L=_.axes||{},P=s(A,L);P.enable=!L.disable;var N=_.spikes||{},B=d(A,N),G=[],W=[],K=[],te=[],Y=!0,Z=!0,re=new Array(16),U=new Array(16),q={view:null,projection:re,model:U,_ortho:!1},$=(Z=!0,[A.drawingBufferWidth,A.drawingBufferHeight]),ne=_.cameraObject||i(S,z),H={gl:A,contextLost:!1,pixelRatio:_.pixelRatio||1,canvas:S,selection:E,camera:ne,axes:P,axesPixels:null,spikes:B,bounds:M,objects:G,shape:$,aspect:_.aspectRatio||[1,1,1],pickRadius:_.pickRadius||10,zNear:_.zNear||.01,zFar:_.zFar||1e3,fovy:_.fovy||Math.PI/4,clearColor:_.clearColor||[0,0,0,0],autoResize:T(_.autoResize),autoBounds:T(_.autoBounds),autoScale:!!_.autoScale,autoCenter:T(_.autoCenter),clipToBounds:T(_.clipToBounds),snapToData:!!_.snapToData,onselect:_.onselect||null,onrender:_.onrender||null,onclick:_.onclick||null,cameraParams:q,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(fe){this.aspect[0]=fe.x,this.aspect[1]=fe.y,this.aspect[2]=fe.z,Z=!0},setBounds:function(fe,me){this.bounds[0][fe]=me.min,this.bounds[1][fe]=me.max},setClearColor:function(fe){this.clearColor=fe},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},Q=[A.drawingBufferWidth/H.pixelRatio|0,A.drawingBufferHeight/H.pixelRatio|0];function ee(){if(!H._stopped&&H.autoResize){var fe=S.parentNode,me=1,_e=1;fe&&fe!==document.body?(me=fe.clientWidth,_e=fe.clientHeight):(me=window.innerWidth,_e=window.innerHeight);var we=0|Math.ceil(me*H.pixelRatio),Te=0|Math.ceil(_e*H.pixelRatio);if(we!==S.width||Te!==S.height){S.width=we,S.height=Te;var Oe=S.style;Oe.position=Oe.position||"absolute",Oe.left="0px",Oe.top="0px",Oe.width=me+"px",Oe.height=_e+"px",Y=!0}}}H.autoResize&&ee();function ie(){for(var fe=G.length,me=te.length,_e=0;_e0&&K[me-1]===0;)K.pop(),te.pop().dispose()}function ae(){if(H.contextLost)return!0;A.isContextLost()&&(H.contextLost=!0,H.mouseListener.enabled=!1,H.selection.object=null,H.oncontextloss&&H.oncontextloss())}window.addEventListener("resize",ee),H.update=function(fe){H._stopped||(Y=!0,Z=!0)},H.add=function(fe){H._stopped||(fe.axes=P,G.push(fe),W.push(-1),Y=!0,Z=!0,ie())},H.remove=function(fe){if(!H._stopped){var me=G.indexOf(fe);me<0||(G.splice(me,1),W.pop(),Y=!0,Z=!0,ie())}},H.dispose=function(){if(!H._stopped&&(H._stopped=!0,window.removeEventListener("resize",ee),S.removeEventListener("webglcontextlost",ae),H.mouseListener.enabled=!1,!H.contextLost)){P.dispose(),B.dispose();for(var fe=0;feE.distance)continue;for(var ke=0;ke 1.0) { + discard; + } + baseColor = mix(borderColor, color, step(radius, centerFraction)); + gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a); + } +} +`]),c.pickVertex=i([`precision mediump float; +#define GLSLIFY 1 + +attribute vec2 position; +attribute vec4 pickId; + +uniform mat3 matrix; +uniform float pointSize; +uniform vec4 pickOffset; + +varying vec4 fragId; + +void main() { + vec3 hgPosition = matrix * vec3(position, 1); + gl_Position = vec4(hgPosition.xy, 0, hgPosition.z); + gl_PointSize = pointSize; + + vec4 id = pickId + pickOffset; + id.y += floor(id.x / 256.0); + id.x -= floor(id.x / 256.0) * 256.0; + + id.z += floor(id.y / 256.0); + id.y -= floor(id.y / 256.0) * 256.0; + + id.w += floor(id.z / 256.0); + id.z -= floor(id.z / 256.0) * 256.0; + + fragId = id; +} +`]),c.pickFragment=i([`precision mediump float; +#define GLSLIFY 1 + +varying vec4 fragId; + +void main() { + float radius = length(2.0 * gl_PointCoord.xy - 1.0); + if(radius > 1.0) { + discard; + } + gl_FragColor = fragId / 255.0; +} +`])},{glslify:231}],123:[function(a,l,c){var i=a("gl-shader"),s=a("gl-buffer"),u=a("typedarray-pool"),d=a("./lib/shader");function h(v,y,x,w,k){this.plot=v,this.offsetBuffer=y,this.pickBuffer=x,this.shader=w,this.pickShader=k,this.sizeMin=.5,this.sizeMinCap=2,this.sizeMax=20,this.areaRatio=1,this.pointCount=0,this.color=[1,0,0,1],this.borderColor=[0,0,0,1],this.blend=!1,this.pickOffset=0,this.points=null}l.exports=function(v,y){var x=v.gl,w=s(x),k=s(x),b=i(x,d.pointVertex,d.pointFragment),T=i(x,d.pickVertex,d.pickFragment),_=new h(v,w,k,b,T);return _.update(y),v.addObject(_),_};var m,g,p=h.prototype;p.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.offsetBuffer.dispose(),this.pickBuffer.dispose(),this.plot.removeObject(this)},p.update=function(v){var y;function x(A,M){return A in v?v[A]:M}v=v||{},this.sizeMin=x("sizeMin",.5),this.sizeMax=x("sizeMax",20),this.color=x("color",[1,0,0,1]).slice(),this.areaRatio=x("areaRatio",1),this.borderColor=x("borderColor",[0,0,0,1]).slice(),this.blend=x("blend",!1);var w=v.positions.length>>>1,k=v.positions instanceof Float32Array,b=v.idToIndex instanceof Int32Array&&v.idToIndex.length>=w,T=v.positions,_=k?T:u.mallocFloat32(T.length),S=b?v.idToIndex:u.mallocInt32(w);if(k||_.set(T),!b)for(_.set(T),y=0;y>>1;for(O=0;O=D[0]&&L<=D[2]&&P>=D[1]&&P<=D[3]&&R++}return R}(this.points,k),S=this.plot.pickPixelRatio*Math.max(Math.min(this.sizeMinCap,this.sizeMin),Math.min(this.sizeMax,this.sizeMax/Math.pow(_,.33333)));m[0]=2/b,m[4]=2/T,m[6]=-2*k[0]/b-1,m[7]=-2*k[1]/T-1,this.offsetBuffer.bind(),x.bind(),x.attributes.position.pointer(),x.uniforms.matrix=m,x.uniforms.color=this.color,x.uniforms.borderColor=this.borderColor,x.uniforms.pointCloud=S<5,x.uniforms.pointSize=S,x.uniforms.centerFraction=Math.min(1,Math.max(0,Math.sqrt(1-this.areaRatio))),y&&(g[0]=255&v,g[1]=v>>8&255,g[2]=v>>16&255,g[3]=v>>24&255,this.pickBuffer.bind(),x.attributes.pickId.pointer(w.UNSIGNED_BYTE),x.uniforms.pickOffset=g,this.pickOffset=v);var A=w.getParameter(w.BLEND),M=w.getParameter(w.DITHER);return A&&!this.blend&&w.disable(w.BLEND),M&&w.disable(w.DITHER),w.drawArrays(w.POINTS,0,this.pointCount),A&&!this.blend&&w.enable(w.BLEND),M&&w.enable(w.DITHER),v+this.pointCount}),p.draw=p.unifiedDraw,p.drawPick=p.unifiedDraw,p.pick=function(v,y,x){var w=this.pickOffset,k=this.pointCount;if(x=w+k)return null;var b=x-w,T=this.points;return{object:this,pointId:b,dataCoord:[T[2*b],T[2*b+1]]}}},{"./lib/shader":122,"gl-buffer":78,"gl-shader":132,"typedarray-pool":308}],124:[function(a,l,c){l.exports=function(i,s,u,d){var h,m,g,p,v,y=s[0],x=s[1],w=s[2],k=s[3],b=u[0],T=u[1],_=u[2],S=u[3];return(m=y*b+x*T+w*_+k*S)<0&&(m=-m,b=-b,T=-T,_=-_,S=-S),1-m>1e-6?(h=Math.acos(m),g=Math.sin(h),p=Math.sin((1-d)*h)/g,v=Math.sin(d*h)/g):(p=1-d,v=d),i[0]=p*y+v*b,i[1]=p*x+v*T,i[2]=p*w+v*_,i[3]=p*k+v*S,i}},{}],125:[function(a,l,c){l.exports=function(i){return i||i===0?i.toString():""}},{}],126:[function(a,l,c){var i=a("vectorize-text");l.exports=function(u,d,h){var m=s[d];if(m||(m=s[d]={}),u in m)return m[u];var g={textAlign:"center",textBaseline:"middle",lineHeight:1,font:d,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},triangles:!0},p=i(u,g);g.triangles=!1;var v,y,x=i(u,g);if(h&&h!==1){for(v=0;v max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform vec4 highlightId; +uniform float highlightScale; +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = 1.0; + if(distance(highlightId, id) < 0.0001) { + scale = highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1); + vec4 viewPosition = view * worldPosition; + viewPosition = viewPosition / viewPosition.w; + vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0)); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),d=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float highlightScale, pixelRatio; +uniform vec4 highlightId; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = pixelRatio; + if(distance(highlightId.bgr, id.bgr) < 0.001) { + scale *= highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1.0); + vec4 viewPosition = view * worldPosition; + vec4 clipPosition = projection * viewPosition; + clipPosition /= clipPosition.w; + + gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0); + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),h=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform float highlightScale; +uniform vec4 highlightId; +uniform vec3 axes[2]; +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float scale, pixelRatio; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float lscale = pixelRatio * scale; + if(distance(highlightId, id) < 0.0001) { + lscale *= highlightScale; + } + + vec4 clipCenter = projection * view * model * vec4(position, 1); + vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y; + vec4 clipPosition = projection * view * model * vec4(dataPosition, 1); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = dataPosition; + } +} +`]),m=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float opacity; + +varying vec4 interpColor; +varying vec3 dataCoordinate; + +void main() { + if ( + outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) || + interpColor.a * opacity == 0. + ) discard; + gl_FragColor = interpColor * opacity; +} +`]),g=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float pickGroup; + +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard; + + gl_FragColor = vec4(pickGroup, pickId.bgr); +}`]),p=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],v={vertex:u,fragment:m,attributes:p},y={vertex:d,fragment:m,attributes:p},x={vertex:h,fragment:m,attributes:p},w={vertex:u,fragment:g,attributes:p},k={vertex:d,fragment:g,attributes:p},b={vertex:h,fragment:g,attributes:p};function T(_,S){var A=i(_,S),M=A.attributes;return M.position.location=0,M.color.location=1,M.glyph.location=2,M.id.location=3,A}c.createPerspective=function(_){return T(_,v)},c.createOrtho=function(_){return T(_,y)},c.createProject=function(_){return T(_,x)},c.createPickPerspective=function(_){return T(_,w)},c.createPickOrtho=function(_){return T(_,k)},c.createPickProject=function(_){return T(_,b)}},{"gl-shader":132,glslify:231}],128:[function(a,l,c){var i=a("is-string-blank"),s=a("gl-buffer"),u=a("gl-vao"),d=a("typedarray-pool"),h=a("gl-mat4/multiply"),m=a("./lib/shaders"),g=a("./lib/glyphs"),p=a("./lib/get-simple-string"),v=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function y(K,te){var Y=K[0],Z=K[1],re=K[2],U=K[3];return K[0]=te[0]*Y+te[4]*Z+te[8]*re+te[12]*U,K[1]=te[1]*Y+te[5]*Z+te[9]*re+te[13]*U,K[2]=te[2]*Y+te[6]*Z+te[10]*re+te[14]*U,K[3]=te[3]*Y+te[7]*Z+te[11]*re+te[15]*U,K}function x(K,te,Y,Z){return y(Z,Z),y(Z,Z),y(Z,Z)}function w(K,te){this.index=K,this.dataCoordinate=this.position=te}function k(K){return K===!0||K>1?1:K}function b(K,te,Y,Z,re,U,q,$,ne,H,Q,ee){this.gl=K,this.pixelRatio=1,this.shader=te,this.orthoShader=Y,this.projectShader=Z,this.pointBuffer=re,this.colorBuffer=U,this.glyphBuffer=q,this.idBuffer=$,this.vao=ne,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[2/3,2/3,2/3],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=H,this.pickOrthoShader=Q,this.pickProjectShader=ee,this.points=[],this._selectResult=new w(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}l.exports=function(K){var te=K.gl,Y=m.createPerspective(te),Z=m.createOrtho(te),re=m.createProject(te),U=m.createPickPerspective(te),q=m.createPickOrtho(te),$=m.createPickProject(te),ne=s(te),H=s(te),Q=s(te),ee=s(te),ie=u(te,[{buffer:ne,size:3,type:te.FLOAT},{buffer:H,size:4,type:te.FLOAT},{buffer:Q,size:2,type:te.FLOAT},{buffer:ee,size:4,type:te.UNSIGNED_BYTE,normalized:!0}]),ae=new b(te,Y,Z,re,ne,H,Q,ee,ie,U,q,$);return ae.update(K),ae};var T=b.prototype;T.pickSlots=1,T.setPickBase=function(K){this.pickId=K},T.isTransparent=function(){if(this.hasAlpha)return!0;for(var K=0;K<3;++K)if(this.axesProject[K]&&this.projectHasAlpha)return!0;return!1},T.isOpaque=function(){if(!this.hasAlpha)return!0;for(var K=0;K<3;++K)if(this.axesProject[K]&&!this.projectHasAlpha)return!0;return!1};var _=[0,0],S=[0,0,0],A=[0,0,0],M=[0,0,0,1],E=[0,0,0,1],D=v.slice(),O=[0,0,0],R=[[0,0,0],[0,0,0]];function z(K){return K[0]=K[1]=K[2]=0,K}function L(K,te){return K[0]=te[0],K[1]=te[1],K[2]=te[2],K[3]=1,K}function P(K,te,Y,Z){return K[0]=te[0],K[1]=te[1],K[2]=te[2],K[Y]=Z,K}function N(K,te,Y,Z){var re,U=te.axesProject,q=te.gl,$=K.uniforms,ne=Y.model||v,H=Y.view||v,Q=Y.projection||v,ee=te.axesBounds,ie=function(ke){for(var Ee=R,ze=0;ze<2;++ze)for(var Fe=0;Fe<3;++Fe)Ee[ze][Fe]=Math.max(Math.min(ke[ze][Fe],1e8),-1e8);return Ee}(te.clipBounds);re=te.axes&&te.axes.lastCubeProps?te.axes.lastCubeProps.axis:[1,1,1],_[0]=2/q.drawingBufferWidth,_[1]=2/q.drawingBufferHeight,K.bind(),$.view=H,$.projection=Q,$.screenSize=_,$.highlightId=te.highlightId,$.highlightScale=te.highlightScale,$.clipBounds=ie,$.pickGroup=te.pickId/255,$.pixelRatio=Z;for(var ae=0;ae<3;++ae)if(U[ae]){$.scale=te.projectScale[ae],$.opacity=te.projectOpacity[ae];for(var ue=D,le=0;le<16;++le)ue[le]=0;for(le=0;le<4;++le)ue[5*le]=1;ue[5*ae]=0,re[ae]<0?ue[12+ae]=ee[0][ae]:ue[12+ae]=ee[1][ae],h(ue,ne,ue),$.model=ue;var ge=(ae+1)%3,fe=(ae+2)%3,me=z(S),_e=z(A);me[ge]=1,_e[fe]=1;var we=x(0,0,0,L(M,me)),Te=x(0,0,0,L(E,_e));if(Math.abs(we[1])>Math.abs(Te[1])){var Oe=we;we=Te,Te=Oe,Oe=me,me=_e,_e=Oe;var de=ge;ge=fe,fe=de}we[0]<0&&(me[ge]=-1),Te[1]>0&&(_e[fe]=-1);var ye=0,Me=0;for(le=0;le<4;++le)ye+=Math.pow(ne[4*ge+le],2),Me+=Math.pow(ne[4*fe+le],2);me[ge]/=Math.sqrt(ye),_e[fe]/=Math.sqrt(Me),$.axes[0]=me,$.axes[1]=_e,$.fragClipBounds[0]=P(O,ie[0],ae,-1e8),$.fragClipBounds[1]=P(O,ie[1],ae,1e8),te.vao.bind(),te.vao.draw(q.TRIANGLES,te.vertexCount),te.lineWidth>0&&(q.lineWidth(te.lineWidth*Z),te.vao.draw(q.LINES,te.lineVertexCount,te.vertexCount)),te.vao.unbind()}}var B=[[-1e8,-1e8,-1e8],[1e8,1e8,1e8]];function G(K,te,Y,Z,re,U,q){var $=Y.gl;if((U===Y.projectHasAlpha||q)&&N(te,Y,Z,re),U===Y.hasAlpha||q){K.bind();var ne=K.uniforms;ne.model=Z.model||v,ne.view=Z.view||v,ne.projection=Z.projection||v,_[0]=2/$.drawingBufferWidth,_[1]=2/$.drawingBufferHeight,ne.screenSize=_,ne.highlightId=Y.highlightId,ne.highlightScale=Y.highlightScale,ne.fragClipBounds=B,ne.clipBounds=Y.axes.bounds,ne.opacity=Y.opacity,ne.pickGroup=Y.pickId/255,ne.pixelRatio=re,Y.vao.bind(),Y.vao.draw($.TRIANGLES,Y.vertexCount),Y.lineWidth>0&&($.lineWidth(Y.lineWidth*re),Y.vao.draw($.LINES,Y.lineVertexCount,Y.vertexCount)),Y.vao.unbind()}}function W(K,te,Y,Z){var re;re=Array.isArray(K)?te=this.pointCount||te<0)return null;var Y=this.points[te],Z=this._selectResult;Z.index=te;for(var re=0;re<3;++re)Z.position[re]=Z.dataCoordinate[re]=Y[re];return Z},T.highlight=function(K){if(K){var te=K.index,Y=255&te,Z=te>>8&255,re=te>>16&255;this.highlightId=[Y/255,Z/255,re/255,0]}else this.highlightId=[1,1,1,1]},T.update=function(K){if("perspective"in(K=K||{})&&(this.useOrtho=!K.perspective),"orthographic"in K&&(this.useOrtho=!!K.orthographic),"lineWidth"in K&&(this.lineWidth=K.lineWidth),"project"in K)if(Array.isArray(K.project))this.axesProject=K.project;else{var te=!!K.project;this.axesProject=[te,te,te]}if("projectScale"in K)if(Array.isArray(K.projectScale))this.projectScale=K.projectScale.slice();else{var Y=+K.projectScale;this.projectScale=[Y,Y,Y]}if(this.projectHasAlpha=!1,"projectOpacity"in K){Array.isArray(K.projectOpacity)?this.projectOpacity=K.projectOpacity.slice():(Y=+K.projectOpacity,this.projectOpacity=[Y,Y,Y]);for(var Z=0;Z<3;++Z)this.projectOpacity[Z]=k(this.projectOpacity[Z]),this.projectOpacity[Z]<1&&(this.projectHasAlpha=!0)}this.hasAlpha=!1,"opacity"in K&&(this.opacity=k(K.opacity),this.opacity<1&&(this.hasAlpha=!0)),this.dirty=!0;var re,U,q=K.position,$=K.font||"normal",ne=K.alignment||[0,0];if(ne.length===2)re=ne[0],U=ne[1];else for(re=[],U=[],Z=0;Z0){var Ve=0,Ke=fe,Re=[0,0,0,1],qe=[0,0,0,1],We=Array.isArray(ie)&&Array.isArray(ie[0]),Ye=Array.isArray(le)&&Array.isArray(le[0]);e:for(Z=0;Z<_e;++Z){for(ge+=1,we=q[Z],Te=0;Te<3;++Te){if(isNaN(we[Te])||!isFinite(we[Te]))continue e;Q[Te]=Math.max(Q[Te],we[Te]),H[Te]=Math.min(H[Te],we[Te])}Oe=(nt=W(ee,Z,$,this.pixelRatio)).mesh,de=nt.lines,ye=nt.bounds;var nt,ft=nt.visible;if(ft)if(Array.isArray(ie)){if((vt=We?Z0?1-ye[0][0]:Ot<0?1+ye[1][0]:1,Wt*=Wt>0?1-ye[0][1]:Wt<0?1+ye[1][1]:1],Be=Oe.cells||[],Ge=Oe.positions||[];for(Te=0;Te0){var R=p*_;w.drawBox(S-R,A-R,M+R,A+R,x),w.drawBox(S-R,E-R,M+R,E+R,x),w.drawBox(S-R,A-R,S+R,E+R,x),w.drawBox(M-R,A-R,M+R,E+R,x)}}}},h.update=function(m){m=m||{},this.innerFill=!!m.innerFill,this.outerFill=!!m.outerFill,this.innerColor=(m.innerColor||[0,0,0,.5]).slice(),this.outerColor=(m.outerColor||[0,0,0,.5]).slice(),this.borderColor=(m.borderColor||[0,0,0,1]).slice(),this.borderWidth=m.borderWidth||0,this.selectBox=(m.selectBox||this.selectBox).slice()},h.dispose=function(){this.boxBuffer.dispose(),this.boxShader.dispose(),this.plot.removeOverlay(this)}},{"./lib/shaders":129,"gl-buffer":78,"gl-shader":132}],131:[function(a,l,c){l.exports=function(p,v){var y=v[0],x=v[1],w=i(p,y,x,{}),k=s.mallocUint8(y*x*4);return new m(p,w,k)};var i=a("gl-fbo"),s=a("typedarray-pool"),u=a("ndarray"),d=a("bit-twiddle").nextPow2;function h(p,v,y,x,w){this.coord=[p,v],this.id=y,this.value=x,this.distance=w}function m(p,v,y){this.gl=p,this.fbo=v,this.buffer=y,this._readTimeout=null;var x=this;this._readCallback=function(){x.gl&&(v.bind(),p.readPixels(0,0,v.shape[0],v.shape[1],p.RGBA,p.UNSIGNED_BYTE,x.buffer),x._readTimeout=null)}}var g=m.prototype;Object.defineProperty(g,"shape",{get:function(){return this.gl?this.fbo.shape.slice():[0,0]},set:function(p){if(this.gl){this.fbo.shape=p;var v=this.fbo.shape[0],y=this.fbo.shape[1];if(y*v*4>this.buffer.length){s.free(this.buffer);for(var x=this.buffer=s.mallocUint8(d(y*v*4)),w=0;ww)for(y=w;yx)for(y=x;y=0){for(var P=0|L.type.charAt(L.type.length-1),N=new Array(P),B=0;B=0;)G+=1;z[D]=G}var W=new Array(w.length);function K(){T.program=d.program(_,T._vref,T._fref,R,z);for(var te=0;te=0){if((A=_.charCodeAt(_.length-1)-48)<2||A>4)throw new i("","Invalid data type for attribute "+T+": "+_);h(g,p,S[0],y,A,x,T)}else{if(!(_.indexOf("mat")>=0))throw new i("","Unknown data type for attribute "+T+": "+_);var A;if((A=_.charCodeAt(_.length-1)-48)<2||A>4)throw new i("","Invalid data type for attribute "+T+": "+_);m(g,p,S,y,A,x,T)}}}return x};var i=a("./GLError");function s(g,p,v,y,x,w){this._gl=g,this._wrapper=p,this._index=v,this._locations=y,this._dimension=x,this._constFunc=w}var u=s.prototype;u.pointer=function(g,p,v,y){var x=this._gl,w=this._locations[this._index];x.vertexAttribPointer(w,this._dimension,g||x.FLOAT,!!p,v||0,y||0),x.enableVertexAttribArray(w)},u.set=function(g,p,v,y){return this._constFunc(this._locations[this._index],g,p,v,y)},Object.defineProperty(u,"location",{get:function(){return this._locations[this._index]},set:function(g){return g!==this._locations[this._index]&&(this._locations[this._index]=0|g,this._wrapper.program=null),0|g}});var d=[function(g,p,v){return v.length===void 0?g.vertexAttrib1f(p,v):g.vertexAttrib1fv(p,v)},function(g,p,v,y){return v.length===void 0?g.vertexAttrib2f(p,v,y):g.vertexAttrib2fv(p,v)},function(g,p,v,y,x){return v.length===void 0?g.vertexAttrib3f(p,v,y,x):g.vertexAttrib3fv(p,v)},function(g,p,v,y,x,w){return v.length===void 0?g.vertexAttrib4f(p,v,y,x,w):g.vertexAttrib4fv(p,v)}];function h(g,p,v,y,x,w,k){var b=d[x],T=new s(g,p,v,y,x,b);Object.defineProperty(w,k,{set:function(_){return g.disableVertexAttribArray(y[v]),b(g,y[v],_),_},get:function(){return T},enumerable:!0})}function m(g,p,v,y,x,w,k){for(var b=new Array(x),T=new Array(x),_=0;_4)throw new s("","Invalid uniform dimension type for matrix "+name+": "+P);h["uniformMatrix"+L+"fv"](p[M],!1,E);break}throw new s("","Unknown uniform data type for "+name+": "+P)}if((L=P.charCodeAt(P.length-1)-48)<2||L>4)throw new s("","Invalid data type");switch(P.charAt(0)){case"b":case"i":h["uniform"+L+"iv"](p[M],E);break;case"v":h["uniform"+L+"fv"](p[M],E);break;default:throw new s("","Unrecognized data type for vector "+name+": "+P)}}}}}}function y(k,b,T){if(typeof T=="object"){var _=x(T);Object.defineProperty(k,b,{get:u(_),set:v(T),enumerable:!0,configurable:!1})}else p[T]?Object.defineProperty(k,b,{get:(S=T,function(A,M,E){return A.getUniform(M.program,E[S])}),set:v(T),enumerable:!0,configurable:!1}):k[b]=function(A){switch(A){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":case"float":return 0;default:var M=A.indexOf("vec");if(0<=M&&M<=1&&A.length===4+M){if((E=A.charCodeAt(A.length-1)-48)<2||E>4)throw new s("","Invalid data type");return A.charAt(0)==="b"?d(E,!1):d(E,0)}if(A.indexOf("mat")===0&&A.length===4){var E;if((E=A.charCodeAt(A.length-1)-48)<2||E>4)throw new s("","Invalid uniform dimension type for matrix "+name+": "+A);return d(E*E,0)}throw new s("","Unknown uniform data type for "+name+": "+A)}}(g[T].type);var S}function x(k){var b;if(Array.isArray(k)){b=new Array(k.length);for(var T=0;T1){p[0]in m||(m[p[0]]=[]),m=m[p[0]];for(var v=1;v1)for(var x=0;x"u"?a("weakmap-shim"):WeakMap),d=0;function h(v,y,x,w,k,b,T){this.id=v,this.src=y,this.type=x,this.shader=w,this.count=b,this.programs=[],this.cache=T}function m(v){this.gl=v,this.shaders=[{},{}],this.programs={}}h.prototype.dispose=function(){if(--this.count==0){for(var v=this.cache,y=v.gl,x=this.programs,w=0,k=x.length;w 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, tubeScale; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * tubePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(tubePosition, 1.0); + vec4 t_position = view * tubePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = tubePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=i([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),d=i([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float tubeScale; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + gl_Position = projection * view * tubePosition; + f_id = id; + f_position = position.xyz; +} +`]),h=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);c.meshShader={vertex:s,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},c.pickShader={vertex:d,fragment:h,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},{glslify:231}],143:[function(a,l,c){var i=a("gl-vec3"),s=a("gl-vec4"),u=["xyz","xzy","yxz","yzx","zxy","zyx"],d=function(y,x,w,k){for(var b=0,T=0;T0)for(_e=0;_e<8;_e++){var we=(_e+1)%8;U.push(ne[_e],H[_e],H[we],H[we],ne[we],ne[_e]),$.push(ue,ae,ae,ae,ue,ue),Q.push(ee,ie,ie,ie,ee,ee);var Te=U.length;q.push([Te-6,Te-5,Te-4],[Te-3,Te-2,Te-1])}var Oe=ne;ne=H,H=Oe;var de=ue;ue=ae,ae=de;var ye=ee;ee=ie,ie=ye}return{positions:U,cells:q,vectors:$,vertexIntensity:Q}}(B,w,k,b)}),M=[],E=[],D=[],O=[];for(T=0;Tx)return w-1}return w},m=function(y,x,w){return yw?w:y},g=function(y){var x=1/0;y.sort(function(T,_){return T-_});for(var w=y.length,k=1;kye-1||Ke>Me-1||Re>ke-1)return i.create();var qe,We,Ye,nt,ft,vt,Pt=we[0][Ee],At=we[0][Ve],at=we[1][ze],et=we[1][Ke],Ot=we[2][Fe],Wt=(Te-Pt)/(At-Pt),Jt=(Oe-at)/(et-at),Be=(de-Ot)/(we[2][Re]-Ot);switch(isFinite(Wt)||(Wt=.5),isFinite(Jt)||(Jt=.5),isFinite(Be)||(Be=.5),me.reversedX&&(Ee=ye-1-Ee,Ve=ye-1-Ve),me.reversedY&&(ze=Me-1-ze,Ke=Me-1-Ke),me.reversedZ&&(Fe=ke-1-Fe,Re=ke-1-Re),me.filled){case 5:ft=Fe,vt=Re,Ye=ze*ke,nt=Ke*ke,qe=Ee*ke*Me,We=Ve*ke*Me;break;case 4:ft=Fe,vt=Re,qe=Ee*ke,We=Ve*ke,Ye=ze*ke*ye,nt=Ke*ke*ye;break;case 3:Ye=ze,nt=Ke,ft=Fe*Me,vt=Re*Me,qe=Ee*Me*ke,We=Ve*Me*ke;break;case 2:Ye=ze,nt=Ke,qe=Ee*Me,We=Ve*Me,ft=Fe*Me*ye,vt=Re*Me*ye;break;case 1:qe=Ee,We=Ve,ft=Fe*ye,vt=Re*ye,Ye=ze*ye*ke,nt=Ke*ye*ke;break;default:qe=Ee,We=Ve,Ye=ze*ye,nt=Ke*ye,ft=Fe*ye*Me,vt=Re*ye*Me}var Ge=_e[qe+Ye+ft],Tt=_e[qe+Ye+vt],dt=_e[qe+nt+ft],Pe=_e[qe+nt+vt],Ie=_e[We+Ye+ft],Ae=_e[We+Ye+vt],De=_e[We+nt+ft],He=_e[We+nt+vt],rt=i.create(),lt=i.create(),ot=i.create(),kt=i.create();i.lerp(rt,Ge,Ie,Wt),i.lerp(lt,Tt,Ae,Wt),i.lerp(ot,dt,De,Wt),i.lerp(kt,Pe,He,Wt);var wt=i.create(),Vt=i.create();i.lerp(wt,rt,ot,Jt),i.lerp(Vt,lt,kt,Jt);var Ut=i.create();return i.lerp(Ut,wt,Vt,Be),Ut}(le,y,S)},M=y.getDivergence||function(le,ge){var fe=i.create(),me=1e-4;i.add(fe,le,[me,0,0]);var _e=A(fe);i.subtract(_e,_e,ge),i.scale(_e,_e,1/me),i.add(fe,le,[0,me,0]);var we=A(fe);i.subtract(we,we,ge),i.scale(we,we,1/me),i.add(fe,le,[0,0,me]);var Te=A(fe);return i.subtract(Te,Te,ge),i.scale(Te,Te,1/me),i.add(fe,_e,we),i.add(fe,fe,Te),fe},E=[],D=x[0][0],O=x[0][1],R=x[0][2],z=x[1][0],L=x[1][1],P=x[1][2],N=function(le){var ge=le[0],fe=le[1],me=le[2];return!(gez||feL||meP)},B=10*i.distance(x[0],x[1])/k,G=B*B,W=1,K=0,te=w.length;te>1&&(W=function(le){for(var ge=[],fe=[],me=[],_e={},we={},Te={},Oe=le.length,de=0;deK&&(K=Q),ne.push(Q),E.push({points:re,velocities:U,divergences:ne});for(var ee=0;ee<100*k&&re.lengthG&&i.scale(ie,ie,B/Math.sqrt(ae)),i.add(ie,ie,Z),q=A(ie),i.squaredDistance($,ie)-G>-1e-4*G&&(re.push(ie),$=ie,U.push(q),H=M(ie,q),Q=i.length(H),isFinite(Q)&&Q>K&&(K=Q),ne.push(Q)),Z=ie}}var ue=d(E,y.colormap,K,W);return T?ue.tubeScale=T:(K===0&&(K=1),ue.tubeScale=.5*b*W/K),ue};var p=a("./lib/shaders"),v=a("gl-cone3d").createMesh;l.exports.createTubeMesh=function(y,x){return v(y,x,{shaders:p,traceType:"streamtube"})}},{"./lib/shaders":142,"gl-cone3d":79,"gl-vec3":169,"gl-vec4":205}],144:[function(a,l,c){var i=a("gl-shader"),s=a("glslify"),u=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute vec3 f; +attribute vec3 normal; + +uniform vec3 objectOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 lightPosition, eyePosition; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 localCoordinate = vec3(uv.zw, f.x); + worldCoordinate = objectOffset + localCoordinate; + vec4 worldPosition = model * vec4(worldCoordinate, 1.0); + vec4 clipPosition = projection * view * worldPosition; + gl_Position = clipPosition; + kill = f.y; + value = f.z; + planeCoordinate = uv.xy; + + vColor = texture2D(colormap, vec2(value, value)); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * worldPosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + lightDirection = lightPosition - cameraCoordinate.xyz; + eyeDirection = eyePosition - cameraCoordinate.xyz; + surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz); +} +`]),d=s([`precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float beckmannSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness) { + return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 lowerBound, upperBound; +uniform float contourTint; +uniform vec4 contourColor; +uniform sampler2D colormap; +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform float vertexColor; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + if ( + kill > 0.0 || + vColor.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], worldCoordinate) + ) discard; + + vec3 N = normalize(surfaceNormal); + vec3 V = normalize(eyeDirection); + vec3 L = normalize(lightDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = max(beckmannSpecular(L, V, N, roughness), 0.); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + //decide how to interpolate color \u2014 in vertex or in fragment + vec4 surfaceColor = + step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + + step(.5, vertexColor) * vColor; + + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = mix(litColor, contourColor, contourTint) * opacity; +} +`]),h=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute float f; + +uniform vec3 objectOffset; +uniform mat3 permutation; +uniform mat4 model, view, projection; +uniform float height, zOffset; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 dataCoordinate = permutation * vec3(uv.xy, height); + worldCoordinate = objectOffset + dataCoordinate; + vec4 worldPosition = model * vec4(worldCoordinate, 1.0); + + vec4 clipPosition = projection * view * worldPosition; + clipPosition.z += zOffset; + + gl_Position = clipPosition; + value = f + objectOffset.z; + kill = -1.0; + planeCoordinate = uv.zw; + + vColor = texture2D(colormap, vec2(value, value)); + + //Don't do lighting for contours + surfaceNormal = vec3(1,0,0); + eyeDirection = vec3(0,1,0); + lightDirection = vec3(0,0,1); +} +`]),m=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec2 shape; +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 surfaceNormal; + +vec2 splitFloat(float v) { + float vh = 255.0 * v; + float upper = floor(vh); + float lower = fract(vh); + return vec2(upper / 255.0, floor(lower * 16.0) / 16.0); +} + +void main() { + if ((kill > 0.0) || + (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard; + + vec2 ux = splitFloat(planeCoordinate.x / shape.x); + vec2 uy = splitFloat(planeCoordinate.y / shape.y); + gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); +} +`]);c.createShader=function(g){var p=i(g,u,d,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return p.attributes.uv.location=0,p.attributes.f.location=1,p.attributes.normal.location=2,p},c.createPickShader=function(g){var p=i(g,u,m,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return p.attributes.uv.location=0,p.attributes.f.location=1,p.attributes.normal.location=2,p},c.createContourShader=function(g){var p=i(g,h,d,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return p.attributes.uv.location=0,p.attributes.f.location=1,p},c.createPickContourShader=function(g){var p=i(g,h,m,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return p.attributes.uv.location=0,p.attributes.f.location=1,p}},{"gl-shader":132,glslify:231}],145:[function(a,l,c){l.exports=function(q){var $=q.gl,ne=_($),H=A($),Q=S($),ee=M($),ie=s($),ae=u($,[{buffer:ie,size:4,stride:40,offset:0},{buffer:ie,size:3,stride:40,offset:16},{buffer:ie,size:3,stride:40,offset:28}]),ue=s($),le=u($,[{buffer:ue,size:4,stride:20,offset:0},{buffer:ue,size:1,stride:20,offset:16}]),ge=s($),fe=u($,[{buffer:ge,size:2,type:$.FLOAT}]),me=d($,1,256,$.RGBA,$.UNSIGNED_BYTE);me.minFilter=$.LINEAR,me.magFilter=$.LINEAR;var _e=new z($,[0,0],[[0,0,0],[0,0,0]],ne,H,ie,ae,me,Q,ee,ue,le,ge,fe,[0,0,0]),we={levels:[[],[],[]]};for(var Te in q)we[Te]=q[Te];return we.colormap=we.colormap||"jet",_e.update(we),_e};var i=a("bit-twiddle"),s=a("gl-buffer"),u=a("gl-vao"),d=a("gl-texture2d"),h=a("typedarray-pool"),m=a("colormap"),g=a("ndarray-ops"),p=a("ndarray-pack"),v=a("ndarray"),y=a("surface-nets"),x=a("gl-mat4/multiply"),w=a("gl-mat4/invert"),k=a("binary-search-bounds"),b=a("ndarray-gradient"),T=a("./lib/shaders"),_=T.createShader,S=T.createContourShader,A=T.createPickShader,M=T.createPickContourShader,E=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],D=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],O=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];function R(q,$,ne,H,Q){this.position=q,this.index=$,this.uv=ne,this.level=H,this.dataCoordinate=Q}(function(){for(var q=0;q<3;++q){var $=O[q],ne=(q+2)%3;$[(q+1)%3+0]=1,$[ne+3]=1,$[q+6]=1}})();function z(q,$,ne,H,Q,ee,ie,ae,ue,le,ge,fe,me,_e,we){this.gl=q,this.shape=$,this.bounds=ne,this.objectOffset=we,this.intensityBounds=[],this._shader=H,this._pickShader=Q,this._coordinateBuffer=ee,this._vao=ie,this._colorMap=ae,this._contourShader=ue,this._contourPickShader=le,this._contourBuffer=ge,this._contourVAO=fe,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new R([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=me,this._dynamicVAO=_e,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[v(h.mallocFloat(1024),[0,0]),v(h.mallocFloat(1024),[0,0]),v(h.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var L=z.prototype;L.genColormap=function(q,$){var ne=!1,H=p([m({colormap:q,nshades:256,format:"rgba"}).map(function(Q,ee){var ie=$?function(ae,ue){if(!ue||!ue.length)return 1;for(var le=0;leae&&le>0){var ge=(ue[le][0]-ae)/(ue[le][0]-ue[le-1][0]);return ue[le][1]*(1-ge)+ge*ue[le-1][1]}}return 1}(ee/255,$):Q[3];return ie<1&&(ne=!0),[Q[0],Q[1],Q[2],255*ie]})]);return g.divseq(H,255),this.hasAlphaScale=ne,H},L.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},L.isOpaque=function(){return!this.isTransparent()},L.pickSlots=1,L.setPickBase=function(q){this.pickId=q};var P=[0,0,0],N={showSurface:!1,showContour:!1,projections:[E.slice(),E.slice(),E.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function B(q,$){var ne,H,Q,ee=$.axes&&$.axes.lastCubeProps.axis||P,ie=$.showSurface,ae=$.showContour;for(ne=0;ne<3;++ne)for(ie=ie||$.surfaceProject[ne],H=0;H<3;++H)ae=ae||$.contourProject[ne][H];for(ne=0;ne<3;++ne){var ue=N.projections[ne];for(H=0;H<16;++H)ue[H]=0;for(H=0;H<4;++H)ue[5*H]=1;ue[5*ne]=0,ue[12+ne]=$.axesBounds[+(ee[ne]>0)][ne],x(ue,q.model,ue);var le=N.clipBounds[ne];for(Q=0;Q<2;++Q)for(H=0;H<3;++H)le[Q][H]=q.clipBounds[Q][H];le[0][ne]=-1e8,le[1][ne]=1e8}return N.showSurface=ie,N.showContour=ae,N}var G={model:E,view:E,projection:E,inverseModel:E.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},W=E.slice(),K=[1,0,0,0,1,0,0,0,1];function te(q,$){q=q||{};var ne=this.gl;ne.disable(ne.CULL_FACE),this._colorMap.bind(0);var H=G;H.model=q.model||E,H.view=q.view||E,H.projection=q.projection||E,H.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],H.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],H.objectOffset=this.objectOffset,H.contourColor=this.contourColor[0],H.inverseModel=w(H.inverseModel,H.model);for(var Q=0;Q<2;++Q)for(var ee=H.clipBounds[Q],ie=0;ie<3;++ie)ee[ie]=Math.min(Math.max(this.clipBounds[Q][ie],-1e8),1e8);H.kambient=this.ambientLight,H.kdiffuse=this.diffuseLight,H.kspecular=this.specularLight,H.roughness=this.roughness,H.fresnel=this.fresnel,H.opacity=this.opacity,H.height=0,H.permutation=K,H.vertexColor=this.vertexColor;var ae=W;for(x(ae,H.view,H.model),x(ae,H.projection,ae),w(ae,ae),Q=0;Q<3;++Q)H.eyePosition[Q]=ae[12+Q]/ae[15];var ue=ae[15];for(Q=0;Q<3;++Q)ue+=this.lightPosition[Q]*ae[4*Q+3];for(Q=0;Q<3;++Q){var le=ae[12+Q];for(ie=0;ie<3;++ie)le+=ae[4*ie+Q]*this.lightPosition[ie];H.lightPosition[Q]=le/ue}var ge=B(H,this);if(ge.showSurface){for(this._shader.bind(),this._shader.uniforms=H,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(ne.TRIANGLES,this._vertexCount),Q=0;Q<3;++Q)this.surfaceProject[Q]&&this.vertexCount&&(this._shader.uniforms.model=ge.projections[Q],this._shader.uniforms.clipBounds=ge.clipBounds[Q],this._vao.draw(ne.TRIANGLES,this._vertexCount));this._vao.unbind()}if(ge.showContour){var fe=this._contourShader;H.kambient=1,H.kdiffuse=0,H.kspecular=0,H.opacity=1,fe.bind(),fe.uniforms=H;var me=this._contourVAO;for(me.bind(),Q=0;Q<3;++Q)for(fe.uniforms.permutation=O[Q],ne.lineWidth(this.contourWidth[Q]*this.pixelRatio),ie=0;ie>4)/16)/255,Q=Math.floor(H),ee=H-Q,ie=$[1]*(q.value[1]+(15&q.value[2])/16)/255,ae=Math.floor(ie),ue=ie-ae;Q+=1,ae+=1;var le=ne.position;le[0]=le[1]=le[2]=0;for(var ge=0;ge<2;++ge)for(var fe=ge?ee:1-ee,me=0;me<2;++me)for(var _e=Q+ge,we=ae+me,Te=fe*(me?ue:1-ue),Oe=0;Oe<3;++Oe)le[Oe]+=this._field[Oe].get(_e,we)*Te;for(var de=this._pickResult.level,ye=0;ye<3;++ye)if(de[ye]=k.le(this.contourLevels[ye],le[ye]),de[ye]<0)this.contourLevels[ye].length>0&&(de[ye]=0);else if(de[ye]Math.abs(ke-le[ye])&&(de[ye]+=1)}for(ne.index[0]=ee<.5?Q:Q+1,ne.index[1]=ue<.5?ae:ae+1,ne.uv[0]=H/$[0],ne.uv[1]=ie/$[1],Oe=0;Oe<3;++Oe)ne.dataCoordinate[Oe]=this._field[Oe].get(ne.index[0],ne.index[1]);return ne},L.padField=function(q,$){var ne=$.shape.slice(),H=q.shape.slice();g.assign(q.lo(1,1).hi(ne[0],ne[1]),$),g.assign(q.lo(1).hi(ne[0],1),$.hi(ne[0],1)),g.assign(q.lo(1,H[1]-1).hi(ne[0],1),$.lo(0,ne[1]-1).hi(ne[0],1)),g.assign(q.lo(0,1).hi(1,ne[1]),$.hi(1)),g.assign(q.lo(H[0]-1,1).hi(1,ne[1]),$.lo(ne[0]-1)),q.set(0,0,$.get(0,0)),q.set(0,H[1]-1,$.get(0,ne[1]-1)),q.set(H[0]-1,0,$.get(ne[0]-1,0)),q.set(H[0]-1,H[1]-1,$.get(ne[0]-1,ne[1]-1))},L.update=function(q){q=q||{},this.objectOffset=q.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in q&&(this.contourWidth=Z(q.contourWidth,Number)),"showContour"in q&&(this.showContour=Z(q.showContour,Boolean)),"showSurface"in q&&(this.showSurface=!!q.showSurface),"contourTint"in q&&(this.contourTint=Z(q.contourTint,Boolean)),"contourColor"in q&&(this.contourColor=U(q.contourColor)),"contourProject"in q&&(this.contourProject=Z(q.contourProject,function(Kt){return Z(Kt,Boolean)})),"surfaceProject"in q&&(this.surfaceProject=q.surfaceProject),"dynamicColor"in q&&(this.dynamicColor=U(q.dynamicColor)),"dynamicTint"in q&&(this.dynamicTint=Z(q.dynamicTint,Number)),"dynamicWidth"in q&&(this.dynamicWidth=Z(q.dynamicWidth,Number)),"opacity"in q&&(this.opacity=q.opacity),"opacityscale"in q&&(this.opacityscale=q.opacityscale),"colorBounds"in q&&(this.colorBounds=q.colorBounds),"vertexColor"in q&&(this.vertexColor=q.vertexColor?1:0),"colormap"in q&&this._colorMap.setPixels(this.genColormap(q.colormap,this.opacityscale));var $=q.field||q.coords&&q.coords[2]||null,ne=!1;if($||($=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),"field"in q||"coords"in q){var H=($.shape[0]+2)*($.shape[1]+2);H>this._field[2].data.length&&(h.freeFloat(this._field[2].data),this._field[2].data=h.mallocFloat(i.nextPow2(H))),this._field[2]=v(this._field[2].data,[$.shape[0]+2,$.shape[1]+2]),this.padField(this._field[2],$),this.shape=$.shape.slice();for(var Q=this.shape,ee=0;ee<2;++ee)this._field[2].size>this._field[ee].data.length&&(h.freeFloat(this._field[ee].data),this._field[ee].data=h.mallocFloat(this._field[2].size)),this._field[ee]=v(this._field[ee].data,[Q[0]+2,Q[1]+2]);if(q.coords){var ie=q.coords;if(!Array.isArray(ie)||ie.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(ee=0;ee<2;++ee){var ae=ie[ee];for(me=0;me<2;++me)if(ae.shape[me]!==Q[me])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[ee],ae)}}else if(q.ticks){var ue=q.ticks;if(!Array.isArray(ue)||ue.length!==2)throw new Error("gl-surface: invalid ticks");for(ee=0;ee<2;++ee){var le=ue[ee];if((Array.isArray(le)||le.length)&&(le=v(le)),le.shape[0]!==Q[ee])throw new Error("gl-surface: invalid tick length");var ge=v(le.data,Q);ge.stride[ee]=le.stride[0],ge.stride[1^ee]=0,this.padField(this._field[ee],ge)}}else{for(ee=0;ee<2;++ee){var fe=[0,0];fe[ee]=1,this._field[ee]=v(this._field[ee].data,[Q[0]+2,Q[1]+2],fe,0)}this._field[0].set(0,0,0);for(var me=0;me0){for(var It=0;It<5;++It)Pe.pop();Pt-=1}continue e}Pe.push(rt[0],rt[1],kt[0],kt[1],rt[2]),Pt+=1}}He.push(Pt)}this._contourOffsets[Ie]=De,this._contourCounts[Ie]=He}var Zt=h.mallocFloat(Pe.length);for(ee=0;eeO||E<0||E>O)throw new Error("gl-texture2d: Invalid texture size");return A._shape=[M,E],A.bind(),D.texImage2D(D.TEXTURE_2D,0,A.format,M,E,0,A.format,A.type,null),A._mipLevels=[0],A}function x(A,M,E,D,O,R){this.gl=A,this.handle=M,this.format=O,this.type=R,this._shape=[E,D],this._mipLevels=[0],this._magFilter=A.NEAREST,this._minFilter=A.NEAREST,this._wrapS=A.CLAMP_TO_EDGE,this._wrapT=A.CLAMP_TO_EDGE,this._anisoSamples=1;var z=this,L=[this._wrapS,this._wrapT];Object.defineProperties(L,[{get:function(){return z._wrapS},set:function(N){return z.wrapS=N}},{get:function(){return z._wrapT},set:function(N){return z.wrapT=N}}]),this._wrapVector=L;var P=[this._shape[0],this._shape[1]];Object.defineProperties(P,[{get:function(){return z._shape[0]},set:function(N){return z.width=N}},{get:function(){return z._shape[1]},set:function(N){return z.height=N}}]),this._shapeVector=P}var w=x.prototype;function k(A,M){return A.length===3?M[2]===1&&M[1]===A[0]*A[2]&&M[0]===A[2]:M[0]===1&&M[1]===A[0]}function b(A){var M=A.createTexture();return A.bindTexture(A.TEXTURE_2D,M),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MIN_FILTER,A.NEAREST),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MAG_FILTER,A.NEAREST),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_S,A.CLAMP_TO_EDGE),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_T,A.CLAMP_TO_EDGE),M}function T(A,M,E,D,O){var R=A.getParameter(A.MAX_TEXTURE_SIZE);if(M<0||M>R||E<0||E>R)throw new Error("gl-texture2d: Invalid texture shape");if(O===A.FLOAT&&!A.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var z=b(A);return A.texImage2D(A.TEXTURE_2D,0,D,M,E,0,D,O,null),new x(A,z,M,E,D,O)}function _(A,M,E,D,O,R){var z=b(A);return A.texImage2D(A.TEXTURE_2D,0,O,O,R,M),new x(A,z,E,D,O,R)}function S(A,M){var E=M.dtype,D=M.shape.slice(),O=A.getParameter(A.MAX_TEXTURE_SIZE);if(D[0]<0||D[0]>O||D[1]<0||D[1]>O)throw new Error("gl-texture2d: Invalid texture size");var R=k(D,M.stride.slice()),z=0;E==="float32"?z=A.FLOAT:E==="float64"?(z=A.FLOAT,R=!1,E="float32"):E==="uint8"?z=A.UNSIGNED_BYTE:(z=A.UNSIGNED_BYTE,R=!1,E="uint8");var L,P,N=0;if(D.length===2)N=A.LUMINANCE,D=[D[0],D[1],1],M=i(M.data,D,[M.stride[0],M.stride[1],1],M.offset);else{if(D.length!==3)throw new Error("gl-texture2d: Invalid shape for texture");if(D[2]===1)N=A.ALPHA;else if(D[2]===2)N=A.LUMINANCE_ALPHA;else if(D[2]===3)N=A.RGB;else{if(D[2]!==4)throw new Error("gl-texture2d: Invalid shape for pixel coords");N=A.RGBA}}z!==A.FLOAT||A.getExtension("OES_texture_float")||(z=A.UNSIGNED_BYTE,R=!1);var B=M.size;if(R)L=M.offset===0&&M.data.length===B?M.data:M.data.subarray(M.offset,M.offset+B);else{var G=[D[2],D[2]*D[0],1];P=u.malloc(B,E);var W=i(P,D,G,0);E!=="float32"&&E!=="float64"||z!==A.UNSIGNED_BYTE?s.assign(W,M):v(W,M),L=P.subarray(0,B)}var K=b(A);return A.texImage2D(A.TEXTURE_2D,0,N,D[0],D[1],0,N,z,L),R||u.free(P),new x(A,K,D[0],D[1],N,z)}Object.defineProperties(w,{minFilter:{get:function(){return this._minFilter},set:function(A){this.bind();var M=this.gl;if(this.type===M.FLOAT&&d.indexOf(A)>=0&&(M.getExtension("OES_texture_float_linear")||(A=M.NEAREST)),h.indexOf(A)<0)throw new Error("gl-texture2d: Unknown filter mode "+A);return M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MIN_FILTER,A),this._minFilter=A}},magFilter:{get:function(){return this._magFilter},set:function(A){this.bind();var M=this.gl;if(this.type===M.FLOAT&&d.indexOf(A)>=0&&(M.getExtension("OES_texture_float_linear")||(A=M.NEAREST)),h.indexOf(A)<0)throw new Error("gl-texture2d: Unknown filter mode "+A);return M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MAG_FILTER,A),this._magFilter=A}},mipSamples:{get:function(){return this._anisoSamples},set:function(A){var M=this._anisoSamples;if(this._anisoSamples=0|Math.max(A,1),M!==this._anisoSamples){var E=this.gl.getExtension("EXT_texture_filter_anisotropic");E&&this.gl.texParameterf(this.gl.TEXTURE_2D,E.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(A){if(this.bind(),m.indexOf(A)<0)throw new Error("gl-texture2d: Unknown wrap mode "+A);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,A),this._wrapS=A}},wrapT:{get:function(){return this._wrapT},set:function(A){if(this.bind(),m.indexOf(A)<0)throw new Error("gl-texture2d: Unknown wrap mode "+A);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,A),this._wrapT=A}},wrap:{get:function(){return this._wrapVector},set:function(A){if(Array.isArray(A)||(A=[A,A]),A.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var M=0;M<2;++M)if(m.indexOf(A[M])<0)throw new Error("gl-texture2d: Unknown wrap mode "+A);this._wrapS=A[0],this._wrapT=A[1];var E=this.gl;return this.bind(),E.texParameteri(E.TEXTURE_2D,E.TEXTURE_WRAP_S,this._wrapS),E.texParameteri(E.TEXTURE_2D,E.TEXTURE_WRAP_T,this._wrapT),A}},shape:{get:function(){return this._shapeVector},set:function(A){if(Array.isArray(A)){if(A.length!==2)throw new Error("gl-texture2d: Invalid texture shape")}else A=[0|A,0|A];return y(this,0|A[0],0|A[1]),[0|A[0],0|A[1]]}},width:{get:function(){return this._shape[0]},set:function(A){return y(this,A|=0,this._shape[1]),A}},height:{get:function(){return this._shape[1]},set:function(A){return A|=0,y(this,this._shape[0],A),A}}}),w.bind=function(A){var M=this.gl;return A!==void 0&&M.activeTexture(M.TEXTURE0+(0|A)),M.bindTexture(M.TEXTURE_2D,this.handle),A!==void 0?0|A:M.getParameter(M.ACTIVE_TEXTURE)-M.TEXTURE0},w.dispose=function(){this.gl.deleteTexture(this.handle)},w.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var A=Math.min(this._shape[0],this._shape[1]),M=0;A>0;++M,A>>>=1)this._mipLevels.indexOf(M)<0&&this._mipLevels.push(M)},w.setPixels=function(A,M,E,D){var O=this.gl;this.bind(),Array.isArray(M)?(D=E,E=0|M[1],M=0|M[0]):(M=M||0,E=E||0),D=D||0;var R=p(A)?A:A.raw;if(R)this._mipLevels.indexOf(D)<0?(O.texImage2D(O.TEXTURE_2D,0,this.format,this.format,this.type,R),this._mipLevels.push(D)):O.texSubImage2D(O.TEXTURE_2D,D,M,E,this.format,this.type,R);else{if(!(A.shape&&A.stride&&A.data))throw new Error("gl-texture2d: Unsupported data type");if(A.shape.length<2||M+A.shape[1]>this._shape[1]>>>D||E+A.shape[0]>this._shape[0]>>>D||M<0||E<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");(function(z,L,P,N,B,G,W,K){var te=K.dtype,Y=K.shape.slice();if(Y.length<2||Y.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var Z=0,re=0,U=k(Y,K.stride.slice());if(te==="float32"?Z=z.FLOAT:te==="float64"?(Z=z.FLOAT,U=!1,te="float32"):te==="uint8"?Z=z.UNSIGNED_BYTE:(Z=z.UNSIGNED_BYTE,U=!1,te="uint8"),Y.length===2)re=z.LUMINANCE,Y=[Y[0],Y[1],1],K=i(K.data,Y,[K.stride[0],K.stride[1],1],K.offset);else{if(Y.length!==3)throw new Error("gl-texture2d: Invalid shape for texture");if(Y[2]===1)re=z.ALPHA;else if(Y[2]===2)re=z.LUMINANCE_ALPHA;else if(Y[2]===3)re=z.RGB;else{if(Y[2]!==4)throw new Error("gl-texture2d: Invalid shape for pixel coords");re=z.RGBA}Y[2]}if(re!==z.LUMINANCE&&re!==z.ALPHA||B!==z.LUMINANCE&&B!==z.ALPHA||(re=B),re!==B)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var q=K.size,$=W.indexOf(N)<0;if($&&W.push(N),Z===G&&U)K.offset===0&&K.data.length===q?$?z.texImage2D(z.TEXTURE_2D,N,B,Y[0],Y[1],0,B,G,K.data):z.texSubImage2D(z.TEXTURE_2D,N,L,P,Y[0],Y[1],B,G,K.data):$?z.texImage2D(z.TEXTURE_2D,N,B,Y[0],Y[1],0,B,G,K.data.subarray(K.offset,K.offset+q)):z.texSubImage2D(z.TEXTURE_2D,N,L,P,Y[0],Y[1],B,G,K.data.subarray(K.offset,K.offset+q));else{var ne;ne=G===z.FLOAT?u.mallocFloat32(q):u.mallocUint8(q);var H=i(ne,Y,[Y[2],Y[2]*Y[0],1]);Z===z.FLOAT&&G===z.UNSIGNED_BYTE?v(H,K):s.assign(H,K),$?z.texImage2D(z.TEXTURE_2D,N,B,Y[0],Y[1],0,B,G,ne.subarray(0,q)):z.texSubImage2D(z.TEXTURE_2D,N,L,P,Y[0],Y[1],B,G,ne.subarray(0,q)),G===z.FLOAT?u.freeFloat32(ne):u.freeUint8(ne)}})(O,M,E,D,this.format,this.type,this._mipLevels,A)}}},{ndarray:259,"ndarray-ops":254,"typedarray-pool":308}],147:[function(a,l,c){l.exports=function(i,s,u){s?s.bind():i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,null);var d=0|i.getParameter(i.MAX_VERTEX_ATTRIBS);if(u){if(u.length>d)throw new Error("gl-vao: Too many vertex attributes");for(var h=0;h1?0:Math.acos(p)};var i=a("./fromValues"),s=a("./normalize"),u=a("./dot")},{"./dot":162,"./fromValues":168,"./normalize":179}],153:[function(a,l,c){l.exports=function(i,s){return i[0]=Math.ceil(s[0]),i[1]=Math.ceil(s[1]),i[2]=Math.ceil(s[2]),i}},{}],154:[function(a,l,c){l.exports=function(i){var s=new Float32Array(3);return s[0]=i[0],s[1]=i[1],s[2]=i[2],s}},{}],155:[function(a,l,c){l.exports=function(i,s){return i[0]=s[0],i[1]=s[1],i[2]=s[2],i}},{}],156:[function(a,l,c){l.exports=function(){var i=new Float32Array(3);return i[0]=0,i[1]=0,i[2]=0,i}},{}],157:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=u[0],p=u[1],v=u[2];return i[0]=h*v-m*p,i[1]=m*g-d*v,i[2]=d*p-h*g,i}},{}],158:[function(a,l,c){l.exports=a("./distance")},{"./distance":159}],159:[function(a,l,c){l.exports=function(i,s){var u=s[0]-i[0],d=s[1]-i[1],h=s[2]-i[2];return Math.sqrt(u*u+d*d+h*h)}},{}],160:[function(a,l,c){l.exports=a("./divide")},{"./divide":161}],161:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]/u[0],i[1]=s[1]/u[1],i[2]=s[2]/u[2],i}},{}],162:[function(a,l,c){l.exports=function(i,s){return i[0]*s[0]+i[1]*s[1]+i[2]*s[2]}},{}],163:[function(a,l,c){l.exports=1e-6},{}],164:[function(a,l,c){l.exports=function(s,u){var d=s[0],h=s[1],m=s[2],g=u[0],p=u[1],v=u[2];return Math.abs(d-g)<=i*Math.max(1,Math.abs(d),Math.abs(g))&&Math.abs(h-p)<=i*Math.max(1,Math.abs(h),Math.abs(p))&&Math.abs(m-v)<=i*Math.max(1,Math.abs(m),Math.abs(v))};var i=a("./epsilon")},{"./epsilon":163}],165:[function(a,l,c){l.exports=function(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}},{}],166:[function(a,l,c){l.exports=function(i,s){return i[0]=Math.floor(s[0]),i[1]=Math.floor(s[1]),i[2]=Math.floor(s[2]),i}},{}],167:[function(a,l,c){l.exports=function(s,u,d,h,m,g){var p,v;for(u||(u=3),d||(d=0),v=h?Math.min(h*u+d,s.length):s.length,p=d;p0&&(m=1/Math.sqrt(m),i[0]=s[0]*m,i[1]=s[1]*m,i[2]=s[2]*m),i}},{}],180:[function(a,l,c){l.exports=function(i,s){s=s||1;var u=2*Math.random()*Math.PI,d=2*Math.random()-1,h=Math.sqrt(1-d*d)*s;return i[0]=Math.cos(u)*h,i[1]=Math.sin(u)*h,i[2]=d*s,i}},{}],181:[function(a,l,c){l.exports=function(i,s,u,d){var h=u[1],m=u[2],g=s[1]-h,p=s[2]-m,v=Math.sin(d),y=Math.cos(d);return i[0]=s[0],i[1]=h+g*y-p*v,i[2]=m+g*v+p*y,i}},{}],182:[function(a,l,c){l.exports=function(i,s,u,d){var h=u[0],m=u[2],g=s[0]-h,p=s[2]-m,v=Math.sin(d),y=Math.cos(d);return i[0]=h+p*v+g*y,i[1]=s[1],i[2]=m+p*y-g*v,i}},{}],183:[function(a,l,c){l.exports=function(i,s,u,d){var h=u[0],m=u[1],g=s[0]-h,p=s[1]-m,v=Math.sin(d),y=Math.cos(d);return i[0]=h+g*y-p*v,i[1]=m+g*v+p*y,i[2]=s[2],i}},{}],184:[function(a,l,c){l.exports=function(i,s){return i[0]=Math.round(s[0]),i[1]=Math.round(s[1]),i[2]=Math.round(s[2]),i}},{}],185:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]*u,i[1]=s[1]*u,i[2]=s[2]*u,i}},{}],186:[function(a,l,c){l.exports=function(i,s,u,d){return i[0]=s[0]+u[0]*d,i[1]=s[1]+u[1]*d,i[2]=s[2]+u[2]*d,i}},{}],187:[function(a,l,c){l.exports=function(i,s,u,d){return i[0]=s,i[1]=u,i[2]=d,i}},{}],188:[function(a,l,c){l.exports=a("./squaredDistance")},{"./squaredDistance":190}],189:[function(a,l,c){l.exports=a("./squaredLength")},{"./squaredLength":191}],190:[function(a,l,c){l.exports=function(i,s){var u=s[0]-i[0],d=s[1]-i[1],h=s[2]-i[2];return u*u+d*d+h*h}},{}],191:[function(a,l,c){l.exports=function(i){var s=i[0],u=i[1],d=i[2];return s*s+u*u+d*d}},{}],192:[function(a,l,c){l.exports=a("./subtract")},{"./subtract":193}],193:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]-u[0],i[1]=s[1]-u[1],i[2]=s[2]-u[2],i}},{}],194:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2];return i[0]=d*u[0]+h*u[3]+m*u[6],i[1]=d*u[1]+h*u[4]+m*u[7],i[2]=d*u[2]+h*u[5]+m*u[8],i}},{}],195:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=u[3]*d+u[7]*h+u[11]*m+u[15];return g=g||1,i[0]=(u[0]*d+u[4]*h+u[8]*m+u[12])/g,i[1]=(u[1]*d+u[5]*h+u[9]*m+u[13])/g,i[2]=(u[2]*d+u[6]*h+u[10]*m+u[14])/g,i}},{}],196:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=u[0],p=u[1],v=u[2],y=u[3],x=y*d+p*m-v*h,w=y*h+v*d-g*m,k=y*m+g*h-p*d,b=-g*d-p*h-v*m;return i[0]=x*y+b*-g+w*-v-k*-p,i[1]=w*y+b*-p+k*-g-x*-v,i[2]=k*y+b*-v+x*-p-w*-g,i}},{}],197:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]+u[0],i[1]=s[1]+u[1],i[2]=s[2]+u[2],i[3]=s[3]+u[3],i}},{}],198:[function(a,l,c){l.exports=function(i){var s=new Float32Array(4);return s[0]=i[0],s[1]=i[1],s[2]=i[2],s[3]=i[3],s}},{}],199:[function(a,l,c){l.exports=function(i,s){return i[0]=s[0],i[1]=s[1],i[2]=s[2],i[3]=s[3],i}},{}],200:[function(a,l,c){l.exports=function(){var i=new Float32Array(4);return i[0]=0,i[1]=0,i[2]=0,i[3]=0,i}},{}],201:[function(a,l,c){l.exports=function(i,s){var u=s[0]-i[0],d=s[1]-i[1],h=s[2]-i[2],m=s[3]-i[3];return Math.sqrt(u*u+d*d+h*h+m*m)}},{}],202:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]/u[0],i[1]=s[1]/u[1],i[2]=s[2]/u[2],i[3]=s[3]/u[3],i}},{}],203:[function(a,l,c){l.exports=function(i,s){return i[0]*s[0]+i[1]*s[1]+i[2]*s[2]+i[3]*s[3]}},{}],204:[function(a,l,c){l.exports=function(i,s,u,d){var h=new Float32Array(4);return h[0]=i,h[1]=s,h[2]=u,h[3]=d,h}},{}],205:[function(a,l,c){l.exports={create:a("./create"),clone:a("./clone"),fromValues:a("./fromValues"),copy:a("./copy"),set:a("./set"),add:a("./add"),subtract:a("./subtract"),multiply:a("./multiply"),divide:a("./divide"),min:a("./min"),max:a("./max"),scale:a("./scale"),scaleAndAdd:a("./scaleAndAdd"),distance:a("./distance"),squaredDistance:a("./squaredDistance"),length:a("./length"),squaredLength:a("./squaredLength"),negate:a("./negate"),inverse:a("./inverse"),normalize:a("./normalize"),dot:a("./dot"),lerp:a("./lerp"),random:a("./random"),transformMat4:a("./transformMat4"),transformQuat:a("./transformQuat")}},{"./add":197,"./clone":198,"./copy":199,"./create":200,"./distance":201,"./divide":202,"./dot":203,"./fromValues":204,"./inverse":206,"./length":207,"./lerp":208,"./max":209,"./min":210,"./multiply":211,"./negate":212,"./normalize":213,"./random":214,"./scale":215,"./scaleAndAdd":216,"./set":217,"./squaredDistance":218,"./squaredLength":219,"./subtract":220,"./transformMat4":221,"./transformQuat":222}],206:[function(a,l,c){l.exports=function(i,s){return i[0]=1/s[0],i[1]=1/s[1],i[2]=1/s[2],i[3]=1/s[3],i}},{}],207:[function(a,l,c){l.exports=function(i){var s=i[0],u=i[1],d=i[2],h=i[3];return Math.sqrt(s*s+u*u+d*d+h*h)}},{}],208:[function(a,l,c){l.exports=function(i,s,u,d){var h=s[0],m=s[1],g=s[2],p=s[3];return i[0]=h+d*(u[0]-h),i[1]=m+d*(u[1]-m),i[2]=g+d*(u[2]-g),i[3]=p+d*(u[3]-p),i}},{}],209:[function(a,l,c){l.exports=function(i,s,u){return i[0]=Math.max(s[0],u[0]),i[1]=Math.max(s[1],u[1]),i[2]=Math.max(s[2],u[2]),i[3]=Math.max(s[3],u[3]),i}},{}],210:[function(a,l,c){l.exports=function(i,s,u){return i[0]=Math.min(s[0],u[0]),i[1]=Math.min(s[1],u[1]),i[2]=Math.min(s[2],u[2]),i[3]=Math.min(s[3],u[3]),i}},{}],211:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]*u[0],i[1]=s[1]*u[1],i[2]=s[2]*u[2],i[3]=s[3]*u[3],i}},{}],212:[function(a,l,c){l.exports=function(i,s){return i[0]=-s[0],i[1]=-s[1],i[2]=-s[2],i[3]=-s[3],i}},{}],213:[function(a,l,c){l.exports=function(i,s){var u=s[0],d=s[1],h=s[2],m=s[3],g=u*u+d*d+h*h+m*m;return g>0&&(g=1/Math.sqrt(g),i[0]=u*g,i[1]=d*g,i[2]=h*g,i[3]=m*g),i}},{}],214:[function(a,l,c){var i=a("./normalize"),s=a("./scale");l.exports=function(u,d){return d=d||1,u[0]=Math.random(),u[1]=Math.random(),u[2]=Math.random(),u[3]=Math.random(),i(u,u),s(u,u,d),u}},{"./normalize":213,"./scale":215}],215:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]*u,i[1]=s[1]*u,i[2]=s[2]*u,i[3]=s[3]*u,i}},{}],216:[function(a,l,c){l.exports=function(i,s,u,d){return i[0]=s[0]+u[0]*d,i[1]=s[1]+u[1]*d,i[2]=s[2]+u[2]*d,i[3]=s[3]+u[3]*d,i}},{}],217:[function(a,l,c){l.exports=function(i,s,u,d,h){return i[0]=s,i[1]=u,i[2]=d,i[3]=h,i}},{}],218:[function(a,l,c){l.exports=function(i,s){var u=s[0]-i[0],d=s[1]-i[1],h=s[2]-i[2],m=s[3]-i[3];return u*u+d*d+h*h+m*m}},{}],219:[function(a,l,c){l.exports=function(i){var s=i[0],u=i[1],d=i[2],h=i[3];return s*s+u*u+d*d+h*h}},{}],220:[function(a,l,c){l.exports=function(i,s,u){return i[0]=s[0]-u[0],i[1]=s[1]-u[1],i[2]=s[2]-u[2],i[3]=s[3]-u[3],i}},{}],221:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=s[3];return i[0]=u[0]*d+u[4]*h+u[8]*m+u[12]*g,i[1]=u[1]*d+u[5]*h+u[9]*m+u[13]*g,i[2]=u[2]*d+u[6]*h+u[10]*m+u[14]*g,i[3]=u[3]*d+u[7]*h+u[11]*m+u[15]*g,i}},{}],222:[function(a,l,c){l.exports=function(i,s,u){var d=s[0],h=s[1],m=s[2],g=u[0],p=u[1],v=u[2],y=u[3],x=y*d+p*m-v*h,w=y*h+v*d-g*m,k=y*m+g*h-p*d,b=-g*d-p*h-v*m;return i[0]=x*y+b*-g+w*-v-k*-p,i[1]=w*y+b*-p+k*-g-x*-v,i[2]=k*y+b*-v+x*-p-w*-g,i[3]=s[3],i}},{}],223:[function(a,l,c){var i=a("glsl-tokenizer"),s=a("atob-lite");l.exports=function(u){for(var d=Array.isArray(u)?u:i(u),h=0;h0)continue;ne=q.slice(0,1).join("")}return P(ne),A+=ne.length,(b=b.slice(ne.length)).length}}function Y(){return/[^a-fA-F0-9]/.test(p)?(P(b.join("")),k=999,x):(b.push(p),v=p,x+1)}function Z(){return p==="."||/[eE]/.test(p)?(b.push(p),k=5,v=p,x+1):p==="x"&&b.length===1&&b[0]==="0"?(k=11,b.push(p),v=p,x+1):/[^\d]/.test(p)?(P(b.join("")),k=999,x):(b.push(p),v=p,x+1)}function re(){return p==="f"&&(b.push(p),v=p,x+=1),/[eE]/.test(p)?(b.push(p),v=p,x+1):(p!=="-"&&p!=="+"||!/[eE]/.test(v))&&/[^\d]/.test(p)?(P(b.join("")),k=999,x):(b.push(p),v=p,x+1)}function U(){if(/[^\d\w_]/.test(p)){var q=b.join("");return k=L[q]?8:z[q]?7:6,P(b.join("")),k=999,x}return b.push(p),v=p,x+1}};var i=a("./lib/literals"),s=a("./lib/operators"),u=a("./lib/builtins"),d=a("./lib/literals-300es"),h=a("./lib/builtins-300es"),m=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"]},{"./lib/builtins":226,"./lib/builtins-300es":225,"./lib/literals":228,"./lib/literals-300es":227,"./lib/operators":229}],225:[function(a,l,c){var i=a("./builtins");i=i.slice().filter(function(s){return!/^(gl\_|texture)/.test(s)}),l.exports=i.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},{"./builtins":226}],226:[function(a,l,c){l.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},{}],227:[function(a,l,c){var i=a("./literals");l.exports=i.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},{"./literals":228}],228:[function(a,l,c){l.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},{}],229:[function(a,l,c){l.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},{}],230:[function(a,l,c){var i=a("./index");l.exports=function(s,u){var d=i(u),h=[];return h=(h=h.concat(d(s))).concat(d(null))}},{"./index":224}],231:[function(a,l,c){l.exports=function(i){typeof i=="string"&&(i=[i]);for(var s=[].slice.call(arguments,1),u=[],d=0;d0;)for(var _=(v=T.pop()).adjacent,S=0;S<=x;++S){var A=_[S];if(A.boundary&&!(A.lastVisited<=-w)){for(var M=A.vertices,E=0;E<=x;++E){var D=M[E];k[E]=D<0?y:b[D]}var O=this.orient();if(O>0)return A;A.lastVisited=-w,O===0&&T.push(A)}}return null},p.walk=function(v,y){var x=this.vertices.length-1,w=this.dimension,k=this.vertices,b=this.tuple,T=y?this.interior.length*Math.random()|0:this.interior.length-1,_=this.interior[T];e:for(;!_.boundary;){for(var S=_.vertices,A=_.adjacent,M=0;M<=w;++M)b[M]=k[S[M]];for(_.lastVisited=x,M=0;M<=w;++M){var E=A[M];if(!(E.lastVisited>=x)){var D=b[M];b[M]=v;var O=this.orient();if(b[M]=D,O<0){_=E;continue e}E.boundary?E.lastVisited=-x:E.lastVisited=x}}return}return _},p.addPeaks=function(v,y){var x=this.vertices.length-1,w=this.dimension,k=this.vertices,b=this.tuple,T=this.interior,_=this.simplices,S=[y];y.lastVisited=x,y.vertices[y.vertices.indexOf(-1)]=x,y.boundary=!1,T.push(y);for(var A=[];S.length>0;){var M=(y=S.pop()).vertices,E=y.adjacent,D=M.indexOf(x);if(!(D<0)){for(var O=0;O<=w;++O)if(O!==D){var R=E[O];if(R.boundary&&!(R.lastVisited>=x)){var z=R.vertices;if(R.lastVisited!==-x){for(var L=0,P=0;P<=w;++P)z[P]<0?(L=P,b[P]=v):b[P]=k[z[P]];if(this.orient()>0){z[L]=x,R.boundary=!1,T.push(R),S.push(R),R.lastVisited=x;continue}R.lastVisited=-x}var N=R.adjacent,B=M.slice(),G=E.slice(),W=new u(B,G,!0);_.push(W);var K=N.indexOf(y);if(!(K<0))for(N[K]=W,G[D]=R,B[O]=-1,G[O]=y,E[O]=W,W.flip(),P=0;P<=w;++P){var te=B[P];if(!(te<0||te===x)){for(var Y=new Array(w-1),Z=0,re=0;re<=w;++re){var U=B[re];U<0||re===P||(Y[Z++]=U)}A.push(new d(Y,W,P))}}}}}}for(A.sort(h),O=0;O+1=0?T[S++]=_[M]:A=1&M;if(A===(1&v)){var E=T[0];T[0]=T[1],T[1]=E}y.push(T)}}return y}},{"robust-orientation":284,"simplicial-complex":293}],234:[function(a,l,c){var i=a("binary-search-bounds");function s(S,A,M,E,D){this.mid=S,this.left=A,this.right=M,this.leftPoints=E,this.rightPoints=D,this.count=(A?A.count:0)+(M?M.count:0)+E.length}l.exports=function(S){return!S||S.length===0?new T(null):new T(b(S))};var u=s.prototype;function d(S,A){S.mid=A.mid,S.left=A.left,S.right=A.right,S.leftPoints=A.leftPoints,S.rightPoints=A.rightPoints,S.count=A.count}function h(S,A){var M=b(A);S.mid=M.mid,S.left=M.left,S.right=M.right,S.leftPoints=M.leftPoints,S.rightPoints=M.rightPoints,S.count=M.count}function m(S,A){var M=S.intervals([]);M.push(A),h(S,M)}function g(S,A){var M=S.intervals([]),E=M.indexOf(A);return E<0?0:(M.splice(E,1),h(S,M),1)}function p(S,A,M){for(var E=0;E=0&&S[E][1]>=A;--E){var D=M(S[E]);if(D)return D}}function y(S,A){for(var M=0;M>1],D=[],O=[],R=[];for(M=0;M3*(A+1)?m(this,S):this.left.insert(S):this.left=b([S]);else if(S[0]>this.mid)this.right?4*(this.right.count+1)>3*(A+1)?m(this,S):this.right.insert(S):this.right=b([S]);else{var M=i.ge(this.leftPoints,S,w),E=i.ge(this.rightPoints,S,k);this.leftPoints.splice(M,0,S),this.rightPoints.splice(E,0,S)}},u.remove=function(S){var A=this.count-this.leftPoints;if(S[1]3*(A-1)?g(this,S):(O=this.left.remove(S))===2?(this.left=null,this.count-=1,1):(O===1&&(this.count-=1),O):0;if(S[0]>this.mid)return this.right?4*(this.left?this.left.count:0)>3*(A-1)?g(this,S):(O=this.right.remove(S))===2?(this.right=null,this.count-=1,1):(O===1&&(this.count-=1),O):0;if(this.count===1)return this.leftPoints[0]===S?2:0;if(this.leftPoints.length===1&&this.leftPoints[0]===S){if(this.left&&this.right){for(var M=this,E=this.left;E.right;)M=E,E=E.right;if(M===this)E.right=this.right;else{var D=this.left,O=this.right;M.count-=E.count,M.right=E.left,E.left=D,E.right=O}d(this,E),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?d(this,this.left):d(this,this.right);return 1}for(D=i.ge(this.leftPoints,S,w);Dthis.mid){var M;return this.right&&(M=this.right.queryPoint(S,A))?M:v(this.rightPoints,S,A)}return y(this.leftPoints,A)},u.queryInterval=function(S,A,M){var E;return Sthis.mid&&this.right&&(E=this.right.queryInterval(S,A,M))?E:Athis.mid?v(this.rightPoints,S,M):y(this.leftPoints,M)};var _=T.prototype;_.insert=function(S){this.root?this.root.insert(S):this.root=new s(S[0],null,null,[S],[S])},_.remove=function(S){if(this.root){var A=this.root.remove(S);return A===2&&(this.root=null),A!==0}return!1},_.queryPoint=function(S,A){if(this.root)return this.root.queryPoint(S,A)},_.queryInterval=function(S,A,M){if(S<=A&&this.root)return this.root.queryInterval(S,A,M)},Object.defineProperty(_,"count",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(_,"intervals",{get:function(){return this.root?this.root.intervals([]):[]}})},{"binary-search-bounds":31}],235:[function(a,l,c){l.exports=function(i){for(var s=new Array(i),u=0;u + * @license MIT + */l.exports=function(s){return s!=null&&(i(s)||function(u){return typeof u.readFloatLE=="function"&&typeof u.slice=="function"&&i(u.slice(0,0))}(s)||!!s._isBuffer)}},{}],238:[function(a,l,c){l.exports=u,l.exports.isMobile=u,l.exports.default=u;var i=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,s=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function u(d){d||(d={});var h=d.ua;if(h||typeof navigator>"u"||(h=navigator.userAgent),h&&h.headers&&typeof h.headers["user-agent"]=="string"&&(h=h.headers["user-agent"]),typeof h!="string")return!1;var m=d.tablet?s.test(h):i.test(h);return!m&&d.tablet&&d.featureDetect&&navigator&&navigator.maxTouchPoints>1&&h.indexOf("Macintosh")!==-1&&h.indexOf("Safari")!==-1&&(m=!0),m}},{}],239:[function(a,l,c){l.exports=function(i){for(var s,u=i.length,d=0;d13)&&s!==32&&s!==133&&s!==160&&s!==5760&&s!==6158&&(s<8192||s>8205)&&s!==8232&&s!==8233&&s!==8239&&s!==8287&&s!==8288&&s!==12288&&s!==65279)return!1;return!0}},{}],240:[function(a,l,c){l.exports=function(i,s,u){return i*(1-u)+s*u}},{}],241:[function(a,l,c){var i=a("./normalize"),s=a("gl-mat4/create"),u=a("gl-mat4/clone"),d=a("gl-mat4/determinant"),h=a("gl-mat4/invert"),m=a("gl-mat4/transpose"),g={length:a("gl-vec3/length"),normalize:a("gl-vec3/normalize"),dot:a("gl-vec3/dot"),cross:a("gl-vec3/cross")},p=s(),v=s(),y=[0,0,0,0],x=[[0,0,0],[0,0,0],[0,0,0]],w=[0,0,0];function k(b,T,_,S,A){b[0]=T[0]*S+_[0]*A,b[1]=T[1]*S+_[1]*A,b[2]=T[2]*S+_[2]*A}l.exports=function(b,T,_,S,A,M){if(T||(T=[0,0,0]),_||(_=[0,0,0]),S||(S=[0,0,0]),A||(A=[0,0,0,1]),M||(M=[0,0,0,1]),!i(p,b)||(u(v,p),v[3]=0,v[7]=0,v[11]=0,v[15]=1,Math.abs(d(v)<1e-8)))return!1;var E,D,O,R,z,L,P,N=p[3],B=p[7],G=p[11],W=p[12],K=p[13],te=p[14],Y=p[15];if(N!==0||B!==0||G!==0){if(y[0]=N,y[1]=B,y[2]=G,y[3]=Y,!h(v,v))return!1;m(v,v),E=A,O=v,R=(D=y)[0],z=D[1],L=D[2],P=D[3],E[0]=O[0]*R+O[4]*z+O[8]*L+O[12]*P,E[1]=O[1]*R+O[5]*z+O[9]*L+O[13]*P,E[2]=O[2]*R+O[6]*z+O[10]*L+O[14]*P,E[3]=O[3]*R+O[7]*z+O[11]*L+O[15]*P}else A[0]=A[1]=A[2]=0,A[3]=1;if(T[0]=W,T[1]=K,T[2]=te,function(re,U){re[0][0]=U[0],re[0][1]=U[1],re[0][2]=U[2],re[1][0]=U[4],re[1][1]=U[5],re[1][2]=U[6],re[2][0]=U[8],re[2][1]=U[9],re[2][2]=U[10]}(x,p),_[0]=g.length(x[0]),g.normalize(x[0],x[0]),S[0]=g.dot(x[0],x[1]),k(x[1],x[1],x[0],1,-S[0]),_[1]=g.length(x[1]),g.normalize(x[1],x[1]),S[0]/=_[1],S[1]=g.dot(x[0],x[2]),k(x[2],x[2],x[0],1,-S[1]),S[2]=g.dot(x[1],x[2]),k(x[2],x[2],x[1],1,-S[2]),_[2]=g.length(x[2]),g.normalize(x[2],x[2]),S[1]/=_[2],S[2]/=_[2],g.cross(w,x[1],x[2]),g.dot(x[0],w)<0)for(var Z=0;Z<3;Z++)_[Z]*=-1,x[Z][0]*=-1,x[Z][1]*=-1,x[Z][2]*=-1;return M[0]=.5*Math.sqrt(Math.max(1+x[0][0]-x[1][1]-x[2][2],0)),M[1]=.5*Math.sqrt(Math.max(1-x[0][0]+x[1][1]-x[2][2],0)),M[2]=.5*Math.sqrt(Math.max(1-x[0][0]-x[1][1]+x[2][2],0)),M[3]=.5*Math.sqrt(Math.max(1+x[0][0]+x[1][1]+x[2][2],0)),x[2][1]>x[1][2]&&(M[0]=-M[0]),x[0][2]>x[2][0]&&(M[1]=-M[1]),x[1][0]>x[0][1]&&(M[2]=-M[2]),!0}},{"./normalize":242,"gl-mat4/clone":92,"gl-mat4/create":93,"gl-mat4/determinant":94,"gl-mat4/invert":98,"gl-mat4/transpose":109,"gl-vec3/cross":157,"gl-vec3/dot":162,"gl-vec3/length":172,"gl-vec3/normalize":179}],242:[function(a,l,c){l.exports=function(i,s){var u=s[15];if(u===0)return!1;for(var d=1/u,h=0;h<16;h++)i[h]=s[h]*d;return!0}},{}],243:[function(a,l,c){var i=a("gl-vec3/lerp"),s=a("mat4-recompose"),u=a("mat4-decompose"),d=a("gl-mat4/determinant"),h=a("quat-slerp"),m=v(),g=v(),p=v();function v(){return{translate:y(),scale:y(1),skew:y(),perspective:[0,0,0,1],quaternion:[0,0,0,1]}}function y(x){return[x||0,x||0,x||0]}l.exports=function(x,w,k,b){if(d(w)===0||d(k)===0)return!1;var T=u(w,m.translate,m.scale,m.skew,m.perspective,m.quaternion),_=u(k,g.translate,g.scale,g.skew,g.perspective,g.quaternion);return!(!T||!_)&&(i(p.translate,m.translate,g.translate,b),i(p.skew,m.skew,g.skew,b),i(p.scale,m.scale,g.scale,b),i(p.perspective,m.perspective,g.perspective,b),h(p.quaternion,m.quaternion,g.quaternion,b),s(x,p.translate,p.scale,p.skew,p.perspective,p.quaternion),!0)}},{"gl-mat4/determinant":94,"gl-vec3/lerp":173,"mat4-decompose":241,"mat4-recompose":244,"quat-slerp":271}],244:[function(a,l,c){var i={identity:a("gl-mat4/identity"),translate:a("gl-mat4/translate"),multiply:a("gl-mat4/multiply"),create:a("gl-mat4/create"),scale:a("gl-mat4/scale"),fromRotationTranslation:a("gl-mat4/fromRotationTranslation")},s=(i.create(),i.create());l.exports=function(u,d,h,m,g,p){return i.identity(u),i.fromRotationTranslation(u,p,d),u[3]=g[0],u[7]=g[1],u[11]=g[2],u[15]=g[3],i.identity(s),m[2]!==0&&(s[9]=m[2],i.multiply(u,u,s)),m[1]!==0&&(s[9]=0,s[8]=m[1],i.multiply(u,u,s)),m[0]!==0&&(s[8]=0,s[4]=m[0],i.multiply(u,u,s)),i.scale(u,u,h),u}},{"gl-mat4/create":93,"gl-mat4/fromRotationTranslation":96,"gl-mat4/identity":97,"gl-mat4/multiply":100,"gl-mat4/scale":107,"gl-mat4/translate":108}],245:[function(a,l,c){var i=a("binary-search-bounds"),s=a("mat4-interpolate"),u=a("gl-mat4/invert"),d=a("gl-mat4/rotateX"),h=a("gl-mat4/rotateY"),m=a("gl-mat4/rotateZ"),g=a("gl-mat4/lookAt"),p=a("gl-mat4/translate"),v=(a("gl-mat4/scale"),a("gl-vec3/normalize")),y=[0,0,0];function x(b){this._components=b.slice(),this._time=[0],this.prevMatrix=b.slice(),this.nextMatrix=b.slice(),this.computedMatrix=b.slice(),this.computedInverse=b.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}l.exports=function(b){return new x((b=b||{}).matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])};var w=x.prototype;w.recalcMatrix=function(b){var T=this._time,_=i.le(T,b),S=this.computedMatrix;if(!(_<0)){var A=this._components;if(_===T.length-1)for(var M=16*_,E=0;E<16;++E)S[E]=A[M++];else{var D=T[_+1]-T[_],O=(M=16*_,this.prevMatrix),R=!0;for(E=0;E<16;++E)O[E]=A[M++];var z=this.nextMatrix;for(E=0;E<16;++E)z[E]=A[M++],R=R&&O[E]===z[E];if(D<1e-6||R)for(E=0;E<16;++E)S[E]=O[E];else s(S,O,z,(b-T[_])/D)}var L=this.computedUp;L[0]=S[1],L[1]=S[5],L[2]=S[9],v(L,L);var P=this.computedInverse;u(P,S);var N=this.computedEye,B=P[15];N[0]=P[12]/B,N[1]=P[13]/B,N[2]=P[14]/B;var G=this.computedCenter,W=Math.exp(this.computedRadius[0]);for(E=0;E<3;++E)G[E]=N[E]-S[2+4*E]*W}},w.idle=function(b){if(!(b1&&i(s[g[x-2]],s[g[x-1]],y)<=0;)x-=1,g.pop();for(g.push(v),x=p.length;x>1&&i(s[p[x-2]],s[p[x-1]],y)>=0;)x-=1,p.pop();p.push(v)}d=new Array(p.length+g.length-2);for(var w=0,k=(h=0,g.length);h0;--b)d[w++]=p[b];return d};var i=a("robust-orientation")[3]},{"robust-orientation":284}],247:[function(a,l,c){l.exports=function(s,u){u||(u=s,s=window);var d=0,h=0,m=0,g={shift:!1,alt:!1,control:!1,meta:!1},p=!1;function v(M){var E=!1;return"altKey"in M&&(E=E||M.altKey!==g.alt,g.alt=!!M.altKey),"shiftKey"in M&&(E=E||M.shiftKey!==g.shift,g.shift=!!M.shiftKey),"ctrlKey"in M&&(E=E||M.ctrlKey!==g.control,g.control=!!M.ctrlKey),"metaKey"in M&&(E=E||M.metaKey!==g.meta,g.meta=!!M.metaKey),E}function y(M,E){var D=i.x(E),O=i.y(E);"buttons"in E&&(M=0|E.buttons),(M!==d||D!==h||O!==m||v(E))&&(d=0|M,h=D||0,m=O||0,u&&u(d,h,m,g))}function x(M){y(0,M)}function w(){(d||h||m||g.shift||g.alt||g.meta||g.control)&&(h=m=0,d=0,g.shift=g.alt=g.control=g.meta=!1,u&&u(0,0,0,g))}function k(M){v(M)&&u&&u(d,h,m,g)}function b(M){i.buttons(M)===0?y(0,M):y(d,M)}function T(M){y(d|i.buttons(M),M)}function _(M){y(d&~i.buttons(M),M)}function S(){p||(p=!0,s.addEventListener("mousemove",b),s.addEventListener("mousedown",T),s.addEventListener("mouseup",_),s.addEventListener("mouseleave",x),s.addEventListener("mouseenter",x),s.addEventListener("mouseout",x),s.addEventListener("mouseover",x),s.addEventListener("blur",w),s.addEventListener("keyup",k),s.addEventListener("keydown",k),s.addEventListener("keypress",k),s!==window&&(window.addEventListener("blur",w),window.addEventListener("keyup",k),window.addEventListener("keydown",k),window.addEventListener("keypress",k)))}S();var A={element:s};return Object.defineProperties(A,{enabled:{get:function(){return p},set:function(M){M?S():function(){!p||(p=!1,s.removeEventListener("mousemove",b),s.removeEventListener("mousedown",T),s.removeEventListener("mouseup",_),s.removeEventListener("mouseleave",x),s.removeEventListener("mouseenter",x),s.removeEventListener("mouseout",x),s.removeEventListener("mouseover",x),s.removeEventListener("blur",w),s.removeEventListener("keyup",k),s.removeEventListener("keydown",k),s.removeEventListener("keypress",k),s!==window&&(window.removeEventListener("blur",w),window.removeEventListener("keyup",k),window.removeEventListener("keydown",k),window.removeEventListener("keypress",k)))}()},enumerable:!0},buttons:{get:function(){return d},enumerable:!0},x:{get:function(){return h},enumerable:!0},y:{get:function(){return m},enumerable:!0},mods:{get:function(){return g},enumerable:!0}}),A};var i=a("mouse-event")},{"mouse-event":249}],248:[function(a,l,c){var i={left:0,top:0};l.exports=function(s,u,d){u=u||s.currentTarget||s.srcElement,Array.isArray(d)||(d=[0,0]);var h=s.clientX||0,m=s.clientY||0,g=(p=u,p===window||p===document||p===document.body?i:p.getBoundingClientRect()),p;return d[0]=h-g.left,d[1]=m-g.top,d}},{}],249:[function(a,l,c){function i(s){return s.target||s.srcElement||window}c.buttons=function(s){if(typeof s=="object"){if("buttons"in s)return s.buttons;if("which"in s){if((u=s.which)===2)return 4;if(u===3)return 2;if(u>0)return 1<=0)return 1< 0"),typeof u.vertex!="function"&&d("Must specify vertex creation function"),typeof u.cell!="function"&&d("Must specify cell creation function"),typeof u.phase!="function"&&d("Must specify phase function");for(var p=u.getters||[],v=new Array(m),y=0;y=0?v[y]=!0:v[y]=!1;return function(x,w,k,b,T,_){var S=[_,T].join(",");return(0,s[S])(x,w,k,i.mallocUint32,i.freeUint32)}(u.vertex,u.cell,u.phase,0,h,v)};var s={"false,0,1":function(u,d,h,m,g){return function(p,v,y,x){var w,k=0|p.shape[0],b=0|p.shape[1],T=p.data,_=0|p.offset,S=0|p.stride[0],A=0|p.stride[1],M=_,E=0|-S,D=0,O=0|-A,R=0,z=-S-A|0,L=0,P=0|S,N=A-S*k|0,B=0,G=0,W=0,K=2*k|0,te=m(K),Y=m(K),Z=0,re=0,U=-1,q=-1,$=0,ne=0|-k,H=0|k,Q=0,ee=-k-1|0,ie=k-1|0,ae=0,ue=0,le=0;for(B=0;B0){if(G=1,te[Z++]=h(T[M],v,y,x),M+=P,k>0)for(B=1,w=T[M],re=te[Z]=h(w,v,y,x),$=te[Z+U],Q=te[Z+ne],ae=te[Z+ee],re===$&&re===Q&&re===ae||(D=T[M+E],R=T[M+O],L=T[M+z],u(B,G,w,D,R,L,re,$,Q,ae,v,y,x),ue=Y[Z]=W++),Z+=1,M+=P,B=2;B0)for(B=1,w=T[M],re=te[Z]=h(w,v,y,x),$=te[Z+U],Q=te[Z+ne],ae=te[Z+ee],re===$&&re===Q&&re===ae||(D=T[M+E],R=T[M+O],L=T[M+z],u(B,G,w,D,R,L,re,$,Q,ae,v,y,x),ue=Y[Z]=W++,ae!==Q&&d(Y[Z+ne],ue,R,L,Q,ae,v,y,x)),Z+=1,M+=P,B=2;B0){if(B=1,te[Z++]=h(T[M],v,y,x),M+=P,b>0)for(G=1,w=T[M],re=te[Z]=h(w,v,y,x),Q=te[Z+ne],$=te[Z+U],ae=te[Z+ee],re===Q&&re===$&&re===ae||(D=T[M+E],R=T[M+O],L=T[M+z],u(B,G,w,D,R,L,re,Q,$,ae,v,y,x),ue=Y[Z]=W++),Z+=1,M+=P,G=2;G0)for(G=1,w=T[M],re=te[Z]=h(w,v,y,x),Q=te[Z+ne],$=te[Z+U],ae=te[Z+ee],re===Q&&re===$&&re===ae||(D=T[M+E],R=T[M+O],L=T[M+z],u(B,G,w,D,R,L,re,Q,$,ae,v,y,x),ue=Y[Z]=W++,ae!==Q&&d(Y[Z+ne],ue,L,D,ae,Q,v,y,x)),Z+=1,M+=P,G=2;G2&&M[1]>2&&_(A.pick(-1,-1).lo(1,1).hi(M[0]-2,M[1]-2),S.pick(-1,-1,0).lo(1,1).hi(M[0]-2,M[1]-2),S.pick(-1,-1,1).lo(1,1).hi(M[0]-2,M[1]-2)),M[1]>2&&(T(A.pick(0,-1).lo(1).hi(M[1]-2),S.pick(0,-1,1).lo(1).hi(M[1]-2)),b(S.pick(0,-1,0).lo(1).hi(M[1]-2))),M[1]>2&&(T(A.pick(M[0]-1,-1).lo(1).hi(M[1]-2),S.pick(M[0]-1,-1,1).lo(1).hi(M[1]-2)),b(S.pick(M[0]-1,-1,0).lo(1).hi(M[1]-2))),M[0]>2&&(T(A.pick(-1,0).lo(1).hi(M[0]-2),S.pick(-1,0,0).lo(1).hi(M[0]-2)),b(S.pick(-1,0,1).lo(1).hi(M[0]-2))),M[0]>2&&(T(A.pick(-1,M[1]-1).lo(1).hi(M[0]-2),S.pick(-1,M[1]-1,0).lo(1).hi(M[0]-2)),b(S.pick(-1,M[1]-1,1).lo(1).hi(M[0]-2))),S.set(0,0,0,0),S.set(0,0,1,0),S.set(M[0]-1,0,0,0),S.set(M[0]-1,0,1,0),S.set(0,M[1]-1,0,0),S.set(0,M[1]-1,1,0),S.set(M[0]-1,M[1]-1,0,0),S.set(M[0]-1,M[1]-1,1,0),S}}l.exports=function(k,b,T){return Array.isArray(T)||(T=i(b.dimension,typeof T=="string"?T:"clamp")),b.size===0?k:b.dimension===0?(k.set(0),k):function(_){var S=_.join();if(D=p[S])return D;for(var A=_.length,M=[v,y],E=1;E<=A;++E)M.push(x(E));var D=w.apply(void 0,M);return p[S]=D,D}(T)(k,b)}},{dup:65}],253:[function(a,l,c){function i(h,m){var g=Math.floor(m),p=m-g,v=0<=g&&g0;){L<64?(b=L,L=0):(b=64,L-=64);for(var P=0|m[1];P>0;){P<64?(T=P,P=0):(T=64,P-=64),v=R+L*S+P*A,w=z+L*E+P*D;var N=0,B=0,G=0,W=M,K=S-_*M,te=A-b*S,Y=O,Z=E-_*O,re=D-b*E;for(G=0;G0;){D<64?(b=D,D=0):(b=64,D-=64);for(var O=0|m[0];O>0;){O<64?(k=O,O=0):(k=64,O-=64),v=M+D*_+O*T,w=E+D*A+O*S;var R=0,z=0,L=_,P=T-b*_,N=A,B=S-b*A;for(z=0;z0;){z<64?(T=z,z=0):(T=64,z-=64);for(var L=0|m[0];L>0;){L<64?(k=L,L=0):(k=64,L-=64);for(var P=0|m[1];P>0;){P<64?(b=P,P=0):(b=64,P-=64),v=O+z*A+L*_+P*S,w=R+z*D+L*M+P*E;var N=0,B=0,G=0,W=A,K=_-T*A,te=S-k*_,Y=D,Z=M-T*D,re=E-k*M;for(G=0;Gp;){R=0,z=D-w;t:for(O=0;OP)break t;z+=S,R+=A}for(R=D,z=D-w,O=0;O>1,_e=me-le,we=me+le,Te=ge,Oe=_e,de=me,ye=we,Me=fe,ke=y+1,Ee=x-1,ze=!0,Fe=0,Ve=0,Ke=0,Re=S,qe=g(Re),We=g(Re);K=b*Te,te=b*Oe,ue=k;e:for(W=0;W0){O=Te,Te=Oe,Oe=O;break e}if(Ke<0)break e;ue+=M}K=b*ye,te=b*Me,ue=k;e:for(W=0;W0){O=ye,ye=Me,Me=O;break e}if(Ke<0)break e;ue+=M}K=b*Te,te=b*de,ue=k;e:for(W=0;W0){O=Te,Te=de,de=O;break e}if(Ke<0)break e;ue+=M}K=b*Oe,te=b*de,ue=k;e:for(W=0;W0){O=Oe,Oe=de,de=O;break e}if(Ke<0)break e;ue+=M}K=b*Te,te=b*ye,ue=k;e:for(W=0;W0){O=Te,Te=ye,ye=O;break e}if(Ke<0)break e;ue+=M}K=b*de,te=b*ye,ue=k;e:for(W=0;W0){O=de,de=ye,ye=O;break e}if(Ke<0)break e;ue+=M}K=b*Oe,te=b*Me,ue=k;e:for(W=0;W0){O=Oe,Oe=Me,Me=O;break e}if(Ke<0)break e;ue+=M}K=b*Oe,te=b*de,ue=k;e:for(W=0;W0){O=Oe,Oe=de,de=O;break e}if(Ke<0)break e;ue+=M}K=b*ye,te=b*Me,ue=k;e:for(W=0;W0){O=ye,ye=Me,Me=O;break e}if(Ke<0)break e;ue+=M}for(K=b*Te,te=b*Oe,Y=b*de,Z=b*ye,re=b*Me,U=b*ge,q=b*me,$=b*fe,ae=0,ue=k,W=0;W0)){if(Ke<0){for(K=b*P,te=b*ke,Y=b*Ee,ue=k,W=0;W0)for(;;){for(N=k+Ee*b,ae=0,W=0;W0)){for(N=k+Ee*b,ae=0,W=0;Wfe){e:for(;;){for(N=k+ke*b,ae=0,ue=k,W=0;W1&&T?S(b,T[0],T[1]):S(b)}(m,g,y);return v(y,x)}},{"typedarray-pool":308}],258:[function(a,l,c){var i=a("./lib/compile_sort.js"),s={};l.exports=function(u){var d=u.order,h=u.dtype,m=[d,h].join(":"),g=s[m];return g||(s[m]=g=i(d,h)),g(u),u}},{"./lib/compile_sort.js":257}],259:[function(a,l,c){var i=a("is-buffer"),s=typeof Float64Array<"u";function u(p,v){return p[0]-v[0]}function d(){var p,v=this.stride,y=new Array(v.length);for(p=0;p=0&&(b+=S*(T=0|k),_-=T),new x(this.data,_,S,b)},w.step=function(k){var b=this.shape[0],T=this.stride[0],_=this.offset,S=0,A=Math.ceil;return typeof k=="number"&&((S=0|k)<0?(_+=T*(b-1),b=A(-b/S)):b=A(b/S),T*=S),new x(this.data,b,T,_)},w.transpose=function(k){k=k===void 0?0:0|k;var b=this.shape,T=this.stride;return new x(this.data,b[k],T[k],this.offset)},w.pick=function(k){var b=[],T=[],_=this.offset;return typeof k=="number"&&k>=0?_=_+this.stride[0]*k|0:(b.push(this.shape[0]),T.push(this.stride[0])),(0,v[b.length+1])(this.data,b,T,_)},function(k,b,T,_){return new x(k,b[0],T[0],_)}},2:function(p,v,y){function x(k,b,T,_,S,A){this.data=k,this.shape=[b,T],this.stride=[_,S],this.offset=0|A}var w=x.prototype;return w.dtype=p,w.dimension=2,Object.defineProperty(w,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(w,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),w.set=function(k,b,T){return p==="generic"?this.data.set(this.offset+this.stride[0]*k+this.stride[1]*b,T):this.data[this.offset+this.stride[0]*k+this.stride[1]*b]=T},w.get=function(k,b){return p==="generic"?this.data.get(this.offset+this.stride[0]*k+this.stride[1]*b):this.data[this.offset+this.stride[0]*k+this.stride[1]*b]},w.index=function(k,b){return this.offset+this.stride[0]*k+this.stride[1]*b},w.hi=function(k,b){return new x(this.data,typeof k!="number"||k<0?this.shape[0]:0|k,typeof b!="number"||b<0?this.shape[1]:0|b,this.stride[0],this.stride[1],this.offset)},w.lo=function(k,b){var T=this.offset,_=0,S=this.shape[0],A=this.shape[1],M=this.stride[0],E=this.stride[1];return typeof k=="number"&&k>=0&&(T+=M*(_=0|k),S-=_),typeof b=="number"&&b>=0&&(T+=E*(_=0|b),A-=_),new x(this.data,S,A,M,E,T)},w.step=function(k,b){var T=this.shape[0],_=this.shape[1],S=this.stride[0],A=this.stride[1],M=this.offset,E=0,D=Math.ceil;return typeof k=="number"&&((E=0|k)<0?(M+=S*(T-1),T=D(-T/E)):T=D(T/E),S*=E),typeof b=="number"&&((E=0|b)<0?(M+=A*(_-1),_=D(-_/E)):_=D(_/E),A*=E),new x(this.data,T,_,S,A,M)},w.transpose=function(k,b){k=k===void 0?0:0|k,b=b===void 0?1:0|b;var T=this.shape,_=this.stride;return new x(this.data,T[k],T[b],_[k],_[b],this.offset)},w.pick=function(k,b){var T=[],_=[],S=this.offset;return typeof k=="number"&&k>=0?S=S+this.stride[0]*k|0:(T.push(this.shape[0]),_.push(this.stride[0])),typeof b=="number"&&b>=0?S=S+this.stride[1]*b|0:(T.push(this.shape[1]),_.push(this.stride[1])),(0,v[T.length+1])(this.data,T,_,S)},function(k,b,T,_){return new x(k,b[0],b[1],T[0],T[1],_)}},3:function(p,v,y){function x(k,b,T,_,S,A,M,E){this.data=k,this.shape=[b,T,_],this.stride=[S,A,M],this.offset=0|E}var w=x.prototype;return w.dtype=p,w.dimension=3,Object.defineProperty(w,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(w,"order",{get:function(){var k=Math.abs(this.stride[0]),b=Math.abs(this.stride[1]),T=Math.abs(this.stride[2]);return k>b?b>T?[2,1,0]:k>T?[1,2,0]:[1,0,2]:k>T?[2,0,1]:T>b?[0,1,2]:[0,2,1]}}),w.set=function(k,b,T,_){return p==="generic"?this.data.set(this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T,_):this.data[this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T]=_},w.get=function(k,b,T){return p==="generic"?this.data.get(this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T):this.data[this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T]},w.index=function(k,b,T){return this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T},w.hi=function(k,b,T){return new x(this.data,typeof k!="number"||k<0?this.shape[0]:0|k,typeof b!="number"||b<0?this.shape[1]:0|b,typeof T!="number"||T<0?this.shape[2]:0|T,this.stride[0],this.stride[1],this.stride[2],this.offset)},w.lo=function(k,b,T){var _=this.offset,S=0,A=this.shape[0],M=this.shape[1],E=this.shape[2],D=this.stride[0],O=this.stride[1],R=this.stride[2];return typeof k=="number"&&k>=0&&(_+=D*(S=0|k),A-=S),typeof b=="number"&&b>=0&&(_+=O*(S=0|b),M-=S),typeof T=="number"&&T>=0&&(_+=R*(S=0|T),E-=S),new x(this.data,A,M,E,D,O,R,_)},w.step=function(k,b,T){var _=this.shape[0],S=this.shape[1],A=this.shape[2],M=this.stride[0],E=this.stride[1],D=this.stride[2],O=this.offset,R=0,z=Math.ceil;return typeof k=="number"&&((R=0|k)<0?(O+=M*(_-1),_=z(-_/R)):_=z(_/R),M*=R),typeof b=="number"&&((R=0|b)<0?(O+=E*(S-1),S=z(-S/R)):S=z(S/R),E*=R),typeof T=="number"&&((R=0|T)<0?(O+=D*(A-1),A=z(-A/R)):A=z(A/R),D*=R),new x(this.data,_,S,A,M,E,D,O)},w.transpose=function(k,b,T){k=k===void 0?0:0|k,b=b===void 0?1:0|b,T=T===void 0?2:0|T;var _=this.shape,S=this.stride;return new x(this.data,_[k],_[b],_[T],S[k],S[b],S[T],this.offset)},w.pick=function(k,b,T){var _=[],S=[],A=this.offset;return typeof k=="number"&&k>=0?A=A+this.stride[0]*k|0:(_.push(this.shape[0]),S.push(this.stride[0])),typeof b=="number"&&b>=0?A=A+this.stride[1]*b|0:(_.push(this.shape[1]),S.push(this.stride[1])),typeof T=="number"&&T>=0?A=A+this.stride[2]*T|0:(_.push(this.shape[2]),S.push(this.stride[2])),(0,v[_.length+1])(this.data,_,S,A)},function(k,b,T,_){return new x(k,b[0],b[1],b[2],T[0],T[1],T[2],_)}},4:function(p,v,y){function x(k,b,T,_,S,A,M,E,D,O){this.data=k,this.shape=[b,T,_,S],this.stride=[A,M,E,D],this.offset=0|O}var w=x.prototype;return w.dtype=p,w.dimension=4,Object.defineProperty(w,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(w,"order",{get:y}),w.set=function(k,b,T,_,S){return p==="generic"?this.data.set(this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_,S):this.data[this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_]=S},w.get=function(k,b,T,_){return p==="generic"?this.data.get(this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_):this.data[this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_]},w.index=function(k,b,T,_){return this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_},w.hi=function(k,b,T,_){return new x(this.data,typeof k!="number"||k<0?this.shape[0]:0|k,typeof b!="number"||b<0?this.shape[1]:0|b,typeof T!="number"||T<0?this.shape[2]:0|T,typeof _!="number"||_<0?this.shape[3]:0|_,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},w.lo=function(k,b,T,_){var S=this.offset,A=0,M=this.shape[0],E=this.shape[1],D=this.shape[2],O=this.shape[3],R=this.stride[0],z=this.stride[1],L=this.stride[2],P=this.stride[3];return typeof k=="number"&&k>=0&&(S+=R*(A=0|k),M-=A),typeof b=="number"&&b>=0&&(S+=z*(A=0|b),E-=A),typeof T=="number"&&T>=0&&(S+=L*(A=0|T),D-=A),typeof _=="number"&&_>=0&&(S+=P*(A=0|_),O-=A),new x(this.data,M,E,D,O,R,z,L,P,S)},w.step=function(k,b,T,_){var S=this.shape[0],A=this.shape[1],M=this.shape[2],E=this.shape[3],D=this.stride[0],O=this.stride[1],R=this.stride[2],z=this.stride[3],L=this.offset,P=0,N=Math.ceil;return typeof k=="number"&&((P=0|k)<0?(L+=D*(S-1),S=N(-S/P)):S=N(S/P),D*=P),typeof b=="number"&&((P=0|b)<0?(L+=O*(A-1),A=N(-A/P)):A=N(A/P),O*=P),typeof T=="number"&&((P=0|T)<0?(L+=R*(M-1),M=N(-M/P)):M=N(M/P),R*=P),typeof _=="number"&&((P=0|_)<0?(L+=z*(E-1),E=N(-E/P)):E=N(E/P),z*=P),new x(this.data,S,A,M,E,D,O,R,z,L)},w.transpose=function(k,b,T,_){k=k===void 0?0:0|k,b=b===void 0?1:0|b,T=T===void 0?2:0|T,_=_===void 0?3:0|_;var S=this.shape,A=this.stride;return new x(this.data,S[k],S[b],S[T],S[_],A[k],A[b],A[T],A[_],this.offset)},w.pick=function(k,b,T,_){var S=[],A=[],M=this.offset;return typeof k=="number"&&k>=0?M=M+this.stride[0]*k|0:(S.push(this.shape[0]),A.push(this.stride[0])),typeof b=="number"&&b>=0?M=M+this.stride[1]*b|0:(S.push(this.shape[1]),A.push(this.stride[1])),typeof T=="number"&&T>=0?M=M+this.stride[2]*T|0:(S.push(this.shape[2]),A.push(this.stride[2])),typeof _=="number"&&_>=0?M=M+this.stride[3]*_|0:(S.push(this.shape[3]),A.push(this.stride[3])),(0,v[S.length+1])(this.data,S,A,M)},function(k,b,T,_){return new x(k,b[0],b[1],b[2],b[3],T[0],T[1],T[2],T[3],_)}},5:function(p,v,y){function x(k,b,T,_,S,A,M,E,D,O,R,z){this.data=k,this.shape=[b,T,_,S,A],this.stride=[M,E,D,O,R],this.offset=0|z}var w=x.prototype;return w.dtype=p,w.dimension=5,Object.defineProperty(w,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(w,"order",{get:y}),w.set=function(k,b,T,_,S,A){return p==="generic"?this.data.set(this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_+this.stride[4]*S,A):this.data[this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_+this.stride[4]*S]=A},w.get=function(k,b,T,_,S){return p==="generic"?this.data.get(this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_+this.stride[4]*S):this.data[this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_+this.stride[4]*S]},w.index=function(k,b,T,_,S){return this.offset+this.stride[0]*k+this.stride[1]*b+this.stride[2]*T+this.stride[3]*_+this.stride[4]*S},w.hi=function(k,b,T,_,S){return new x(this.data,typeof k!="number"||k<0?this.shape[0]:0|k,typeof b!="number"||b<0?this.shape[1]:0|b,typeof T!="number"||T<0?this.shape[2]:0|T,typeof _!="number"||_<0?this.shape[3]:0|_,typeof S!="number"||S<0?this.shape[4]:0|S,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},w.lo=function(k,b,T,_,S){var A=this.offset,M=0,E=this.shape[0],D=this.shape[1],O=this.shape[2],R=this.shape[3],z=this.shape[4],L=this.stride[0],P=this.stride[1],N=this.stride[2],B=this.stride[3],G=this.stride[4];return typeof k=="number"&&k>=0&&(A+=L*(M=0|k),E-=M),typeof b=="number"&&b>=0&&(A+=P*(M=0|b),D-=M),typeof T=="number"&&T>=0&&(A+=N*(M=0|T),O-=M),typeof _=="number"&&_>=0&&(A+=B*(M=0|_),R-=M),typeof S=="number"&&S>=0&&(A+=G*(M=0|S),z-=M),new x(this.data,E,D,O,R,z,L,P,N,B,G,A)},w.step=function(k,b,T,_,S){var A=this.shape[0],M=this.shape[1],E=this.shape[2],D=this.shape[3],O=this.shape[4],R=this.stride[0],z=this.stride[1],L=this.stride[2],P=this.stride[3],N=this.stride[4],B=this.offset,G=0,W=Math.ceil;return typeof k=="number"&&((G=0|k)<0?(B+=R*(A-1),A=W(-A/G)):A=W(A/G),R*=G),typeof b=="number"&&((G=0|b)<0?(B+=z*(M-1),M=W(-M/G)):M=W(M/G),z*=G),typeof T=="number"&&((G=0|T)<0?(B+=L*(E-1),E=W(-E/G)):E=W(E/G),L*=G),typeof _=="number"&&((G=0|_)<0?(B+=P*(D-1),D=W(-D/G)):D=W(D/G),P*=G),typeof S=="number"&&((G=0|S)<0?(B+=N*(O-1),O=W(-O/G)):O=W(O/G),N*=G),new x(this.data,A,M,E,D,O,R,z,L,P,N,B)},w.transpose=function(k,b,T,_,S){k=k===void 0?0:0|k,b=b===void 0?1:0|b,T=T===void 0?2:0|T,_=_===void 0?3:0|_,S=S===void 0?4:0|S;var A=this.shape,M=this.stride;return new x(this.data,A[k],A[b],A[T],A[_],A[S],M[k],M[b],M[T],M[_],M[S],this.offset)},w.pick=function(k,b,T,_,S){var A=[],M=[],E=this.offset;return typeof k=="number"&&k>=0?E=E+this.stride[0]*k|0:(A.push(this.shape[0]),M.push(this.stride[0])),typeof b=="number"&&b>=0?E=E+this.stride[1]*b|0:(A.push(this.shape[1]),M.push(this.stride[1])),typeof T=="number"&&T>=0?E=E+this.stride[2]*T|0:(A.push(this.shape[2]),M.push(this.stride[2])),typeof _=="number"&&_>=0?E=E+this.stride[3]*_|0:(A.push(this.shape[3]),M.push(this.stride[3])),typeof S=="number"&&S>=0?E=E+this.stride[4]*S|0:(A.push(this.shape[4]),M.push(this.stride[4])),(0,v[A.length+1])(this.data,A,M,E)},function(k,b,T,_){return new x(k,b[0],b[1],b[2],b[3],b[4],T[0],T[1],T[2],T[3],T[4],_)}}};function m(p,v){var y=v===-1?"T":String(v),x=h[y];return v===-1?x(p):v===0?x(p,g[p][0]):x(p,g[p],d)}var g={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};l.exports=function(p,v,y,x){if(p===void 0)return(0,g.array[0])([]);typeof p=="number"&&(p=[p]),v===void 0&&(v=[p.length]);var w=v.length;if(y===void 0){y=new Array(w);for(var k=w-1,b=1;k>=0;--k)y[k]=b,b*=v[k]}if(x===void 0)for(x=0,k=0;ku==u>0?m===-1>>>0?(h+=1,m=0):m+=1:m===0?(m=-1>>>0,h-=1):m-=1,i.pack(m,h)}},{"double-bits":64}],261:[function(a,l,c){c.vertexNormals=function(i,s,u){for(var d=s.length,h=new Array(d),m=u===void 0?1e-6:u,g=0;gm){var D=h[y],O=1/Math.sqrt(S*M);for(E=0;E<3;++E){var R=(E+1)%3,z=(E+2)%3;D[E]+=O*(A[R]*_[z]-A[z]*_[R])}}}for(g=0;gm)for(O=1/Math.sqrt(L),E=0;E<3;++E)D[E]*=O;else for(E=0;E<3;++E)D[E]=0}return h},c.faceNormals=function(i,s,u){for(var d=i.length,h=new Array(d),m=u===void 0?1e-6:u,g=0;gm?1/Math.sqrt(b):0,y=0;y<3;++y)k[y]*=b;h[g]=k}return h}},{}],262:[function(a,l,c){l.exports=function(i,s,u,d,h,m,g,p,v,y){var x=s+m+y;if(w>0){var w=Math.sqrt(x+1);i[0]=.5*(g-v)/w,i[1]=.5*(p-d)/w,i[2]=.5*(u-m)/w,i[3]=.5*w}else{var k=Math.max(s,m,y);w=Math.sqrt(2*k-x+1),s>=k?(i[0]=.5*w,i[1]=.5*(h+u)/w,i[2]=.5*(p+d)/w,i[3]=.5*(g-v)/w):m>=k?(i[0]=.5*(u+h)/w,i[1]=.5*w,i[2]=.5*(v+g)/w,i[3]=.5*(p-d)/w):(i[0]=.5*(d+p)/w,i[1]=.5*(g+v)/w,i[2]=.5*w,i[3]=.5*(u-h)/w)}return i}},{}],263:[function(a,l,c){l.exports=function(x){var w=(x=x||{}).center||[0,0,0],k=x.rotation||[0,0,0,1],b=x.radius||1;w=[].slice.call(w,0,3),p(k=[].slice.call(k,0,4),k);var T=new v(k,w,Math.log(b));return T.setDistanceLimits(x.zoomMin,x.zoomMax),("eye"in x||"up"in x)&&T.lookAt(0,x.eye,x.center,x.up),T};var i=a("filtered-vector"),s=a("gl-mat4/lookAt"),u=a("gl-mat4/fromQuat"),d=a("gl-mat4/invert"),h=a("./lib/quatFromFrame");function m(x,w,k){return Math.sqrt(Math.pow(x,2)+Math.pow(w,2)+Math.pow(k,2))}function g(x,w,k,b){return Math.sqrt(Math.pow(x,2)+Math.pow(w,2)+Math.pow(k,2)+Math.pow(b,2))}function p(x,w){var k=w[0],b=w[1],T=w[2],_=w[3],S=g(k,b,T,_);S>1e-6?(x[0]=k/S,x[1]=b/S,x[2]=T/S,x[3]=_/S):(x[0]=x[1]=x[2]=0,x[3]=1)}function v(x,w,k){this.radius=i([k]),this.center=i(w),this.rotation=i(x),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var y=v.prototype;y.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},y.recalcMatrix=function(x){this.radius.curve(x),this.center.curve(x),this.rotation.curve(x);var w=this.computedRotation;p(w,w);var k=this.computedMatrix;u(k,w);var b=this.computedCenter,T=this.computedEye,_=this.computedUp,S=Math.exp(this.computedRadius[0]);T[0]=b[0]+S*k[2],T[1]=b[1]+S*k[6],T[2]=b[2]+S*k[10],_[0]=k[1],_[1]=k[5],_[2]=k[9];for(var A=0;A<3;++A){for(var M=0,E=0;E<3;++E)M+=k[A+4*E]*T[E];k[12+A]=-M}},y.getMatrix=function(x,w){this.recalcMatrix(x);var k=this.computedMatrix;if(w){for(var b=0;b<16;++b)w[b]=k[b];return w}return k},y.idle=function(x){this.center.idle(x),this.radius.idle(x),this.rotation.idle(x)},y.flush=function(x){this.center.flush(x),this.radius.flush(x),this.rotation.flush(x)},y.pan=function(x,w,k,b){w=w||0,k=k||0,b=b||0,this.recalcMatrix(x);var T=this.computedMatrix,_=T[1],S=T[5],A=T[9],M=m(_,S,A);_/=M,S/=M,A/=M;var E=T[0],D=T[4],O=T[8],R=E*_+D*S+O*A,z=m(E-=_*R,D-=S*R,O-=A*R);E/=z,D/=z,O/=z,T[2],T[6],T[10];var L=E*w+_*k,P=D*w+S*k,N=O*w+A*k;this.center.move(x,L,P,N);var B=Math.exp(this.computedRadius[0]);B=Math.max(1e-4,B+b),this.radius.set(x,Math.log(B))},y.rotate=function(x,w,k,b){this.recalcMatrix(x),w=w||0,k=k||0;var T=this.computedMatrix,_=T[0],S=T[4],A=T[8],M=T[1],E=T[5],D=T[9],O=T[2],R=T[6],z=T[10],L=w*_+k*M,P=w*S+k*E,N=w*A+k*D,B=-(R*N-z*P),G=-(z*L-O*N),W=-(O*P-R*L),K=Math.sqrt(Math.max(0,1-Math.pow(B,2)-Math.pow(G,2)-Math.pow(W,2))),te=g(B,G,W,K);te>1e-6?(B/=te,G/=te,W/=te,K/=te):(B=G=W=0,K=1);var Y=this.computedRotation,Z=Y[0],re=Y[1],U=Y[2],q=Y[3],$=Z*K+q*B+re*W-U*G,ne=re*K+q*G+U*B-Z*W,H=U*K+q*W+Z*G-re*B,Q=q*K-Z*B-re*G-U*W;if(b){B=O,G=R,W=z;var ee=Math.sin(b)/m(B,G,W);B*=ee,G*=ee,W*=ee,Q=Q*(K=Math.cos(w))-($=$*K+Q*B+ne*W-H*G)*B-(ne=ne*K+Q*G+H*B-$*W)*G-(H=H*K+Q*W+$*G-ne*B)*W}var ie=g($,ne,H,Q);ie>1e-6?($/=ie,ne/=ie,H/=ie,Q/=ie):($=ne=H=0,Q=1),this.rotation.set(x,$,ne,H,Q)},y.lookAt=function(x,w,k,b){this.recalcMatrix(x),k=k||this.computedCenter,w=w||this.computedEye,b=b||this.computedUp;var T=this.computedMatrix;s(T,w,k,b);var _=this.computedRotation;h(_,T[0],T[1],T[2],T[4],T[5],T[6],T[8],T[9],T[10]),p(_,_),this.rotation.set(x,_[0],_[1],_[2],_[3]);for(var S=0,A=0;A<3;++A)S+=Math.pow(k[A]-w[A],2);this.radius.set(x,.5*Math.log(Math.max(S,1e-6))),this.center.set(x,k[0],k[1],k[2])},y.translate=function(x,w,k,b){this.center.move(x,w||0,k||0,b||0)},y.setMatrix=function(x,w){var k=this.computedRotation;h(k,w[0],w[1],w[2],w[4],w[5],w[6],w[8],w[9],w[10]),p(k,k),this.rotation.set(x,k[0],k[1],k[2],k[3]);var b=this.computedMatrix;d(b,w);var T=b[15];if(Math.abs(T)>1e-6){var _=b[12]/T,S=b[13]/T,A=b[14]/T;this.recalcMatrix(x);var M=Math.exp(this.computedRadius[0]);this.center.set(x,_-b[2]*M,S-b[6]*M,A-b[10]*M),this.radius.idle(x)}else this.center.idle(x),this.radius.idle(x)},y.setDistance=function(x,w){w>0&&this.radius.set(x,Math.log(w))},y.setDistanceLimits=function(x,w){x=x>0?Math.log(x):-1/0,w=w>0?Math.log(w):1/0,w=Math.max(w,x),this.radius.bounds[0][0]=x,this.radius.bounds[1][0]=w},y.getDistanceLimits=function(x){var w=this.radius.bounds;return x?(x[0]=Math.exp(w[0][0]),x[1]=Math.exp(w[1][0]),x):[Math.exp(w[0][0]),Math.exp(w[1][0])]},y.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},y.fromJSON=function(x){var w=this.lastT(),k=x.center;k&&this.center.set(w,k[0],k[1],k[2]);var b=x.rotation;b&&this.rotation.set(w,b[0],b[1],b[2],b[3]);var T=x.distance;T&&T>0&&this.radius.set(w,Math.log(T)),this.setDistanceLimits(x.zoomMin,x.zoomMax)}},{"./lib/quatFromFrame":262,"filtered-vector":68,"gl-mat4/fromQuat":95,"gl-mat4/invert":98,"gl-mat4/lookAt":99}],264:[function(a,l,c){var i=a("repeat-string");l.exports=function(s,u,d){return i(d=d!==void 0?d+"":" ",u)+s}},{"repeat-string":277}],265:[function(a,l,c){l.exports=function(i,s){s||(s=[0,""]),i=String(i);var u=parseFloat(i,10);return s[0]=u,s[1]=i.match(/[\d.\-\+]*\s*(.*)/)[1]||"",s}},{}],266:[function(a,l,c){l.exports=function(s,u){for(var d=0|u.length,h=s.length,m=[new Array(d),new Array(d)],g=0;g0){E=m[R][A][0],O=R;break}D=E[1^O];for(var z=0;z<2;++z)for(var L=m[z][A],P=0;P0&&(E=N,D=B,O=z)}return M||E&&y(E,O),D}function w(S,A){var M=m[A][S][0],E=[S];y(M,A);for(var D=M[1^A];;){for(;D!==S;)E.push(D),D=x(E[E.length-2],D,!1);if(m[0][S].length+m[1][S].length===0)break;var O=E[E.length-1],R=S,z=E[1],L=x(O,R,!0);if(i(u[O],u[R],u[z],u[L])<0)break;E.push(S),D=x(O,R)}return E}function k(S,A){return A[1]===A[A.length-1]}for(g=0;g0;){m[0][g].length;var _=w(g,b);k(0,_)?T.push.apply(T,_):(T.length>0&&v.push(T),T=_)}T.length>0&&v.push(T)}return v};var i=a("compare-angle")},{"compare-angle":54}],267:[function(a,l,c){l.exports=function(s,u){for(var d=i(s,u.length),h=new Array(u.length),m=new Array(u.length),g=[],p=0;p0;){var y=g.pop();h[y]=!1;var x=d[y];for(p=0;p0})).length,S=new Array(_),A=new Array(_);for(b=0;b<_;++b){S[b]=b;var M=new Array(_),E=T[b].map(function(le){return y[le]}),D=u([E]),O=0;e:for(var R=0;R<_;++R)if(M[R]=0,b!==R){for(var z=(ae=T[R]).length,L=0;L0;){var ne=q.pop(),H=G[ne];m(H,function(le,ge){return le-ge});var Q,ee=H.length,ie=$[ne];if(ie===0){var ae=T[ne];Q=[ae]}for(b=0;b=0||($[ue]=1^ie,q.push(ue),ie===0&&(U(ae=T[ue])||(ae.reverse(),Q.push(ae))))}ie===0&&x.push(Q)}return x};var i=a("edges-to-adjacency-list"),s=a("planar-dual"),u=a("point-in-big-polygon"),d=a("two-product"),h=a("robust-sum"),m=a("uniq"),g=a("./lib/trim-leaves");function p(v,y){for(var x=new Array(v),w=0;w0&&R[L]===z[0]))return 1;P=O[L-1]}for(var N=1;P;){var B=P.key,G=i(z,B[0],B[1]);if(B[0][0]0))return 0;N=-1,P=P.right}else if(G>0)P=P.left;else{if(!(G<0))return 0;N=1,P=P.right}}return N}}(E.slabs,E.coordinates);return x.length===0?D:function(O,R){return function(z){return O(z[0],z[1])?0:R(z)}}(m(x),D)};var i=a("robust-orientation")[3],s=a("slab-decomposition"),u=a("interval-tree-1d"),d=a("binary-search-bounds");function h(){return!0}function m(p){for(var v={},y=0;y=y?(L=1,M=y+2*k+T):M=k*(L=-k/y)+T):(L=0,b>=0?(P=0,M=T):-b>=w?(P=1,M=w+2*b+T):M=b*(P=-b/w)+T);else if(P<0)P=0,k>=0?(L=0,M=T):-k>=y?(L=1,M=y+2*k+T):M=k*(L=-k/y)+T;else{var N=1/z;M=(L*=N)*(y*L+x*(P*=N)+2*k)+P*(x*L+w*P+2*b)+T}else L<0?(D=w+b)>(E=x+k)?(O=D-E)>=(R=y-2*x+w)?(L=1,P=0,M=y+2*k+T):M=(L=O/R)*(y*L+x*(P=1-L)+2*k)+P*(x*L+w*P+2*b)+T:(L=0,D<=0?(P=1,M=w+2*b+T):b>=0?(P=0,M=T):M=b*(P=-b/w)+T):P<0?(D=y+k)>(E=x+b)?(O=D-E)>=(R=y-2*x+w)?(P=1,L=0,M=w+2*b+T):M=(L=1-(P=O/R))*(y*L+x*P+2*k)+P*(x*L+w*P+2*b)+T:(P=0,D<=0?(L=1,M=y+2*k+T):k>=0?(L=0,M=T):M=k*(L=-k/y)+T):(O=w+b-x-k)<=0?(L=0,P=1,M=w+2*b+T):O>=(R=y-2*x+w)?(L=1,P=0,M=y+2*k+T):M=(L=O/R)*(y*L+x*(P=1-L)+2*k)+P*(x*L+w*P+2*b)+T;var B=1-L-P;for(v=0;v0){var y=d[m-1];if(i(p,y)===0&&u(y)!==v){m-=1;continue}}d[m++]=p}}return d.length=m,d}},{"cell-orientation":47,"compare-cell":56,"compare-oriented-cell":57}],277:[function(a,l,c){var i,s="";l.exports=function(u,d){if(typeof u!="string")throw new TypeError("expected a string");if(d===1)return u;if(d===2)return u+u;var h=u.length*d;if(i!==u||i===void 0)i=u,s="";else if(s.length>=h)return s.substr(0,h);for(;h>s.length&&d>1;)1&d&&(s+=u),d>>=1,u+=u;return s=(s+=u).substr(0,h)}},{}],278:[function(a,l,c){(function(i){(function(){l.exports=i.performance&&i.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,r!==void 0?r:typeof self<"u"?self:typeof window<"u"?window:{})},{}],279:[function(a,l,c){l.exports=function(i){for(var s=i.length,u=i[i.length-1],d=s,h=s-2;h>=0;--h){var m=u,g=i[h];(v=g-((u=m+g)-m))&&(i[--d]=u,u=v)}var p=0;for(h=d;h0){if(M<=0)return E;S=A+M}else{if(!(A<0)||M>=0)return E;S=-(A+M)}var D=33306690738754716e-32*S;return E>=D||E<=-D?E:v(b,T,_)},function(b,T,_,S){var A=b[0]-S[0],M=T[0]-S[0],E=_[0]-S[0],D=b[1]-S[1],O=T[1]-S[1],R=_[1]-S[1],z=b[2]-S[2],L=T[2]-S[2],P=_[2]-S[2],N=M*R,B=E*O,G=E*D,W=A*R,K=A*O,te=M*D,Y=z*(N-B)+L*(G-W)+P*(K-te),Z=7771561172376103e-31*((Math.abs(N)+Math.abs(B))*Math.abs(z)+(Math.abs(G)+Math.abs(W))*Math.abs(L)+(Math.abs(K)+Math.abs(te))*Math.abs(P));return Y>Z||-Y>Z?Y:y(b,T,_,S)}];function w(b){var T=x[b.length];return T||(T=x[b.length]=p(b.length)),T.apply(void 0,b)}function k(b,T,_,S,A,M,E){return function(D,O,R,z,L){switch(arguments.length){case 0:case 1:return 0;case 2:return S(D,O);case 3:return A(D,O,R);case 4:return M(D,O,R,z);case 5:return E(D,O,R,z,L)}for(var P=new Array(arguments.length),N=0;N0&&g>0||m<0&&g<0)return!1;var p=i(d,s,u),v=i(h,s,u);return p>0&&v>0||p<0&&v<0?!1:m===0&&g===0&&p===0&&v===0?function(y,x,w,k){for(var b=0;b<2;++b){var T=y[b],_=x[b],S=Math.min(T,_),A=Math.max(T,_),M=w[b],E=k[b],D=Math.min(M,E);if(Math.max(M,E)=d?(h=w,(v+=1)=d?(h=w,(v+=1)>1,w=d[2*x+1];if(w===p)return x;p>1,w=d[2*x+1];if(w===p)return x;p>1,w=d[2*x+1];if(w===p)return x;p>1,_=u(y[T],x);_<=0?(_===0&&(b=T),w=T+1):_>0&&(k=T-1)}return b}function p(y,x){for(var w=new Array(y.length),k=0,b=w.length;k=y.length||u(y[R],T)!==0););}return w}function v(y,x){if(x<0)return[];for(var w=[],k=(1<>>M&1&&A.push(b[M]);x.push(A)}return h(x)},c.skeleton=v,c.boundary=function(y){for(var x=[],w=0,k=y.length;w>1:(te>>1)-1}function E(te){for(var Y=A(te);;){var Z=Y,re=2*te+1,U=2*(te+1),q=te;if(re0;){var Z=M(te);if(Z>=0&&Y0){var te=L[0];return S(0,N-1),N-=1,E(0),te}return-1}function R(te,Y){var Z=L[te];return y[Z]===Y?te:(y[Z]=-1/0,D(te),O(),y[Z]=Y,D((N+=1)-1))}function z(te){if(!x[te]){x[te]=!0;var Y=p[te],Z=v[te];p[Z]>=0&&(p[Z]=Y),v[Y]>=0&&(v[Y]=Z),P[Y]>=0&&R(P[Y],_(Y)),P[Z]>=0&&R(P[Z],_(Z))}}var L=[],P=new Array(m);for(w=0;w>1;w>=0;--w)E(w);for(;;){var B=O();if(B<0||y[B]>h)break;z(B)}var G=[];for(w=0;w=0&&Z>=0&&Y!==Z){var re=P[Y],U=P[Z];re!==U&&K.push([re,U])}}),s.unique(s.normalize(K)),{positions:G,edges:K}};var i=a("robust-orientation"),s=a("simplicial-complex")},{"robust-orientation":284,"simplicial-complex":295}],298:[function(a,l,c){l.exports=function(u,d){var h,m,g,p;if(d[0][0]d[1][0]))return s(d,u);h=d[1],m=d[0]}if(u[0][0]u[1][0]))return-s(u,d);g=u[1],p=u[0]}var v=i(h,m,p),y=i(h,m,g);if(v<0){if(y<=0)return v}else if(v>0){if(y>=0)return v}else if(y)return y;if(v=i(p,g,m),y=i(p,g,h),v<0){if(y<=0)return v}else if(v>0){if(y>=0)return v}else if(y)return y;return m[0]-p[0]};var i=a("robust-orientation");function s(u,d){var h,m,g,p;if(d[0][0]d[1][0])){var v=Math.min(u[0][1],u[1][1]),y=Math.max(u[0][1],u[1][1]),x=Math.min(d[0][1],d[1][1]),w=Math.max(d[0][1],d[1][1]);return yw?v-w:y-w}h=d[1],m=d[0]}u[0][1]0)if(x[0]!==T[1][0])w=y,y=y.right;else{if(S=g(y.right,x))return S;y=y.left}else{if(x[0]!==T[1][0])return y;var S;if(S=g(y.right,x))return S;y=y.left}}return w}function p(y,x,w,k){this.y=y,this.index=x,this.start=w,this.closed=k}function v(y,x,w,k){this.x=y,this.segment=x,this.create=w,this.index=k}h.prototype.castUp=function(y){var x=i.le(this.coordinates,y[0]);if(x<0)return-1;this.slabs[x];var w=g(this.slabs[x],y),k=-1;if(w&&(k=w.value),this.coordinates[x]===y[0]){var b=null;if(w&&(b=w.key),x>0){var T=g(this.slabs[x-1],y);T&&(b?d(T.key,b)>0&&(b=T.key,k=T.value):(k=T.value,b=T.key))}var _=this.horizontal[x];if(_.length>0){var S=i.ge(_,y[1],m);if(S<_.length){var A=_[S];if(y[1]===A.y){if(A.closed)return A.index;for(;S<_.length-1&&_[S+1].y===y[1];)if((A=_[S+=1]).closed)return A.index;if(A.y===y[1]&&!A.start){if((S+=1)>=_.length)return k;A=_[S]}}if(A.start)if(b){var M=u(b[0],b[1],[y[0],A.y]);b[0][0]>b[1][0]&&(M=-M),M>0&&(k=A.index)}else k=A.index;else A.y!==y[1]&&(k=A.index)}}}return k}},{"./lib/order-segments":298,"binary-search-bounds":31,"functional-red-black-tree":69,"robust-orientation":284}],300:[function(a,l,c){var i=a("robust-dot-product"),s=a("robust-sum");function u(h,m){var g=s(i(h,m),[m[m.length-1]]);return g[g.length-1]}function d(h,m,g,p){var v=-m/(p-m);v<0?v=0:v>1&&(v=1);for(var y=1-v,x=h.length,w=new Array(x),k=0;k0||v>0&&k<0){var b=d(y,k,x,v);g.push(b),p.push(b.slice())}k<0?p.push(x.slice()):k>0?g.push(x.slice()):(g.push(x.slice()),p.push(x.slice())),v=k}return{positive:g,negative:p}},l.exports.positive=function(h,m){for(var g=[],p=u(h[h.length-1],m),v=h[h.length-1],y=h[0],x=0;x0||p>0&&w<0)&&g.push(d(v,w,y,p)),w>=0&&g.push(y.slice()),p=w}return g},l.exports.negative=function(h,m){for(var g=[],p=u(h[h.length-1],m),v=h[h.length-1],y=h[0],x=0;x0||p>0&&w<0)&&g.push(d(v,w,y,p)),w<=0&&g.push(y.slice()),p=w}return g}},{"robust-dot-product":281,"robust-sum":289}],301:[function(a,l,c){(function(){var i={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function s(g){return d(m(g),arguments)}function u(g,p){return s.apply(null,[g].concat(p||[]))}function d(g,p){var v,y,x,w,k,b,T,_,S,A=1,M=g.length,E="";for(y=0;y=0),w.type){case"b":v=parseInt(v,10).toString(2);break;case"c":v=String.fromCharCode(parseInt(v,10));break;case"d":case"i":v=parseInt(v,10);break;case"j":v=JSON.stringify(v,null,w.width?parseInt(w.width):0);break;case"e":v=w.precision?parseFloat(v).toExponential(w.precision):parseFloat(v).toExponential();break;case"f":v=w.precision?parseFloat(v).toFixed(w.precision):parseFloat(v);break;case"g":v=w.precision?String(Number(v.toPrecision(w.precision))):parseFloat(v);break;case"o":v=(parseInt(v,10)>>>0).toString(8);break;case"s":v=String(v),v=w.precision?v.substring(0,w.precision):v;break;case"t":v=String(!!v),v=w.precision?v.substring(0,w.precision):v;break;case"T":v=Object.prototype.toString.call(v).slice(8,-1).toLowerCase(),v=w.precision?v.substring(0,w.precision):v;break;case"u":v=parseInt(v,10)>>>0;break;case"v":v=v.valueOf(),v=w.precision?v.substring(0,w.precision):v;break;case"x":v=(parseInt(v,10)>>>0).toString(16);break;case"X":v=(parseInt(v,10)>>>0).toString(16).toUpperCase()}i.json.test(w.type)?E+=v:(!i.number.test(w.type)||_&&!w.sign?S="":(S=_?"+":"-",v=v.toString().replace(i.sign,"")),b=w.pad_char?w.pad_char==="0"?"0":w.pad_char.charAt(1):" ",T=w.width-(S+v).length,k=w.width&&T>0?b.repeat(T):"",E+=w.align?S+v+k:b==="0"?S+k+v:k+S+v)}return E}var h=Object.create(null);function m(g){if(h[g])return h[g];for(var p,v=g,y=[],x=0;v;){if((p=i.text.exec(v))!==null)y.push(p[0]);else if((p=i.modulo.exec(v))!==null)y.push("%");else{if((p=i.placeholder.exec(v))===null)throw new SyntaxError("[sprintf] unexpected placeholder");if(p[2]){x|=1;var w=[],k=p[2],b=[];if((b=i.key.exec(k))===null)throw new SyntaxError("[sprintf] failed to parse named argument key");for(w.push(b[1]);(k=k.substring(b[0].length))!=="";)if((b=i.key_access.exec(k))!==null)w.push(b[1]);else{if((b=i.index_access.exec(k))===null)throw new SyntaxError("[sprintf] failed to parse named argument key");w.push(b[1])}p[2]=w}else x|=2;if(x===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");y.push({placeholder:p[0],param_no:p[1],keys:p[2],sign:p[3],pad_char:p[4],align:p[5],width:p[6],precision:p[7],type:p[8]})}v=v.substring(p[0].length)}return h[g]=y}c!==void 0&&(c.sprintf=s,c.vsprintf=u),typeof window<"u"&&(window.sprintf=s,window.vsprintf=u)})()},{}],302:[function(a,l,c){l.exports=function(h,m){if(h.dimension<=0)return{positions:[],cells:[]};if(h.dimension===1)return function(v,y){for(var x=s(v,y),w=x.length,k=new Array(w),b=new Array(w),T=0;Tw|0},vertex:function(v,y,x,w,k,b,T,_,S,A,M,E,D){var O=(T<<0)+(_<<1)+(S<<2)+(A<<3)|0;if(O!==0&&O!==15)switch(O){case 0:M.push([v-.5,y-.5]);break;case 1:M.push([v-.25-.25*(w+x-2*D)/(x-w),y-.25-.25*(k+x-2*D)/(x-k)]);break;case 2:M.push([v-.75-.25*(-w-x+2*D)/(w-x),y-.25-.25*(b+w-2*D)/(w-b)]);break;case 3:M.push([v-.5,y-.5-.5*(k+x+b+w-4*D)/(x-k+w-b)]);break;case 4:M.push([v-.25-.25*(b+k-2*D)/(k-b),y-.75-.25*(-k-x+2*D)/(k-x)]);break;case 5:M.push([v-.5-.5*(w+x+b+k-4*D)/(x-w+k-b),y-.5]);break;case 6:M.push([v-.5-.25*(-w-x+b+k)/(w-x+k-b),y-.5-.25*(-k-x+b+w)/(k-x+w-b)]);break;case 7:M.push([v-.75-.25*(b+k-2*D)/(k-b),y-.75-.25*(b+w-2*D)/(w-b)]);break;case 8:M.push([v-.75-.25*(-b-k+2*D)/(b-k),y-.75-.25*(-b-w+2*D)/(b-w)]);break;case 9:M.push([v-.5-.25*(w+x+-b-k)/(x-w+b-k),y-.5-.25*(k+x+-b-w)/(x-k+b-w)]);break;case 10:M.push([v-.5-.5*(-w-x-b-k+4*D)/(w-x+b-k),y-.5]);break;case 11:M.push([v-.25-.25*(-b-k+2*D)/(b-k),y-.75-.25*(k+x-2*D)/(x-k)]);break;case 12:M.push([v-.5,y-.5-.5*(-k-x-b-w+4*D)/(k-x+b-w)]);break;case 13:M.push([v-.75-.25*(w+x-2*D)/(x-w),y-.25-.25*(-b-w+2*D)/(b-w)]);break;case 14:M.push([v-.25-.25*(-w-x+2*D)/(w-x),y-.25-.25*(-k-x+2*D)/(k-x)]);break;case 15:M.push([v-.5,y-.5])}},cell:function(v,y,x,w,k,b,T,_,S){k?_.push([v,y]):_.push([y,v])}});return function(v,y){var x=[],w=[];return p(v,x,w,y),{positions:x,cells:w}}}},d={}},{"ndarray-extract-contour":251,"zero-crossings":318}],303:[function(a,l,c){(function(i){(function(){l.exports=function h(m,g,p){p=p||{};var v=d[m];v||(v=d[m]={" ":{data:new Float32Array(0),shape:.2}});var y=v[g];if(!y)if(g.length<=1||!/\d/.test(g))y=v[g]=function(D){for(var O=D.cells,R=D.positions,z=new Float32Array(6*O.length),L=0,P=0,N=0;N0&&(b+=.02);var _=new Float32Array(k),S=0,A=-.5*b;for(T=0;TMath.max(T,_)?S[2]=1:T>Math.max(b,_)?S[0]=1:S[1]=1;for(var A=0,M=0,E=0;E<3;++E)A+=k[E]*k[E],M+=S[E]*k[E];for(E=0;E<3;++E)S[E]-=M/A*k[E];return h(S,S),S}function y(k,b,T,_,S,A,M,E){this.center=i(T),this.up=i(_),this.right=i(S),this.radius=i([A]),this.angle=i([M,E]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(k,b),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var D=0;D<16;++D)this.computedMatrix[D]=.5;this.recalcMatrix(0)}var x=y.prototype;x.setDistanceLimits=function(k,b){k=k>0?Math.log(k):-1/0,b=b>0?Math.log(b):1/0,b=Math.max(b,k),this.radius.bounds[0][0]=k,this.radius.bounds[1][0]=b},x.getDistanceLimits=function(k){var b=this.radius.bounds[0];return k?(k[0]=Math.exp(b[0][0]),k[1]=Math.exp(b[1][0]),k):[Math.exp(b[0][0]),Math.exp(b[1][0])]},x.recalcMatrix=function(k){this.center.curve(k),this.up.curve(k),this.right.curve(k),this.radius.curve(k),this.angle.curve(k);for(var b=this.computedUp,T=this.computedRight,_=0,S=0,A=0;A<3;++A)S+=b[A]*T[A],_+=b[A]*b[A];var M=Math.sqrt(_),E=0;for(A=0;A<3;++A)T[A]-=b[A]*S/_,E+=T[A]*T[A],b[A]/=M;var D=Math.sqrt(E);for(A=0;A<3;++A)T[A]/=D;var O=this.computedToward;d(O,b,T),h(O,O);var R=Math.exp(this.computedRadius[0]),z=this.computedAngle[0],L=this.computedAngle[1],P=Math.cos(z),N=Math.sin(z),B=Math.cos(L),G=Math.sin(L),W=this.computedCenter,K=P*B,te=N*B,Y=G,Z=-P*G,re=-N*G,U=B,q=this.computedEye,$=this.computedMatrix;for(A=0;A<3;++A){var ne=K*T[A]+te*O[A]+Y*b[A];$[4*A+1]=Z*T[A]+re*O[A]+U*b[A],$[4*A+2]=ne,$[4*A+3]=0}var H=$[1],Q=$[5],ee=$[9],ie=$[2],ae=$[6],ue=$[10],le=Q*ue-ee*ae,ge=ee*ie-H*ue,fe=H*ae-Q*ie,me=g(le,ge,fe);for(le/=me,ge/=me,fe/=me,$[0]=le,$[4]=ge,$[8]=fe,A=0;A<3;++A)q[A]=W[A]+$[2+4*A]*R;for(A=0;A<3;++A){E=0;for(var _e=0;_e<3;++_e)E+=$[A+4*_e]*q[_e];$[12+A]=-E}$[15]=1},x.getMatrix=function(k,b){this.recalcMatrix(k);var T=this.computedMatrix;if(b){for(var _=0;_<16;++_)b[_]=T[_];return b}return T};var w=[0,0,0];x.rotate=function(k,b,T,_){if(this.angle.move(k,b,T),_){this.recalcMatrix(k);var S=this.computedMatrix;w[0]=S[2],w[1]=S[6],w[2]=S[10];for(var A=this.computedUp,M=this.computedRight,E=this.computedToward,D=0;D<3;++D)S[4*D]=A[D],S[4*D+1]=M[D],S[4*D+2]=E[D];for(u(S,S,_,w),D=0;D<3;++D)A[D]=S[4*D],M[D]=S[4*D+1];this.up.set(k,A[0],A[1],A[2]),this.right.set(k,M[0],M[1],M[2])}},x.pan=function(k,b,T,_){b=b||0,T=T||0,_=_||0,this.recalcMatrix(k);var S=this.computedMatrix,A=(Math.exp(this.computedRadius[0]),S[1]),M=S[5],E=S[9],D=g(A,M,E);A/=D,M/=D,E/=D;var O=S[0],R=S[4],z=S[8],L=O*A+R*M+z*E,P=g(O-=A*L,R-=M*L,z-=E*L),N=(O/=P)*b+A*T,B=(R/=P)*b+M*T,G=(z/=P)*b+E*T;this.center.move(k,N,B,G);var W=Math.exp(this.computedRadius[0]);W=Math.max(1e-4,W+_),this.radius.set(k,Math.log(W))},x.translate=function(k,b,T,_){this.center.move(k,b||0,T||0,_||0)},x.setMatrix=function(k,b,T,_){var S=1;typeof T=="number"&&(S=0|T),(S<0||S>3)&&(S=1);var A=(S+2)%3;b||(this.recalcMatrix(k),b=this.computedMatrix);var M=b[S],E=b[S+4],D=b[S+8];if(_){var O=Math.abs(M),R=Math.abs(E),z=Math.abs(D),L=Math.max(O,R,z);O===L?(M=M<0?-1:1,E=D=0):z===L?(D=D<0?-1:1,M=E=0):(E=E<0?-1:1,M=D=0)}else{var P=g(M,E,D);M/=P,E/=P,D/=P}var N,B,G=b[A],W=b[A+4],K=b[A+8],te=G*M+W*E+K*D,Y=g(G-=M*te,W-=E*te,K-=D*te),Z=E*(K/=Y)-D*(W/=Y),re=D*(G/=Y)-M*K,U=M*W-E*G,q=g(Z,re,U);if(Z/=q,re/=q,U/=q,this.center.jump(k,de,ye,Me),this.radius.idle(k),this.up.jump(k,M,E,D),this.right.jump(k,G,W,K),S===2){var $=b[1],ne=b[5],H=b[9],Q=$*G+ne*W+H*K,ee=$*Z+ne*re+H*U;N=le<0?-Math.PI/2:Math.PI/2,B=Math.atan2(ee,Q)}else{var ie=b[2],ae=b[6],ue=b[10],le=ie*M+ae*E+ue*D,ge=ie*G+ae*W+ue*K,fe=ie*Z+ae*re+ue*U;N=Math.asin(p(le)),B=Math.atan2(fe,ge)}this.angle.jump(k,B,N),this.recalcMatrix(k);var me=b[2],_e=b[6],we=b[10],Te=this.computedMatrix;s(Te,b);var Oe=Te[15],de=Te[12]/Oe,ye=Te[13]/Oe,Me=Te[14]/Oe,ke=Math.exp(this.computedRadius[0]);this.center.jump(k,de-me*ke,ye-_e*ke,Me-we*ke)},x.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},x.idle=function(k){this.center.idle(k),this.up.idle(k),this.right.idle(k),this.radius.idle(k),this.angle.idle(k)},x.flush=function(k){this.center.flush(k),this.up.flush(k),this.right.flush(k),this.radius.flush(k),this.angle.flush(k)},x.setDistance=function(k,b){b>0&&this.radius.set(k,Math.log(b))},x.lookAt=function(k,b,T,_){this.recalcMatrix(k),b=b||this.computedEye,T=T||this.computedCenter;var S=(_=_||this.computedUp)[0],A=_[1],M=_[2],E=g(S,A,M);if(!(E<1e-6)){S/=E,A/=E,M/=E;var D=b[0]-T[0],O=b[1]-T[1],R=b[2]-T[2],z=g(D,O,R);if(!(z<1e-6)){D/=z,O/=z,R/=z;var L=this.computedRight,P=L[0],N=L[1],B=L[2],G=S*P+A*N+M*B,W=g(P-=G*S,N-=G*A,B-=G*M);if(!(W<.01&&(W=g(P=A*R-M*O,N=M*D-S*R,B=S*O-A*D))<1e-6)){P/=W,N/=W,B/=W,this.up.set(k,S,A,M),this.right.set(k,P,N,B),this.center.set(k,T[0],T[1],T[2]),this.radius.set(k,Math.log(z));var K=A*B-M*N,te=M*P-S*B,Y=S*N-A*P,Z=g(K,te,Y),re=S*D+A*O+M*R,U=P*D+N*O+B*R,q=(K/=Z)*D+(te/=Z)*O+(Y/=Z)*R,$=Math.asin(p(re)),ne=Math.atan2(q,U),H=this.angle._state,Q=H[H.length-1],ee=H[H.length-2];Q%=2*Math.PI;var ie=Math.abs(Q+2*Math.PI-ne),ae=Math.abs(Q-ne),ue=Math.abs(Q-2*Math.PI-ne);ie0?B.pop():new ArrayBuffer(P)}function k(P){return new Uint8Array(w(P),0,P)}function b(P){return new Uint16Array(w(2*P),0,P)}function T(P){return new Uint32Array(w(4*P),0,P)}function _(P){return new Int8Array(w(P),0,P)}function S(P){return new Int16Array(w(2*P),0,P)}function A(P){return new Int32Array(w(4*P),0,P)}function M(P){return new Float32Array(w(4*P),0,P)}function E(P){return new Float64Array(w(8*P),0,P)}function D(P){return h?new Uint8ClampedArray(w(P),0,P):k(P)}function O(P){return m?new BigUint64Array(w(8*P),0,P):null}function R(P){return g?new BigInt64Array(w(8*P),0,P):null}function z(P){return new DataView(w(P),0,P)}function L(P){P=s.nextPow2(P);var N=s.log2(P),B=y[N];return B.length>0?B.pop():new d(P)}c.free=function(P){if(d.isBuffer(P))y[s.log2(P.length)].push(P);else{if(Object.prototype.toString.call(P)!=="[object ArrayBuffer]"&&(P=P.buffer),!P)return;var N=P.length||P.byteLength,B=0|s.log2(N);v[B].push(P)}},c.freeUint8=c.freeUint16=c.freeUint32=c.freeBigUint64=c.freeInt8=c.freeInt16=c.freeInt32=c.freeBigInt64=c.freeFloat32=c.freeFloat=c.freeFloat64=c.freeDouble=c.freeUint8Clamped=c.freeDataView=function(P){x(P.buffer)},c.freeArrayBuffer=x,c.freeBuffer=function(P){y[s.log2(P.length)].push(P)},c.malloc=function(P,N){if(N===void 0||N==="arraybuffer")return w(P);switch(N){case"uint8":return k(P);case"uint16":return b(P);case"uint32":return T(P);case"int8":return _(P);case"int16":return S(P);case"int32":return A(P);case"float":case"float32":return M(P);case"double":case"float64":return E(P);case"uint8_clamped":return D(P);case"bigint64":return R(P);case"biguint64":return O(P);case"buffer":return L(P);case"data":case"dataview":return z(P);default:return null}return null},c.mallocArrayBuffer=w,c.mallocUint8=k,c.mallocUint16=b,c.mallocUint32=T,c.mallocInt8=_,c.mallocInt16=S,c.mallocInt32=A,c.mallocFloat32=c.mallocFloat=M,c.mallocFloat64=c.mallocDouble=E,c.mallocUint8Clamped=D,c.mallocBigUint64=O,c.mallocBigInt64=R,c.mallocDataView=z,c.mallocBuffer=L,c.clearCache=function(){for(var P=0;P<32;++P)p.UINT8[P].length=0,p.UINT16[P].length=0,p.UINT32[P].length=0,p.INT8[P].length=0,p.INT16[P].length=0,p.INT32[P].length=0,p.FLOAT[P].length=0,p.DOUBLE[P].length=0,p.BIGUINT64[P].length=0,p.BIGINT64[P].length=0,p.UINT8C[P].length=0,v[P].length=0,y[P].length=0}}).call(this)}).call(this,r!==void 0?r:typeof self<"u"?self:typeof window<"u"?window:{})},{"bit-twiddle":32,buffer:3,dup:65}],309:[function(a,l,c){function i(u){this.roots=new Array(u),this.ranks=new Array(u);for(var d=0;d0&&(T=b.size),b.lineSpacing&&b.lineSpacing>0&&(_=b.lineSpacing),b.styletags&&b.styletags.breaklines&&(S.breaklines=!!b.styletags.breaklines),b.styletags&&b.styletags.bolds&&(S.bolds=!!b.styletags.bolds),b.styletags&&b.styletags.italics&&(S.italics=!!b.styletags.italics),b.styletags&&b.styletags.subscripts&&(S.subscripts=!!b.styletags.subscripts),b.styletags&&b.styletags.superscripts&&(S.superscripts=!!b.styletags.superscripts)),k.font=[b.fontStyle,b.fontVariant,b.fontWeight,T+"px",b.font].filter(function(A){return A}).join(" "),k.textAlign="start",k.textBaseline="alphabetic",k.direction="ltr",y(function(A,M,E,D,O,R){E=E.replace(/\n/g,""),E=R.breaklines===!0?E.replace(/\/g,` +`):E.replace(/\/g," ");var z="",L=[];for(G=0;G-1?parseInt(_e[1+Oe]):0,Me=de>-1?parseInt(we[1+de]):0;ye!==Me&&(Te=Te.replace(ie(),"?px "),te*=Math.pow(.75,Me-ye),Te=Te.replace("?px ",ie())),K+=.25*re*(Me-ye)}if(R.superscripts===!0){var ke=_e.indexOf("+"),Ee=we.indexOf("+"),ze=ke>-1?parseInt(_e[1+ke]):0,Fe=Ee>-1?parseInt(we[1+Ee]):0;ze!==Fe&&(Te=Te.replace(ie(),"?px "),te*=Math.pow(.75,Fe-ze),Te=Te.replace("?px ",ie())),K-=.25*re*(Fe-ze)}if(R.bolds===!0){var Ve=_e.indexOf("b|")>-1,Ke=we.indexOf("b|")>-1;!Ve&&Ke&&(Te=Re?Te.replace("italic ","italic bold "):"bold "+Te),Ve&&!Ke&&(Te=Te.replace("bold ",""))}if(R.italics===!0){var Re=_e.indexOf("i|")>-1,qe=we.indexOf("i|")>-1;!Re&&qe&&(Te="italic "+Te),Re&&!qe&&(Te=Te.replace("italic ",""))}M.font=Te}for(B=0;B",_="",S=T.length,A=_.length,M=w[0]==="+"||w[0]==="-",E=0,D=-A;E>-1&&(E=k.indexOf(T,E))!==-1&&(D=k.indexOf(_,E+S))!==-1&&!(D<=E);){for(var O=E;O=D)b[O]=null,k=k.substr(0,O)+" "+k.substr(O+1);else if(b[O]!==null){var R=b[O].indexOf(w[0]);R===-1?b[O]+=w:M&&(b[O]=b[O].substr(0,R+1)+(1+parseInt(b[O][R+1]))+b[O].substr(R+2))}var z=E+S,L=k.substr(z,D-z).indexOf(T);E=L!==-1?L:D+A}return b}function p(x,w){var k=i(x,128);return w?u(k.cells,k.positions,.25):{edges:k.cells,positions:k.positions}}function v(x,w,k,b){var T=p(x,b),_=function(B,G,W){for(var K=G.textAlign||"start",te=G.textBaseline||"alphabetic",Y=[1<<30,1<<30],Z=[0,0],re=B.length,U=0;U"u"||!ses.ok||ses.ok()){typeof ses<"u"&&(ses.weakMapPermitHostObjects=T);var i=!1;if(typeof WeakMap=="function"){var s=WeakMap;if(!(typeof navigator<"u"&&/Firefox/.test(navigator.userAgent))){var u=new s,d=Object.freeze({});if(u.set(d,1),u.get(d)===1)return void(l.exports=WeakMap);i=!0}}var h=Object.getOwnPropertyNames,m=Object.defineProperty,g=Object.isExtensible,p="weakmap:ident:"+Math.random()+"___";if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var v=new ArrayBuffer(25),y=new Uint8Array(v);crypto.getRandomValues(y),p="weakmap:rand:"+Array.prototype.map.call(y,function(E){return(E%36).toString(36)}).join("")+"___"}if(m(Object,"getOwnPropertyNames",{value:function(E){return h(E).filter(_)}}),"getPropertyNames"in Object){var x=Object.getPropertyNames;m(Object,"getPropertyNames",{value:function(E){return x(E).filter(_)}})}(function(){var E=Object.freeze;m(Object,"freeze",{value:function(R){return S(R),E(R)}});var D=Object.seal;m(Object,"seal",{value:function(R){return S(R),D(R)}});var O=Object.preventExtensions;m(Object,"preventExtensions",{value:function(R){return S(R),O(R)}})})();var w=!1,k=0,b=function(){this instanceof b||M();var E=[],D=[],O=k++;return Object.create(b.prototype,{get___:{value:A(function(R,z){var L,P=S(R);return P?O in P?P[O]:z:(L=E.indexOf(R))>=0?D[L]:z})},has___:{value:A(function(R){var z=S(R);return z?O in z:E.indexOf(R)>=0})},set___:{value:A(function(R,z){var L,P=S(R);return P?P[O]=z:(L=E.indexOf(R))>=0?D[L]=z:(L=E.length,D[L]=z,E[L]=R),this})},delete___:{value:A(function(R){var z,L,P=S(R);return P?O in P&&delete P[O]:!((z=E.indexOf(R))<0)&&(L=E.length-1,E[z]=void 0,D[z]=D[L],E[z]=E[L],E.length=L,D.length=L,!0)})}})};b.prototype=Object.create(Object.prototype,{get:{value:function(E,D){return this.get___(E,D)},writable:!0,configurable:!0},has:{value:function(E){return this.has___(E)},writable:!0,configurable:!0},set:{value:function(E,D){return this.set___(E,D)},writable:!0,configurable:!0},delete:{value:function(E){return this.delete___(E)},writable:!0,configurable:!0}}),typeof s=="function"?function(){function E(){this instanceof b||M();var D,O=new s,R=void 0,z=!1;return D=i?function(L,P){return O.set(L,P),O.has(L)||(R||(R=new b),R.set(L,P)),this}:function(L,P){if(z)try{O.set(L,P)}catch{R||(R=new b),R.set___(L,P)}else O.set(L,P);return this},Object.create(b.prototype,{get___:{value:A(function(L,P){return R?O.has(L)?O.get(L):R.get___(L,P):O.get(L,P)})},has___:{value:A(function(L){return O.has(L)||!!R&&R.has___(L)})},set___:{value:A(D)},delete___:{value:A(function(L){var P=!!O.delete(L);return R&&R.delete___(L)||P})},permitHostObjects___:{value:A(function(L){if(L!==T)throw new Error("bogus call to permitHostObjects___");z=!0})}})}i&&typeof Proxy<"u"&&(Proxy=void 0),E.prototype=b.prototype,l.exports=E,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy<"u"&&(Proxy=void 0),l.exports=b)}function T(E){E.permitHostObjects___&&E.permitHostObjects___(T)}function _(E){return!(E.substr(0,8)=="weakmap:"&&E.substr(E.length-3)==="___")}function S(E){if(E!==Object(E))throw new TypeError("Not an object: "+E);var D=E[p];if(D&&D.key===E)return D;if(g(E)){D={key:E};try{return m(E,p,{value:D,writable:!1,enumerable:!1,configurable:!1}),D}catch{return}}}function A(E){return E.prototype=null,Object.freeze(E)}function M(){w||typeof console>"u"||(w=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}})()},{}],314:[function(a,l,c){var i=a("./hidden-store.js");l.exports=function(){var s={};return function(u){if((typeof u!="object"||u===null)&&typeof u!="function")throw new Error("Weakmap-shim: Key must be object");var d=u.valueOf(s);return d&&d.identity===s?d:i(u,s)}}},{"./hidden-store.js":315}],315:[function(a,l,c){l.exports=function(i,s){var u={identity:s},d=i.valueOf;return Object.defineProperty(i,"valueOf",{value:function(h){return h!==s?d.apply(this,arguments):u},writable:!0}),u}},{}],316:[function(a,l,c){var i=a("./create-store.js");l.exports=function(){var s=i();return{get:function(u,d){var h=s(u);return h.hasOwnProperty("value")?h.value:d},set:function(u,d){return s(u).value=d,this},has:function(u){return"value"in s(u)},delete:function(u){return delete s(u).value}}}},{"./create-store.js":314}],317:[function(a,l,c){var i,s=function(){return function(u,d,h,m,g,p){var v=u[0],y=h[0],x=[0],w=y;m|=0;var k=0,b=y;for(k=0;k=0!=_>=0&&g.push(x[0]+.5+.5*(T+_)/(T-_)),m+=b,++x[0]}}};l.exports=(i={funcName:"zeroCrossings"},function(u){var d={};return function(h,m,g){var p=h.dtype,v=h.order,y=[p,v.join()].join(),x=d[y];return x||(d[y]=x=u([p,v])),x(h.shape.slice(0),h.data,h.stride,0|h.offset,m,g)}}(s.bind(void 0,i)))},{}],318:[function(a,l,c){l.exports=function(s,u){var d=[];return u=+u||0,i(s.hi(s.shape[0]-1),d,u),d};var i=a("./lib/zc-core")},{"./lib/zc-core":317}]},{},[6])(6)})}).call(this)}).call(this,typeof Ro<"u"?Ro:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[27])(27)})})(HD);var gW=NG(HD.exports);/*! + * https://github.com/Starcounter-Jack/JSON-Patch + * (c) 2017-2022 Joachim Wester + * MIT licensed + */var mW=globalThis&&globalThis.__extends||function(){var t=function(n,e){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,f){o.__proto__=f}||function(o,f){for(var r in f)f.hasOwnProperty(r)&&(o[r]=f[r])},t(n,e)};return function(n,e){t(n,e);function o(){this.constructor=n}n.prototype=e===null?Object.create(e):(o.prototype=e.prototype,new o)}}(),vW=Object.prototype.hasOwnProperty;function nk(t,n){return vW.call(t,n)}function rk(t){if(Array.isArray(t)){for(var n=new Array(t.length),e=0;e=48&&o<=57){n++;continue}return!1}return!0}function Jp(t){return t.indexOf("/")===-1&&t.indexOf("~")===-1?t:t.replace(/~/g,"~0").replace(/\//g,"~1")}function $D(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function ak(t){if(t===void 0)return!0;if(t){if(Array.isArray(t)){for(var n=0,e=t.length;n0&&c[s-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(e&&d===void 0&&(i[h]===void 0?d=c.slice(0,s).join("/"):s==u-1&&(d=n.path),d!==void 0&&m(n,0,t,d)),s++,Array.isArray(i)){if(h==="-")h=i.length;else{if(e&&!ik(h))throw new vs("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",r,n,t);ik(h)&&(h=~~h)}if(s>=u){if(e&&n.op==="add"&&h>i.length)throw new vs("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",r,n,t);var a=xW[n.op].call(n,i,h,t);if(a.test===!1)throw new vs("Test operation failed","TEST_OPERATION_FAILED",r,n,t);return a}}else if(s>=u){var a=$g[n.op].call(n,i,h,t);if(a.test===!1)throw new vs("Test operation failed","TEST_OPERATION_FAILED",r,n,t);return a}if(i=i[h],e&&s0)throw new vs('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",n,t,e);if((t.op==="move"||t.op==="copy")&&typeof t.from!="string")throw new vs("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",n,t,e);if((t.op==="add"||t.op==="replace"||t.op==="test")&&t.value===void 0)throw new vs("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",n,t,e);if((t.op==="add"||t.op==="replace"||t.op==="test")&&ak(t.value))throw new vs("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",n,t,e);if(e){if(t.op=="add"){var f=t.path.split("/").length,r=o.split("/").length;if(f!==r+1&&f!==r)throw new vs("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",n,t,e)}else if(t.op==="replace"||t.op==="remove"||t.op==="_get"){if(t.path!==o)throw new vs("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",n,t,e)}else if(t.op==="move"||t.op==="copy"){var a={op:"_get",path:t.from,value:void 0},l=WD([a],e);if(l&&l.name==="OPERATION_PATH_UNRESOLVABLE")throw new vs("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",n,t,e)}}}else throw new vs("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",n,t,e)}function WD(t,n,e){try{if(!Array.isArray(t))throw new vs("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(n)X2(Zu(n),Zu(t),e||!0);else{e=e||d_;for(var o=0;o0&&(t.patches=[],t.callback&&t.callback(o)),o}function wA(t,n,e,o,f){if(n!==t){typeof n.toJSON=="function"&&(n=n.toJSON());for(var r=rk(n),a=rk(t),l=!1,c=a.length-1;c>=0;c--){var i=a[c],s=t[i];if(nk(n,i)&&!(n[i]===void 0&&s!==void 0&&Array.isArray(n)===!1)){var u=n[i];typeof s=="object"&&s!=null&&typeof u=="object"&&u!=null&&Array.isArray(s)===Array.isArray(u)?wA(s,u,e,o+"/"+Jp(i),f):s!==u&&(f&&e.push({op:"test",path:o+"/"+Jp(i),value:Zu(s)}),e.push({op:"replace",path:o+"/"+Jp(i),value:Zu(u)}))}else Array.isArray(t)===Array.isArray(n)?(f&&e.push({op:"test",path:o+"/"+Jp(i),value:Zu(s)}),e.push({op:"remove",path:o+"/"+Jp(i)}),l=!0):(f&&e.push({op:"test",path:o,value:t}),e.push({op:"replace",path:o,value:n}))}if(!(!l&&r.length==a.length))for(var c=0;c0)return[x,o+d.join(`, +`+v),s].join(` +`+c)}return w}(n,"",0)};function Nu(t,n,e){return t.fields=n||[],t.fname=e,t}function xs(t){return t==null?null:t.fname}function Bl(t){return t==null?null:t.fields}function YD(t){return t.length===1?PW(t[0]):DW(t)}const PW=t=>function(n){return n[t]},DW=t=>{const n=t.length;return function(e){for(let o=0;oa?i():a=l+1:c==="["?(l>a&&i(),f=a=l+1):c==="]"&&(f||Pr("Access path missing open bracket: "+t),f>0&&i(),f=0,a=l+1)}return f&&Pr("Access path missing closing bracket: "+t),o&&Pr("Access path missing closing quote: "+t),l>a&&(l++,i()),n}function Lu(t,n,e){const o=ih(t);return t=o.length===1?o[0]:t,Nu((e&&e.get||YD)(o),[t],n||t)}const Ay=Lu("id"),Hl=Nu(t=>t,[],"identity"),Td=Nu(()=>0,[],"zero"),jm=Nu(()=>1,[],"one"),mc=Nu(()=>!0,[],"true"),md=Nu(()=>!1,[],"false");function IW(t,n,e){const o=[n].concat([].slice.call(e));console[t].apply(console,o)}const XD=0,kA=1,TA=2,ZD=3,JD=4;function AA(t,n,e=IW){let o=t||XD;return{level(f){return arguments.length?(o=+f,this):o},error(){return o>=kA&&e(n||"error","ERROR",arguments),this},warn(){return o>=TA&&e(n||"warn","WARN",arguments),this},info(){return o>=ZD&&e(n||"log","INFO",arguments),this},debug(){return o>=JD&&e(n||"log","DEBUG",arguments),this}}}var Ir=Array.isArray;function Ei(t){return t===Object(t)}const SC=t=>t!=="__proto__";function Um(...t){return t.reduce((n,e)=>{for(const o in e)if(o==="signals")n.signals=zW(n.signals,e.signals);else{const f=o==="legend"?{layout:1}:o==="style"?!0:null;Vm(n,o,e[o],f)}return n},{})}function Vm(t,n,e,o){if(!SC(n))return;let f,r;if(Ei(e)&&!Ir(e)){r=Ei(t[n])?t[n]:t[n]={};for(f in e)o&&(o===!0||o[f])?Vm(r,f,e[f]):SC(f)&&(r[f]=e[f])}else t[n]=e}function zW(t,n){if(t==null)return n;const e={},o=[];function f(r){e[r.name]||(e[r.name]=1,o.push(r))}return n.forEach(f),t.forEach(f),o}function Na(t){return t[t.length-1]}function Rl(t){return t==null||t===""?null:+t}const KD=t=>n=>t*Math.exp(n),QD=t=>n=>Math.log(t*n),eI=t=>n=>Math.sign(n)*Math.log1p(Math.abs(n/t)),tI=t=>n=>Math.sign(n)*Math.expm1(Math.abs(n))*t,p_=t=>n=>n<0?-Math.pow(-n,t):Math.pow(n,t);function Z2(t,n,e,o){const f=e(t[0]),r=e(Na(t)),a=(r-f)*n;return[o(f-a),o(r-a)]}function nI(t,n){return Z2(t,n,Rl,Hl)}function rI(t,n){var e=Math.sign(t[0]);return Z2(t,n,QD(e),KD(e))}function iI(t,n,e){return Z2(t,n,p_(e),p_(1/e))}function aI(t,n,e){return Z2(t,n,eI(e),tI(e))}function J2(t,n,e,o,f){const r=o(t[0]),a=o(Na(t)),l=n!=null?o(n):(r+a)/2;return[f(l+(r-l)*e),f(l+(a-l)*e)]}function MA(t,n,e){return J2(t,n,e,Rl,Hl)}function SA(t,n,e){const o=Math.sign(t[0]);return J2(t,n,e,QD(o),KD(o))}function g_(t,n,e,o){return J2(t,n,e,p_(o),p_(1/o))}function EA(t,n,e,o){return J2(t,n,e,eI(o),tI(o))}function oI(t){return 1+~~(new Date(t).getMonth()/3)}function sI(t){return 1+~~(new Date(t).getUTCMonth()/3)}function ki(t){return t!=null?Ir(t)?t:[t]:[]}function lI(t,n,e){let o=t[0],f=t[1],r;return f=e-n?[n,e]:[o=Math.min(Math.max(o,n),e-r),o+r]}function ga(t){return typeof t=="function"}const RW="descending";function CA(t,n,e){e=e||{},n=ki(n)||[];const o=[],f=[],r={},a=e.comparator||FW;return ki(t).forEach((l,c)=>{l!=null&&(o.push(n[c]===RW?-1:1),f.push(l=ga(l)?l:Lu(l,null,e)),(Bl(l)||[]).forEach(i=>r[i]=1))}),f.length===0?null:Nu(a(f,o),Object.keys(r))}const K2=(t,n)=>(tn||n==null)&&t!=null?1:(n=n instanceof Date?+n:n,(t=t instanceof Date?+t:t)!==t&&n===n?-1:n!==n&&t===t?1:0),FW=(t,n)=>t.length===1?NW(t[0],n[0]):BW(t,n,t.length),NW=(t,n)=>function(e,o){return K2(t(e),t(o))*n},BW=(t,n,e)=>(n.push(0),function(o,f){let r,a=0,l=-1;for(;a===0&&++lt}function OA(t,n){let e;return o=>{e&&clearTimeout(e),e=setTimeout(()=>(n(o),e=null),t)}}function pa(t){for(let n,e,o=1,f=arguments.length;oa&&(a=f))}else{for(f=n(t[e]);ea&&(a=f))}return[r,a]}function uI(t,n){const e=t.length;let o=-1,f,r,a,l,c;if(n==null){for(;++o=r){f=a=r;break}if(o===e)return[-1,-1];for(l=c=o;++or&&(f=r,l=o),a=r){f=a=r;break}if(o===e)return[-1,-1];for(l=c=o;++or&&(f=r,l=o),a{f.set(r,t[r])}),f}function cI(t,n,e,o,f,r){if(!e&&e!==0)return r;const a=+e;let l=t[0],c=Na(t),i;cr&&(a=f,f=r,r=a),e=e===void 0||e,o=o===void 0||o,(e?f<=t:fl.replace(/\\(.)/g,"$1")):ki(t));const o=t&&t.length,f=e&&e.get||YD,r=l=>f(n?[l]:ih(l));let a;if(!o)a=function(){return""};else if(o===1){const l=r(t[0]);a=function(c){return""+l(c)}}else{const l=t.map(r);a=function(c){let i=""+l[0](c),s=0;for(;++s{n={},e={},o=0},r=(a,l)=>(++o>t&&(e=n,n={},o=1),n[a]=l);return f(),{clear:f,has:a=>qi(n,a)||qi(e,a),get:a=>qi(n,a)?n[a]:qi(e,a)?r(a,e[a]):void 0,set:(a,l)=>qi(n,a)?n[a]=l:r(a,l)}}function gI(t,n,e,o){const f=n.length,r=e.length;if(!r)return n;if(!f)return e;const a=o||new n.constructor(f+r);let l=0,c=0,i=0;for(;l0?e[c++]:n[l++];for(;l=0;)e+=t;return e}function mI(t,n,e,o){const f=e||" ",r=t+"",a=n-r.length;return a<=0?r:o==="left"?av(f,a)+r:o==="center"?av(f,~~(a/2))+r+av(f,Math.ceil(a/2)):r+av(f,a)}function My(t){return t&&Na(t)-t[0]||0}function oi(t){return Ir(t)?"["+t.map(oi)+"]":Ei(t)||bi(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function PA(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const VW=t=>wo(t)||Bd(t)?t:Date.parse(t);function DA(t,n){return n=n||VW,t==null||t===""?null:n(t)}function IA(t){return t==null||t===""?null:t+""}function uf(t){const n={},e=t.length;for(let o=0;o1)o=ZW(t,n,e);else for(f=0,o=new Array(r=t.arcs.length);f=a&&(o=a-f,f+=o/++e,r+=o*(a-f));else{let a=-1;for(let l of t)(l=n(l,++a,t))!=null&&(l=+l)>=l&&(o=l-f,f+=o/++e,r+=o*(l-f))}if(e>1)return r/(e-1)}function KW(t,n){const e=JW(t,n);return e&&Math.sqrt(e)}class cu{constructor(){this._partials=new Float64Array(32),this._n=0}add(n){const e=this._partials;let o=0;for(let f=0;f0){for(a=n[--e];e>0&&(o=a,f=n[--e],a=o+f,r=f-(a-o),!r););e>0&&(r<0&&n[e-1]<0||r>0&&n[e-1]>0)&&(f=r*2,o=a+f,f==o-a&&(a=o))}return a}}class CC extends Map{constructor(n,e=_I){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),n!=null)for(const[o,f]of n)this.set(o,f)}get(n){return super.get(sk(this,n))}has(n){return super.has(sk(this,n))}set(n,e){return super.set(xI(this,n),e)}delete(n){return super.delete(bI(this,n))}}class m_ extends Set{constructor(n,e=_I){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),n!=null)for(const o of n)this.add(o)}has(n){return super.has(sk(this,n))}add(n){return super.add(xI(this,n))}delete(n){return super.delete(bI(this,n))}}function sk({_intern:t,_key:n},e){const o=n(e);return t.has(o)?t.get(o):e}function xI({_intern:t,_key:n},e){const o=n(e);return t.has(o)?t.get(o):(t.set(o,e),e)}function bI({_intern:t,_key:n},e){const o=n(e);return t.has(o)&&(e=t.get(o),t.delete(o)),e}function _I(t){return t!==null&&typeof t=="object"?t.valueOf():t}function QW(t,n){return Array.from(n,e=>t[e])}function eY(t=qv){if(t===qv)return wI;if(typeof t!="function")throw new TypeError("compare is not a function");return(n,e)=>{const o=t(n,e);return o||o===0?o:(t(e,e)===0)-(t(n,n)===0)}}function wI(t,n){return(t==null||!(t>=t))-(n==null||!(n>=n))||(tn?1:0)}function f0(t,n){let e;if(n===void 0)for(const o of t)o!=null&&(e=o)&&(e=o);else{let o=-1;for(let f of t)(f=n(f,++o,t))!=null&&(e=f)&&(e=f)}return e}function lk(t,n){let e;if(n===void 0)for(const o of t)o!=null&&(e>o||e===void 0&&o>=o)&&(e=o);else{let o=-1;for(let f of t)(f=n(f,++o,t))!=null&&(e>f||e===void 0&&f>=f)&&(e=f)}return e}function kI(t,n,e=0,o=t.length-1,f){for(f=f===void 0?wI:eY(f);o>e;){if(o-e>600){const c=o-e+1,i=n-e+1,s=Math.log(c),u=.5*Math.exp(2*s/3),d=.5*Math.sqrt(s*u*(c-u)/c)*(i-c/2<0?-1:1),h=Math.max(e,Math.floor(n-i*u/c+d)),m=Math.min(o,Math.floor(n+(c-i)*u/c+d));kI(t,n,h,m,f)}const r=t[n];let a=e,l=o;for(P1(t,e,n),f(t[o],r)>0&&P1(t,e,o);a0;)--l}f(t[e],r)===0?P1(t,e,l):(++l,P1(t,l,o)),l<=n&&(e=l+1),n<=l&&(o=l-1)}return t}function P1(t,n,e){const o=t[n];t[n]=t[e],t[e]=o}function uk(t,n,e){if(t=Float64Array.from(UG(t,e)),!!(o=t.length)){if((n=+n)<=0||o<2)return lk(t);if(n>=1)return f0(t);var o,f=(o-1)*n,r=Math.floor(f),a=f0(kI(t,r).subarray(0,r+1)),l=lk(t.subarray(r+1));return a+(l-a)*(f-r)}}function TI(t,n,e=jG){if(!!(o=t.length)){if((n=+n)<=0||o<2)return+e(t[0],0,t);if(n>=1)return+e(t[o-1],o-1,t);var o,f=(o-1)*n,r=Math.floor(f),a=+e(t[r],r,t),l=+e(t[r+1],r+1,t);return a+(l-a)*(f-r)}}function tY(t,n){let e=0,o=0;if(n===void 0)for(let f of t)f!=null&&(f=+f)>=f&&(++e,o+=f);else{let f=-1;for(let r of t)(r=n(r,++f,t))!=null&&(r=+r)>=r&&(++e,o+=r)}if(e)return o/e}function AI(t,n){return uk(t,.5,n)}function*nY(t){for(const n of t)yield*n}function MI(t){return Array.from(nY(t))}function Ju(t,n,e){t=+t,n=+n,e=(f=arguments.length)<2?(n=t,t=0,1):f<3?1:+e;for(var o=-1,f=Math.max(0,Math.ceil((n-t)/e))|0,r=new Array(f);++o0))return c;do c.push(i=new Date(+r)),n(r,l),t(r);while(i=a)for(;t(a),!r(a);)a.setTime(a-1)},function(a,l){if(a>=a)if(l<0)for(;++l<=0;)for(;n(a,-1),!r(a););else for(;--l>=0;)for(;n(a,1),!r(a););})},e&&(f.count=function(r,a){return C5.setTime(+r),O5.setTime(+a),t(C5),t(O5),Math.floor(e(C5,O5))},f.every=function(r){return r=Math.floor(r),!isFinite(r)||!(r>0)?null:r>1?f.filter(o?function(a){return o(a)%r===0}:function(a){return f.count(0,a)%r===0}):f}),f}var ck=ul(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});ck.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?ul(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):ck};var zA=ck;const zh=1e3,cc=zh*60,Rh=cc*60,b0=Rh*24,RA=b0*7,OC=b0*30,L5=b0*365;var oY=ul(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+n*zh)},function(t,n){return(n-t)/zh},function(t){return t.getUTCSeconds()}),Sd=oY,sY=ul(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*zh)},function(t,n){t.setTime(+t+n*cc)},function(t,n){return(n-t)/cc},function(t){return t.getMinutes()}),FA=sY,lY=ul(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*zh-t.getMinutes()*cc)},function(t,n){t.setTime(+t+n*Rh)},function(t,n){return(n-t)/Rh},function(t){return t.getHours()}),NA=lY,uY=ul(t=>t.setHours(0,0,0,0),(t,n)=>t.setDate(t.getDate()+n),(t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*cc)/b0,t=>t.getDate()-1),jd=uY;function U0(t){return ul(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(n,e){n.setDate(n.getDate()+e*7)},function(n,e){return(e-n-(e.getTimezoneOffset()-n.getTimezoneOffset())*cc)/RA})}var Sy=U0(0),fk=U0(1);U0(2);U0(3);var $v=U0(4);U0(5);U0(6);var cY=ul(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+(n.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()}),v_=cY,EI=ul(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});EI.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ul(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)})};var Yd=EI,fY=ul(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*cc)},function(t,n){return(n-t)/cc},function(t){return t.getUTCMinutes()}),BA=fY,hY=ul(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+n*Rh)},function(t,n){return(n-t)/Rh},function(t){return t.getUTCHours()}),jA=hY,dY=ul(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/b0},function(t){return t.getUTCDate()-1}),Ud=dY;function V0(t){return ul(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCDate(n.getUTCDate()+e*7)},function(n,e){return(e-n)/RA})}var Ey=V0(0),hk=V0(1);V0(2);V0(3);var Gv=V0(4);V0(5);V0(6);var pY=ul(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+(n.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()}),y_=pY,CI=ul(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});CI.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ul(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)})};var Xd=CI;function OI(t,n,e,o,f,r){const a=[[Sd,1,zh],[Sd,5,5*zh],[Sd,15,15*zh],[Sd,30,30*zh],[r,1,cc],[r,5,5*cc],[r,15,15*cc],[r,30,30*cc],[f,1,Rh],[f,3,3*Rh],[f,6,6*Rh],[f,12,12*Rh],[o,1,b0],[o,2,2*b0],[e,1,RA],[n,1,OC],[n,3,3*OC],[t,1,L5]];function l(i,s,u){const d=sp).right(a,d);if(h===a.length)return t.every(x0(i/L5,s/L5,u));if(h===0)return zA.every(Math.max(x0(i,s,u),1));const[m,g]=a[d/a[h-1][2](t[n]=1+e,t),{});function VA(t){const n=ki(t).slice(),e={};return n.length||Pr("Missing time unit."),n.forEach(f=>{qi(P5,f)?e[f]=1:Pr("Invalid time unit: ".concat(f,"."))}),(e[Gs]||e[Il]?1:0)+(e[Pu]||e[jl]||e[Du]?1:0)+(e[Jf]?1:0)>1&&Pr("Incompatible time units: ".concat(t)),n.sort((f,r)=>P5[f]-P5[r]),n}const xY={[wl]:"%Y ",[Pu]:"Q%q ",[jl]:"%b ",[Du]:"%d ",[Gs]:"W%U ",[Il]:"%a ",[Jf]:"%j ",[Qu]:"%H:00",[ec]:"00:%M",[vc]:":%S",[cf]:".%L",["".concat(wl,"-").concat(jl)]:"%Y-%m ",["".concat(wl,"-").concat(jl,"-").concat(Du)]:"%Y-%m-%d ",["".concat(Qu,"-").concat(ec)]:"%H:%M"};function LI(t,n){const e=pa({},xY,n),o=VA(t),f=o.length;let r="",a=0,l,c;for(a=0;aa;--l)if(c=o.slice(a,l).join("-"),e[c]!=null){r+=e[c],a=l;break}return r.trim()}const Qp=new Date;function qA(t){return Qp.setFullYear(t),Qp.setMonth(0),Qp.setDate(1),Qp.setHours(0,0,0,0),Qp}function PI(t){return II(new Date(t))}function DI(t){return dk(new Date(t))}function II(t){return jd.count(qA(t.getFullYear())-1,t)}function dk(t){return Sy.count(qA(t.getFullYear())-1,t)}function pk(t){return qA(t).getDay()}function bY(t,n,e,o,f,r,a){if(0<=t&&t<100){const l=new Date(-1,n,e,o,f,r,a);return l.setFullYear(t),l}return new Date(t,n,e,o,f,r,a)}function zI(t){return FI(new Date(t))}function RI(t){return gk(new Date(t))}function FI(t){const n=Date.UTC(t.getUTCFullYear(),0,1);return Ud.count(n-1,t)}function gk(t){const n=Date.UTC(t.getUTCFullYear(),0,1);return Ey.count(n-1,t)}function mk(t){return Qp.setTime(Date.UTC(t,0,1)),Qp.getUTCDay()}function _Y(t,n,e,o,f,r,a){if(0<=t&&t<100){const l=new Date(Date.UTC(-1,n,e,o,f,r,a));return l.setUTCFullYear(e.y),l}return new Date(Date.UTC(t,n,e,o,f,r,a))}function NI(t,n,e,o,f){const r=n||1,a=Na(t),l=(v,y,x)=>(x=x||v,wY(e[x],o[x],v===a&&r,y)),c=new Date,i=uf(t),s=i[wl]?l(wl):$l(2012),u=i[jl]?l(jl):i[Pu]?l(Pu):Td,d=i[Gs]&&i[Il]?l(Il,1,Gs+Il):i[Gs]?l(Gs,1):i[Il]?l(Il,1):i[Du]?l(Du,1):i[Jf]?l(Jf,1):jm,h=i[Qu]?l(Qu):Td,m=i[ec]?l(ec):Td,g=i[vc]?l(vc):Td,p=i[cf]?l(cf):Td;return function(v){c.setTime(+v);const y=s(c);return f(y,u(c),d(c,y),h(c),m(c),g(c),p(c))}}function wY(t,n,e,o){const f=e<=1?t:o?(r,a)=>o+e*Math.floor((t(r,a)-o)/e):(r,a)=>e*Math.floor(t(r,a)/e);return n?(r,a)=>n(f(r,a),a):f}function lm(t,n,e){return n+t*7-(e+6)%7}const kY={[wl]:t=>t.getFullYear(),[Pu]:t=>Math.floor(t.getMonth()/3),[jl]:t=>t.getMonth(),[Du]:t=>t.getDate(),[Qu]:t=>t.getHours(),[ec]:t=>t.getMinutes(),[vc]:t=>t.getSeconds(),[cf]:t=>t.getMilliseconds(),[Jf]:t=>II(t),[Gs]:t=>dk(t),[Gs+Il]:(t,n)=>lm(dk(t),t.getDay(),pk(n)),[Il]:(t,n)=>lm(1,t.getDay(),pk(n))},TY={[Pu]:t=>3*t,[Gs]:(t,n)=>lm(t,0,pk(n))};function BI(t,n){return NI(t,n||1,kY,TY,bY)}const AY={[wl]:t=>t.getUTCFullYear(),[Pu]:t=>Math.floor(t.getUTCMonth()/3),[jl]:t=>t.getUTCMonth(),[Du]:t=>t.getUTCDate(),[Qu]:t=>t.getUTCHours(),[ec]:t=>t.getUTCMinutes(),[vc]:t=>t.getUTCSeconds(),[cf]:t=>t.getUTCMilliseconds(),[Jf]:t=>FI(t),[Gs]:t=>gk(t),[Il]:(t,n)=>lm(1,t.getUTCDay(),mk(n)),[Gs+Il]:(t,n)=>lm(gk(t),t.getUTCDay(),mk(n))},MY={[Pu]:t=>3*t,[Gs]:(t,n)=>lm(t,0,mk(n))};function jI(t,n){return NI(t,n||1,AY,MY,_Y)}const SY={[wl]:Yd,[Pu]:v_.every(3),[jl]:v_,[Gs]:Sy,[Du]:jd,[Il]:jd,[Jf]:jd,[Qu]:NA,[ec]:FA,[vc]:Sd,[cf]:zA},EY={[wl]:Xd,[Pu]:y_.every(3),[jl]:y_,[Gs]:Ey,[Du]:Ud,[Il]:Ud,[Jf]:Ud,[Qu]:jA,[ec]:BA,[vc]:Sd,[cf]:zA};function Hm(t){return SY[t]}function $m(t){return EY[t]}function UI(t,n,e){return t?t.offset(n,e):void 0}function VI(t,n,e){return UI(Hm(t),n,e)}function qI(t,n,e){return UI($m(t),n,e)}function HI(t,n,e,o){return t?t.range(n,e,o):void 0}function $I(t,n,e,o){return HI(Hm(t),n,e,o)}function GI(t,n,e,o){return HI($m(t),n,e,o)}const ov=1e3,sv=ov*60,lv=sv*60,Q2=lv*24,CY=Q2*7,LC=Q2*30,vk=Q2*365,WI=[wl,jl,Du,Qu,ec,vc,cf],uv=WI.slice(0,-1),cv=uv.slice(0,-1),fv=cv.slice(0,-1),OY=fv.slice(0,-1),LY=[wl,Gs],PC=[wl,jl],YI=[wl],D1=[[uv,1,ov],[uv,5,5*ov],[uv,15,15*ov],[uv,30,30*ov],[cv,1,sv],[cv,5,5*sv],[cv,15,15*sv],[cv,30,30*sv],[fv,1,lv],[fv,3,3*lv],[fv,6,6*lv],[fv,12,12*lv],[OY,1,Q2],[LY,1,CY],[PC,1,LC],[PC,3,3*LC],[YI,1,vk]];function XI(t){const n=t.extent,e=t.maxbins||40,o=Math.abs(My(n))/e;let f=q2(l=>l[2]).right(D1,o),r,a;return f===D1.length?(r=YI,a=x0(n[0]/vk,n[1]/vk,e)):f?(f=D1[o/D1[f-1][2]53)return null;"w"in H||(H.w=1),"Z"in H?(ee=I5(I1(H.y,0,1)),ie=ee.getUTCDay(),ee=ie>4||ie===0?hk.ceil(ee):hk(ee),ee=Ud.offset(ee,(H.V-1)*7),H.y=ee.getUTCFullYear(),H.m=ee.getUTCMonth(),H.d=ee.getUTCDate()+(H.w+6)%7):(ee=D5(I1(H.y,0,1)),ie=ee.getDay(),ee=ie>4||ie===0?fk.ceil(ee):fk(ee),ee=jd.offset(ee,(H.V-1)*7),H.y=ee.getFullYear(),H.m=ee.getMonth(),H.d=ee.getDate()+(H.w+6)%7)}else("W"in H||"U"in H)&&("w"in H||(H.w="u"in H?H.u%7:"W"in H?1:0),ie="Z"in H?I5(I1(H.y,0,1)).getUTCDay():D5(I1(H.y,0,1)).getDay(),H.m=0,H.d="W"in H?(H.w+6)%7+H.W*7-(ie+5)%7:H.w+H.U*7-(ie+6)%7);return"Z"in H?(H.H+=H.Z/100|0,H.M+=H.Z%100,I5(H)):D5(H)}}function _(q,$,ne,H){for(var Q=0,ee=$.length,ie=ne.length,ae,ue;Q=ie)return-1;if(ae=$.charCodeAt(Q++),ae===37){if(ae=$.charAt(Q++),ue=k[ae in DC?$.charAt(Q++):ae],!ue||(H=ue(q,ne,H))<0)return-1}else if(ae!=ne.charCodeAt(H++))return-1}return H}function S(q,$,ne){var H=i.exec($.slice(ne));return H?(q.p=s.get(H[0].toLowerCase()),ne+H[0].length):-1}function A(q,$,ne){var H=h.exec($.slice(ne));return H?(q.w=m.get(H[0].toLowerCase()),ne+H[0].length):-1}function M(q,$,ne){var H=u.exec($.slice(ne));return H?(q.w=d.get(H[0].toLowerCase()),ne+H[0].length):-1}function E(q,$,ne){var H=v.exec($.slice(ne));return H?(q.m=y.get(H[0].toLowerCase()),ne+H[0].length):-1}function D(q,$,ne){var H=g.exec($.slice(ne));return H?(q.m=p.get(H[0].toLowerCase()),ne+H[0].length):-1}function O(q,$,ne){return _(q,n,$,ne)}function R(q,$,ne){return _(q,e,$,ne)}function z(q,$,ne){return _(q,o,$,ne)}function L(q){return a[q.getDay()]}function P(q){return r[q.getDay()]}function N(q){return c[q.getMonth()]}function B(q){return l[q.getMonth()]}function G(q){return f[+(q.getHours()>=12)]}function W(q){return 1+~~(q.getMonth()/3)}function K(q){return a[q.getUTCDay()]}function te(q){return r[q.getUTCDay()]}function Y(q){return c[q.getUTCMonth()]}function Z(q){return l[q.getUTCMonth()]}function re(q){return f[+(q.getUTCHours()>=12)]}function U(q){return 1+~~(q.getUTCMonth()/3)}return{format:function(q){var $=b(q+="",x);return $.toString=function(){return q},$},parse:function(q){var $=T(q+="",!1);return $.toString=function(){return q},$},utcFormat:function(q){var $=b(q+="",w);return $.toString=function(){return q},$},utcParse:function(q){var $=T(q+="",!0);return $.toString=function(){return q},$}}}var DC={"-":"",_:" ","0":"0"},cl=/^\s*\d+/,PY=/^%/,DY=/[\\^$*+?|[\]().{}]/g;function Ya(t,n,e){var o=t<0?"-":"",f=(o?-t:t)+"",r=f.length;return o+(r[n.toLowerCase(),e]))}function zY(t,n,e){var o=cl.exec(n.slice(e,e+1));return o?(t.w=+o[0],e+o[0].length):-1}function RY(t,n,e){var o=cl.exec(n.slice(e,e+1));return o?(t.u=+o[0],e+o[0].length):-1}function FY(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.U=+o[0],e+o[0].length):-1}function NY(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.V=+o[0],e+o[0].length):-1}function BY(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.W=+o[0],e+o[0].length):-1}function IC(t,n,e){var o=cl.exec(n.slice(e,e+4));return o?(t.y=+o[0],e+o[0].length):-1}function zC(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.y=+o[0]+(+o[0]>68?1900:2e3),e+o[0].length):-1}function jY(t,n,e){var o=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return o?(t.Z=o[1]?0:-(o[2]+(o[3]||"00")),e+o[0].length):-1}function UY(t,n,e){var o=cl.exec(n.slice(e,e+1));return o?(t.q=o[0]*3-3,e+o[0].length):-1}function VY(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.m=o[0]-1,e+o[0].length):-1}function RC(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.d=+o[0],e+o[0].length):-1}function qY(t,n,e){var o=cl.exec(n.slice(e,e+3));return o?(t.m=0,t.d=+o[0],e+o[0].length):-1}function FC(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.H=+o[0],e+o[0].length):-1}function HY(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.M=+o[0],e+o[0].length):-1}function $Y(t,n,e){var o=cl.exec(n.slice(e,e+2));return o?(t.S=+o[0],e+o[0].length):-1}function GY(t,n,e){var o=cl.exec(n.slice(e,e+3));return o?(t.L=+o[0],e+o[0].length):-1}function WY(t,n,e){var o=cl.exec(n.slice(e,e+6));return o?(t.L=Math.floor(o[0]/1e3),e+o[0].length):-1}function YY(t,n,e){var o=PY.exec(n.slice(e,e+1));return o?e+o[0].length:-1}function XY(t,n,e){var o=cl.exec(n.slice(e));return o?(t.Q=+o[0],e+o[0].length):-1}function ZY(t,n,e){var o=cl.exec(n.slice(e));return o?(t.s=+o[0],e+o[0].length):-1}function NC(t,n){return Ya(t.getDate(),n,2)}function JY(t,n){return Ya(t.getHours(),n,2)}function KY(t,n){return Ya(t.getHours()%12||12,n,2)}function QY(t,n){return Ya(1+jd.count(Yd(t),t),n,3)}function JI(t,n){return Ya(t.getMilliseconds(),n,3)}function eX(t,n){return JI(t,n)+"000"}function tX(t,n){return Ya(t.getMonth()+1,n,2)}function nX(t,n){return Ya(t.getMinutes(),n,2)}function rX(t,n){return Ya(t.getSeconds(),n,2)}function iX(t){var n=t.getDay();return n===0?7:n}function aX(t,n){return Ya(Sy.count(Yd(t)-1,t),n,2)}function KI(t){var n=t.getDay();return n>=4||n===0?$v(t):$v.ceil(t)}function oX(t,n){return t=KI(t),Ya($v.count(Yd(t),t)+(Yd(t).getDay()===4),n,2)}function sX(t){return t.getDay()}function lX(t,n){return Ya(fk.count(Yd(t)-1,t),n,2)}function uX(t,n){return Ya(t.getFullYear()%100,n,2)}function cX(t,n){return t=KI(t),Ya(t.getFullYear()%100,n,2)}function fX(t,n){return Ya(t.getFullYear()%1e4,n,4)}function hX(t,n){var e=t.getDay();return t=e>=4||e===0?$v(t):$v.ceil(t),Ya(t.getFullYear()%1e4,n,4)}function dX(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Ya(n/60|0,"0",2)+Ya(n%60,"0",2)}function BC(t,n){return Ya(t.getUTCDate(),n,2)}function pX(t,n){return Ya(t.getUTCHours(),n,2)}function gX(t,n){return Ya(t.getUTCHours()%12||12,n,2)}function mX(t,n){return Ya(1+Ud.count(Xd(t),t),n,3)}function QI(t,n){return Ya(t.getUTCMilliseconds(),n,3)}function vX(t,n){return QI(t,n)+"000"}function yX(t,n){return Ya(t.getUTCMonth()+1,n,2)}function xX(t,n){return Ya(t.getUTCMinutes(),n,2)}function bX(t,n){return Ya(t.getUTCSeconds(),n,2)}function _X(t){var n=t.getUTCDay();return n===0?7:n}function wX(t,n){return Ya(Ey.count(Xd(t)-1,t),n,2)}function ez(t){var n=t.getUTCDay();return n>=4||n===0?Gv(t):Gv.ceil(t)}function kX(t,n){return t=ez(t),Ya(Gv.count(Xd(t),t)+(Xd(t).getUTCDay()===4),n,2)}function TX(t){return t.getUTCDay()}function AX(t,n){return Ya(hk.count(Xd(t)-1,t),n,2)}function MX(t,n){return Ya(t.getUTCFullYear()%100,n,2)}function SX(t,n){return t=ez(t),Ya(t.getUTCFullYear()%100,n,2)}function EX(t,n){return Ya(t.getUTCFullYear()%1e4,n,4)}function CX(t,n){var e=t.getUTCDay();return t=e>=4||e===0?Gv(t):Gv.ceil(t),Ya(t.getUTCFullYear()%1e4,n,4)}function OX(){return"+0000"}function jC(){return"%"}function UC(t){return+t}function VC(t){return Math.floor(+t/1e3)}var Cg,HA,tz,$A,nz;LX({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function LX(t){return Cg=ZI(t),HA=Cg.format,tz=Cg.parse,$A=Cg.utcFormat,nz=Cg.utcParse,Cg}function hv(t){const n={};return e=>n[e]||(n[e]=t(e))}function PX(t,n){return e=>{const o=t(e),f=o.indexOf(n);if(f<0)return o;let r=DX(o,f);const a=rf;)if(o[r]!=="0"){++r;break}return o.slice(0,r)+a}}function DX(t,n){let e=t.lastIndexOf("e"),o;if(e>0)return e;for(e=t.length;--e>n;)if(o=t.charCodeAt(e),o>=48&&o<=57)return e+1}function rz(t){const n=hv(t.format),e=t.formatPrefix;return{format:n,formatPrefix:e,formatFloat(o){const f=Q4(o||",");if(f.precision==null){switch(f.precision=12,f.type){case"%":f.precision-=2;break;case"e":f.precision-=1;break}return PX(n(f),n(".1f")(1)[1])}else return n(f)},formatSpan(o,f,r,a){a=Q4(a??",f");const l=x0(o,f,r),c=Math.max(Math.abs(o),Math.abs(f));let i;if(a.precision==null)switch(a.type){case"s":return isNaN(i=HG(l,c))||(a.precision=i),e(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(i=qG(l,c))||(a.precision=i-(a.type==="e"));break}case"f":case"%":{isNaN(i=VG(l))||(a.precision=i-(a.type==="%")*2);break}}return n(a)}}}let yk;iz();function iz(){return yk=rz({format:BD,formatPrefix:$G})}function az(t){return rz(GG(t))}function x_(t){return arguments.length?yk=az(t):yk}function qC(t,n,e){e=e||{},Ei(e)||Pr("Invalid time multi-format specifier: ".concat(e));const o=n(vc),f=n(ec),r=n(Qu),a=n(Du),l=n(Gs),c=n(jl),i=n(Pu),s=n(wl),u=t(e[cf]||".%L"),d=t(e[vc]||":%S"),h=t(e[ec]||"%I:%M"),m=t(e[Qu]||"%I %p"),g=t(e[Du]||e[Il]||"%a %d"),p=t(e[Gs]||"%b %d"),v=t(e[jl]||"%B"),y=t(e[Pu]||"%B"),x=t(e[wl]||"%Y");return w=>(o(w)bi(o)?n(o):qC(n,Hm,o),utcFormat:o=>bi(o)?e(o):qC(e,$m,o),timeParse:hv(t.parse),utcParse:hv(t.utcParse)}}let xk;sz();function sz(){return xk=oz({format:HA,parse:tz,utcFormat:$A,utcParse:nz})}function lz(t){return oz(ZI(t))}function Wv(t){return arguments.length?xk=lz(t):xk}const bk=(t,n)=>pa({},t,n);function uz(t,n){const e=t?az(t):x_(),o=n?lz(n):Wv();return bk(e,o)}function GA(t,n){const e=arguments.length;return e&&e!==2&&Pr("defaultLocale expects either zero or two arguments."),e?bk(x_(t),Wv(n)):bk(x_(),Wv())}function IX(){return iz(),sz(),GA()}const zX=/^(data:|([A-Za-z]+:)?\/\/)/,RX=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,FX=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,HC="file://";function NX(t,n){return e=>({options:e||{},sanitize:jX,load:BX,fileAccess:!!n,file:UX(n),http:qX(t)})}async function BX(t,n){const e=await this.sanitize(t,n),o=e.href;return e.localFile?this.file(o):this.http(o,n)}async function jX(t,n){n=pa({},this.options,n);const e=this.fileAccess,o={href:null};let f,r,a;const l=RX.test(t.replace(FX,""));(t==null||typeof t!="string"||!l)&&Pr("Sanitize failure, invalid URI: "+oi(t));const c=zX.test(t);return(a=n.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),r=(f=t.startsWith(HC))||n.mode==="file"||n.mode!=="http"&&!c&&e,f?t=t.slice(HC.length):t.startsWith("//")&&(n.defaultProtocol==="file"?(t=t.slice(2),r=!0):t=(n.defaultProtocol||"http")+":"+t),Object.defineProperty(o,"localFile",{value:!!r}),o.href=t,n.target&&(o.target=n.target+""),n.rel&&(o.rel=n.rel+""),n.context==="image"&&n.crossOrigin&&(o.crossOrigin=n.crossOrigin+""),o}function UX(t){return t?n=>new Promise((e,o)=>{t.readFile(n,(f,r)=>{f?o(f):e(r)})}):VX}async function VX(){Pr("No file system access.")}function qX(t){return t?async function(n,e){const o=pa({},this.options.http,e),f=e&&e.response,r=await t(n,o);return r.ok?ga(r[f])?r[f]():r.text():Pr(r.status+""+r.statusText)}:HX}async function HX(){Pr("No HTTP fetch method available.")}const $X=t=>t!=null&&t===t,GX=t=>t==="true"||t==="false"||t===!0||t===!1,WX=t=>!Number.isNaN(Date.parse(t)),cz=t=>!Number.isNaN(+t)&&!(t instanceof Date),YX=t=>cz(t)&&Number.isInteger(+t),_k={boolean:PA,integer:Rl,number:Rl,date:DA,string:IA,unknown:Hl},eb=[GX,YX,cz,WX],XX=["boolean","integer","number","date"];function fz(t,n){if(!t||!t.length)return"unknown";const e=t.length,o=eb.length,f=eb.map((r,a)=>a+1);for(let r=0,a=0,l,c;rr===0?a:r,0)-1]}function hz(t,n){return n.reduce((e,o)=>(e[o]=fz(t,o),e),{})}function $C(t){const n=function(e,o){const f={delimiter:t};return WA(e,o?pa(o,f):f)};return n.responseType="text",n}function WA(t,n){return n.header&&(t=n.header.map(oi).join(n.delimiter)+` +`+t),cW(n.delimiter).parse(t+"")}WA.responseType="text";function ZX(t){return typeof Buffer=="function"&&ga(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function YA(t,n){const e=n&&n.property?Lu(n.property):Hl;return Ei(t)&&!ZX(t)?JX(e(t),n):e(JSON.parse(t))}YA.responseType="json";function JX(t,n){return!Ir(t)&&fI(t)&&(t=[...t]),n&&n.copy?JSON.parse(JSON.stringify(t)):t}const KX={interior:(t,n)=>t!==n,exterior:(t,n)=>t===n};function dz(t,n){let e,o,f,r;return t=YA(t,n),n&&n.feature?(e=GW,f=n.feature):n&&n.mesh?(e=YW,f=n.mesh,r=KX[n.filter]):Pr("Missing TopoJSON feature or mesh parameter."),o=(o=t.objects[f])?e(t,o,r):Pr("Invalid TopoJSON object: "+f),o&&o.features||[o]}dz.responseType="json";const jb={dsv:WA,csv:$C(","),tsv:$C(" "),json:YA,topojson:dz};function XA(t,n){return arguments.length>1?(jb[t]=n,this):qi(jb,t)?jb[t]:null}function pz(t){const n=XA(t);return n&&n.responseType||"text"}function gz(t,n,e,o){n=n||{};const f=XA(n.type||"json");return f||Pr("Unknown data format type: "+n.type),t=f(t,n),n.parse&&QX(t,n.parse,e,o),qi(t,"columns")&&delete t.columns,t}function QX(t,n,e,o){if(!t.length)return;const f=Wv();e=e||f.timeParse,o=o||f.utcParse;let r=t.columns||Object.keys(t[0]),a,l,c,i,s,u;n==="auto"&&(n=hz(t,r)),r=Object.keys(n);const d=r.map(h=>{const m=n[h];let g,p;if(m&&(m.startsWith("date:")||m.startsWith("utc:")))return g=m.split(/:(.+)?/,2),p=g[1],(p[0]==="'"&&p[p.length-1]==="'"||p[0]==='"'&&p[p.length-1]==='"')&&(p=p.slice(1,-1)),(g[0]==="utc"?o:e)(p);if(!_k[m])throw Error("Illegal format pattern: "+h+":"+m);return _k[m]});for(c=0,s=t.length,u=r.length;c{const r=n(f);return o[r]||(o[r]=1,e.push(f)),e},e.remove=f=>{const r=n(f);if(o[r]){o[r]=0;const a=e.indexOf(f);a>=0&&e.splice(a,1)}return e},e}async function Ub(t,n){try{await n(t)}catch(e){t.error(e)}}const mz=Symbol("vega_id");let eZ=1;function nw(t){return!!(t&&$i(t))}function $i(t){return t[mz]}function vz(t,n){return t[mz]=n,t}function ro(t){const n=t===Object(t)?t:{data:t};return $i(n)?n:vz(n,eZ++)}function ZA(t){return rw(t,ro({}))}function rw(t,n){for(const e in t)n[e]=t[e];return n}function yz(t,n){return vz(n,$i(t))}function q0(t,n){return t?n?(e,o)=>t(e,o)||$i(n(e))-$i(n(o)):(e,o)=>t(e,o)||$i(e)-$i(o):null}function xz(t){return t&&t.constructor===H0}function H0(){const t=[],n=[],e=[],o=[],f=[];let r=null,a=!1;return{constructor:H0,insert(l){const c=ki(l),i=c.length;for(let s=0;s{m(y)&&(i[$i(y)]=-1)});for(u=0,d=t.length;u0&&(v(g,m,h.value),l.modifies(m));for(u=0,d=f.length;u{m(y)&&i[$i(y)]>0&&v(y,h.field,h.value)}),l.modifies(h.field);if(a)l.mod=n.length||o.length?c.filter(y=>i[$i(y)]>0):c.slice();else for(p in s)l.mod.push(s[p]);return(r||r==null&&(n.length||o.length))&&l.clean(!0),l}}}const Vb="_:mod:_";function iw(){Object.defineProperty(this,Vb,{writable:!0,value:{}})}iw.prototype={set(t,n,e,o){const f=this,r=f[t],a=f[Vb];return n!=null&&n>=0?(r[n]!==e||o)&&(r[n]=e,a[n+":"+t]=-1,a[t]=-1):(r!==e||o)&&(f[t]=e,a[t]=Ir(e)?1+e.length:-1),f},modified(t,n){const e=this[Vb];if(arguments.length){if(Ir(t)){for(let o=0;o=0?n+1{h instanceof Co?(h!==this&&(n&&h.targets().add(this),r.push(h)),f.push({op:h,name:u,index:d})):o.set(u,d,h)};for(a in t)if(l=t[a],a===nZ)ki(l).forEach(u=>{u instanceof Co?u!==this&&(u.targets().add(this),r.push(u)):Pr("Pulse parameters must be operator instances.")}),this.source=l;else if(Ir(l))for(o.set(a,-1,Array(c=l.length)),i=0;i{const e=Date.now();return e-n>t?(n=e,1):0})},debounce(t){const n=vd();return this.targets().add(vd(null,null,OA(t,e=>{const o=e.dataflow;n.receive(e),o&&o.run&&o.run()}))),n},between(t,n){let e=!1;return t.targets().add(vd(null,null,()=>e=!0)),n.targets().add(vd(null,null,()=>e=!1)),this.filter(()=>e)},detach(){this._filter=mc,this._targets=null}};function uZ(t,n,e,o){const f=this,r=vd(e,o),a=function(i){i.dataflow=f;try{r.receive(i)}catch(s){f.error(s)}finally{f.run()}};let l;typeof t=="string"&&typeof document<"u"?l=document.querySelectorAll(t):l=ki(t);const c=l.length;for(let i=0;in=o);return e.requests=0,e.done=()=>{--e.requests===0&&(t._pending=null,n(t))},t._pending=e}const gZ={skip:!0};function mZ(t,n,e,o,f){return(t instanceof Co?yZ:vZ)(this,t,n,e,o,f),this}function vZ(t,n,e,o,f,r){const a=pa({},r,gZ);let l,c;ga(e)||(e=$l(e)),o===void 0?l=i=>t.touch(e(i)):ga(o)?(c=new Co(null,o,f,!1),l=i=>{c.evaluate(i);const s=e(i),u=c.value;xz(u)?t.pulse(s,u,r):t.update(s,u,a)}):l=i=>t.update(e(i),o,a),n.apply(l)}function yZ(t,n,e,o,f,r){if(o===void 0)n.targets().add(e);else{const a=r||{},l=new Co(null,xZ(e,o),f,!1);l.modified(a.force),l.rank=n.rank,n.targets().add(l),e&&(l.skip(!0),l.value=e.value,l.targets().add(e),t.connect(e,[l]))}}function xZ(t,n){return n=ga(n)?n:$l(n),t?function(e,o){const f=n(e,o);return t.skip()||(t.skip(f!==this.value).value=f),f}:n}function bZ(t){t.rank=++this._rank}function _Z(t){const n=[t];let e,o,f;for(;n.length;)if(this.rank(e=n.pop()),o=e._targets)for(f=o.length;--f>=0;)n.push(e=o[f]),e===t&&Pr("Cycle detected in dataflow graph.")}const b_={},Of=1<<0,bd=1<<1,Eh=1<<2,wZ=Of|bd,WC=Of|Eh,Og=Of|bd|Eh,YC=1<<3,F1=1<<4,XC=1<<5,ZC=1<<6;function Vd(t,n,e){this.dataflow=t,this.stamp=n??-1,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=e||null}function z5(t,n){const e=[];return xd(t,n,o=>e.push(o)),e}function JC(t,n){const e={};return t.visit(n,o=>{e[$i(o)]=1}),o=>e[$i(o)]?null:o}function tb(t,n){return t?(e,o)=>t(e,o)&&n(e,o):n}Vd.prototype={StopPropagation:b_,ADD:Of,REM:bd,MOD:Eh,ADD_REM:wZ,ADD_MOD:WC,ALL:Og,REFLOW:YC,SOURCE:F1,NO_SOURCE:XC,NO_FIELDS:ZC,fork(t){return new Vd(this.dataflow).init(this,t)},clone(){const t=this.fork(Og);return t.add=t.add.slice(),t.rem=t.rem.slice(),t.mod=t.mod.slice(),t.source&&(t.source=t.source.slice()),t.materialize(Og|F1)},addAll(){let t=this;return!t.source||t.add===t.rem||!t.rem.length&&t.source.length===t.add.length||(t=new Vd(this.dataflow).init(this),t.add=t.source,t.rem=[]),t},init(t,n){const e=this;return e.stamp=t.stamp,e.encode=t.encode,t.fields&&!(n&ZC)&&(e.fields=t.fields),n&Of?(e.addF=t.addF,e.add=t.add):(e.addF=null,e.add=[]),n&bd?(e.remF=t.remF,e.rem=t.rem):(e.remF=null,e.rem=[]),n&Eh?(e.modF=t.modF,e.mod=t.mod):(e.modF=null,e.mod=[]),n&XC?(e.srcF=null,e.source=null):(e.srcF=t.srcF,e.source=t.source,t.cleans&&(e.cleans=t.cleans)),e},runAfter(t){this.dataflow.runAfter(t)},changed(t){const n=t||Og;return n&Of&&this.add.length||n&bd&&this.rem.length||n&Eh&&this.mod.length},reflow(t){if(t)return this.fork(Og).reflow();const n=this.add.length,e=this.source&&this.source.length;return e&&e!==n&&(this.mod=this.source,n&&this.filter(Eh,JC(this,Of))),this},clean(t){return arguments.length?(this.cleans=!!t,this):this.cleans},modifies(t){const n=this.fields||(this.fields={});return Ir(t)?t.forEach(e=>n[e]=!0):n[t]=!0,this},modified(t,n){const e=this.fields;return(n||this.mod.length)&&e?arguments.length?Ir(t)?t.some(o=>e[o]):e[t]:!!e:!1},filter(t,n){const e=this;return t&Of&&(e.addF=tb(e.addF,n)),t&bd&&(e.remF=tb(e.remF,n)),t&Eh&&(e.modF=tb(e.modF,n)),t&F1&&(e.srcF=tb(e.srcF,n)),e},materialize(t){t=t||Og;const n=this;return t&Of&&n.addF&&(n.add=z5(n.add,n.addF),n.addF=null),t&bd&&n.remF&&(n.rem=z5(n.rem,n.remF),n.remF=null),t&Eh&&n.modF&&(n.mod=z5(n.mod,n.modF),n.modF=null),t&F1&&n.srcF&&(n.source=n.source.filter(n.srcF),n.srcF=null),n},visit(t,n){const e=this,o=n;if(t&F1)return xd(e.source,e.srcF,o),e;t&Of&&xd(e.add,e.addF,o),t&bd&&xd(e.rem,e.remF,o),t&Eh&&xd(e.mod,e.modF,o);const f=e.source;if(t&YC&&f){const r=e.add.length+e.mod.length;r===f.length||(r?xd(f,JC(e,WC),o):xd(f,e.srcF,o))}return e}};function JA(t,n,e,o){const f=this,r=e.length;let a=0;this.dataflow=t,this.stamp=n,this.fields=null,this.encode=o||null,this.pulses=e;for(let l=0;ln.add.push(e)),t&n.REM&&this.visit(n.REM,e=>n.rem.push(e)),t&n.MOD&&this.visit(n.MOD,e=>n.mod.push(e))),n},changed(t){return this.changes&t},modified(t){const n=this,e=n.fields;return e&&n.changes&n.MOD?Ir(t)?t.some(o=>e[o]):e[t]:0},filter(){Pr("MultiPulse does not support filtering.")},materialize(){Pr("MultiPulse does not support materialization.")},visit(t,n){const e=this,o=e.pulses,f=o.length;let r=0;if(t&e.SOURCE)for(;ro._enqueue(s,!0)),o._touched=tw(Ay);let a=0,l,c,i;try{for(;o._heap.size()>0;){if(l=o._heap.pop(),l.rank!==l.qrank){o._enqueue(l,!0);continue}c=l.run(o._getPulse(l,t)),c.then?c=await c:c.async&&(f.push(c.async),c=b_),c!==b_&&l._targets&&l._targets.forEach(s=>o._enqueue(s)),++a}}catch(s){o._heap.clear(),i=s}if(o._input={},o._pulse=null,o.debug(`Pulse ${r}: ${a} operators`),i&&(o._postrun=[],o.error(i)),o._postrun.length){const s=o._postrun.sort((u,d)=>d.priority-u.priority);o._postrun=[];for(let u=0;uo.runAsync(null,()=>{s.forEach(u=>{try{u(o)}catch(d){o.error(d)}})})),o}async function TZ(t,n,e){for(;this._running;)await this._running;const o=()=>this._running=null;return(this._running=this.evaluate(t,n,e)).then(o,o),this._running}function AZ(t,n,e){return this._pulse?bz(this):(this.evaluate(t,n,e),this)}function MZ(t,n,e){if(this._pulse||n)this._postrun.push({priority:e||0,callback:t});else try{t(this)}catch(o){this.error(o)}}function bz(t){return t.error("Dataflow already running. Use runAsync() to chain invocations."),t}function SZ(t,n){const e=t.stampf.pulse),n):this._input[t.id]||CZ(this._pulse,e&&e.pulse)}function CZ(t,n){return n&&n.stamp===t.stamp?n:(t=t.fork(),n&&n!==b_&&(t.source=n.source),t)}const KA={skip:!1,force:!1};function OZ(t,n){const e=n||KA;return this._pulse?this._enqueue(t):this._touched.add(t),e.skip&&t.skip(!0),this}function LZ(t,n,e){const o=e||KA;return(t.set(n)||o.force)&&this.touch(t,o),this}function PZ(t,n,e){this.touch(t,e||KA);const o=new Vd(this,this._clock+(this._pulse?0:1)),f=t.pulse&&t.pulse.source||[];return o.target=t,this._input[t.id]=n.pulse(o,f),this}function DZ(t){let n=[];return{clear:()=>n=[],size:()=>n.length,peek:()=>n[0],push:e=>(n.push(e),_z(n,0,n.length-1,t)),pop:()=>{const e=n.pop();let o;return n.length?(o=n[0],n[0]=e,IZ(n,0,t)):o=e,o}}}function _z(t,n,e,o){let f,r;const a=t[e];for(;e>n;){if(r=e-1>>1,f=t[r],o(a,f)<0){t[e]=f,e=r;continue}break}return t[e]=a}function IZ(t,n,e){const o=n,f=t.length,r=t[n];let a=(n<<1)+1,l;for(;a=0&&(a=l),t[n]=t[a],n=a,a=(n<<1)+1;return t[n]=r,_z(t,o,n,e)}function Kg(){this.logger(AA()),this.logLevel(kA),this._clock=0,this._rank=0,this._locale=GA();try{this._loader=ew()}catch{}this._touched=tw(Ay),this._input={},this._pulse=null,this._heap=DZ((t,n)=>t.qrank-n.qrank),this._postrun=[]}function N1(t){return function(){return this._log[t].apply(this,arguments)}}Kg.prototype={stamp(){return this._clock},loader(t){return arguments.length?(this._loader=t,this):this._loader},locale(t){return arguments.length?(this._locale=t,this):this._locale},logger(t){return arguments.length?(this._log=t,this):this._log},error:N1("error"),warn:N1("warn"),info:N1("info"),debug:N1("debug"),logLevel:N1("level"),cleanThreshold:1e4,add:oZ,connect:sZ,rank:bZ,rerank:_Z,pulse:PZ,touch:OZ,update:LZ,changeset:H0,ingest:fZ,parse:cZ,preload:dZ,request:hZ,events:uZ,on:mZ,evaluate:kZ,run:AZ,runAsync:TZ,runAfter:MZ,_enqueue:SZ,_getPulse:EZ};function _r(t,n){Co.call(this,t,null,n)}ni(_r,Co,{run(t){if(t.stampthis.pulse=e):n!==t.StopPropagation&&(this.pulse=n),n},evaluate(t){const n=this.marshall(t.stamp),e=this.transform(n,t);return n.clear(),e},transform(){}});const um={};function wz(t){const n=kz(t);return n&&n.Definition||null}function kz(t){return t=t&&t.toLowerCase(),qi(um,t)?um[t]:null}function*Tz(t,n){if(n==null)for(let e of t)e!=null&&e!==""&&(e=+e)>=e&&(yield e);else{let e=-1;for(let o of t)o=n(o,++e,t),o!=null&&o!==""&&(o=+o)>=o&&(yield o)}}function QA(t,n,e){const o=Float64Array.from(Tz(t,e));return o.sort(qv),n.map(f=>TI(o,f))}function e6(t,n){return QA(t,[.25,.5,.75],n)}function t6(t,n){const e=t.length,o=KW(t,n),f=e6(t,n),r=(f[2]-f[0])/1.34,a=Math.min(o,r)||o||Math.abs(f[0])||1;return 1.06*a*Math.pow(e,-.2)}function Az(t){const n=t.maxbins||20,e=t.base||10,o=Math.log(e),f=t.divide||[5,2];let r=t.extent[0],a=t.extent[1],l,c,i,s,u,d;const h=t.span||a-r||Math.abs(r)||1;if(t.step)l=t.step;else if(t.steps){for(s=h/n,u=0,d=t.steps.length;un;)l*=e;for(u=0,d=f.length;u=i&&h/s<=n&&(l=s)}s=Math.log(l);const m=s>=0?0:~~(-s/o)+1,g=Math.pow(e,-m-1);return(t.nice||t.nice===void 0)&&(s=Math.floor(r/l+g)*l,r=rd);const f=t.length,r=new Float64Array(f);let a=0,l=1,c=o(t[0]),i=c,s=c+n,u;for(;l=s){for(i=(c+i)/2;a>1);af;)t[a--]=t[o]}o=f,f=r}return t}function FZ(t){return function(){return t=(1103515245*t+12345)%2147483647,t/2147483647}}function NZ(t,n){n==null&&(n=t,t=0);let e,o,f;const r={min(a){return arguments.length?(e=a||0,f=o-e,r):e},max(a){return arguments.length?(o=a||0,f=o-e,r):o},sample(){return e+Math.floor(f*yc())},pdf(a){return a===Math.floor(a)&&a>=e&&a=o?1:(l-e+1)/f},icdf(a){return a>=0&&a<=1?e-1+Math.floor(a*f):NaN}};return r.min(t).max(n)}const Ez=Math.sqrt(2*Math.PI),BZ=Math.SQRT2;let B1=NaN;function ow(t,n){t=t||0,n=n??1;let e=0,o=0,f,r;if(B1===B1)e=B1,B1=NaN;else{do e=yc()*2-1,o=yc()*2-1,f=e*e+o*o;while(f===0||f>1);r=Math.sqrt(-2*Math.log(f)/f),e*=r,B1=o*r}return t+e*n}function n6(t,n,e){e=e??1;const o=(t-(n||0))/e;return Math.exp(-.5*o*o)/(e*Ez)}function sw(t,n,e){n=n||0,e=e??1;const o=(t-n)/e,f=Math.abs(o);let r;if(f>37)r=0;else{const a=Math.exp(-f*f/2);let l;f<7.07106781186547?(l=.0352624965998911*f+.700383064443688,l=l*f+6.37396220353165,l=l*f+33.912866078383,l=l*f+112.079291497871,l=l*f+221.213596169931,l=l*f+220.206867912376,r=a*l,l=.0883883476483184*f+1.75566716318264,l=l*f+16.064177579207,l=l*f+86.7807322029461,l=l*f+296.564248779674,l=l*f+637.333633378831,l=l*f+793.826512519948,l=l*f+440.413735824752,r=r/l):(l=f+.65,l=f+4/l,l=f+3/l,l=f+2/l,l=f+1/l,r=a/l/2.506628274631)}return o>0?1-r:r}function lw(t,n,e){return t<0||t>1?NaN:(n||0)+(e??1)*BZ*jZ(2*t-1)}function jZ(t){let n=-Math.log((1-t)*(1+t)),e;return n<6.25?(n-=3.125,e=-364441206401782e-35,e=-16850591381820166e-35+e*n,e=128584807152564e-32+e*n,e=11157877678025181e-33+e*n,e=-1333171662854621e-31+e*n,e=20972767875968562e-33+e*n,e=6637638134358324e-30+e*n,e=-4054566272975207e-29+e*n,e=-8151934197605472e-29+e*n,e=26335093153082323e-28+e*n,e=-12975133253453532e-27+e*n,e=-5415412054294628e-26+e*n,e=10512122733215323e-25+e*n,e=-4112633980346984e-24+e*n,e=-29070369957882005e-24+e*n,e=42347877827932404e-23+e*n,e=-13654692000834679e-22+e*n,e=-13882523362786469e-21+e*n,e=.00018673420803405714+e*n,e=-.000740702534166267+e*n,e=-.006033670871430149+e*n,e=.24015818242558962+e*n,e=1.6536545626831027+e*n):n<16?(n=Math.sqrt(n)-3.25,e=22137376921775787e-25,e=9075656193888539e-23+e*n,e=-27517406297064545e-23+e*n,e=18239629214389228e-24+e*n,e=15027403968909828e-22+e*n,e=-4013867526981546e-21+e*n,e=29234449089955446e-22+e*n,e=12475304481671779e-21+e*n,e=-47318229009055734e-21+e*n,e=6828485145957318e-20+e*n,e=24031110387097894e-21+e*n,e=-.0003550375203628475+e*n,e=.0009532893797373805+e*n,e=-.0016882755560235047+e*n,e=.002491442096107851+e*n,e=-.003751208507569241+e*n,e=.005370914553590064+e*n,e=1.0052589676941592+e*n,e=3.0838856104922208+e*n):Number.isFinite(n)?(n=Math.sqrt(n)-5,e=-27109920616438573e-27,e=-2555641816996525e-25+e*n,e=15076572693500548e-25+e*n,e=-3789465440126737e-24+e*n,e=761570120807834e-23+e*n,e=-1496002662714924e-23+e*n,e=2914795345090108e-23+e*n,e=-6771199775845234e-23+e*n,e=22900482228026655e-23+e*n,e=-99298272942317e-20+e*n,e=4526062597223154e-21+e*n,e=-1968177810553167e-20+e*n,e=7599527703001776e-20+e*n,e=-.00021503011930044477+e*n,e=-.00013871931833623122+e*n,e=1.0103004648645344+e*n,e=4.849906401408584+e*n):e=1/0,e*t}function r6(t,n){let e,o;const f={mean(r){return arguments.length?(e=r||0,f):e},stdev(r){return arguments.length?(o=r??1,f):o},sample:()=>ow(e,o),pdf:r=>n6(r,e,o),cdf:r=>sw(r,e,o),icdf:r=>lw(r,e,o)};return f.mean(t).stdev(n)}function i6(t,n){const e=r6();let o=0;const f={data(r){return arguments.length?(t=r,o=r?r.length:0,f.bandwidth(n)):t},bandwidth(r){return arguments.length?(n=r,!n&&t&&(n=t6(t)),f):n},sample(){return t[~~(yc()*o)]+n*e.sample()},pdf(r){let a=0,l=0;for(;la6(e,o),pdf:r=>o6(r,e,o),cdf:r=>s6(r,e,o),icdf:r=>l6(r,e,o)};return f.mean(t).stdev(n)}function Oz(t,n){let e=0,o;function f(a){const l=[];let c=0,i;for(i=0;i=n&&t<=e?1/(e-n):0}function f6(t,n,e){return e==null&&(e=n??1,n=0),te?1:(t-n)/(e-n)}function h6(t,n,e){return e==null&&(e=n??1,n=0),t>=0&&t<=1?n+t*(e-n):NaN}function Lz(t,n){let e,o;const f={min(r){return arguments.length?(e=r||0,f):e},max(r){return arguments.length?(o=r??1,f):o},sample:()=>u6(e,o),pdf:r=>c6(r,e,o),cdf:r=>f6(r,e,o),icdf:r=>h6(r,e,o)};return n==null&&(n=t??1,t=0),f.min(t).max(n)}function Cy(t,n,e,o){const f=o-t*t,r=Math.abs(f)<1e-24?0:(e-t*n)/f;return[n-r*t,r]}function uw(t,n,e,o){t=t.filter(h=>{let m=n(h),g=e(h);return m!=null&&(m=+m)>=m&&g!=null&&(g=+g)>=g}),o&&t.sort((h,m)=>n(h)-n(m));const f=t.length,r=new Float64Array(f),a=new Float64Array(f);let l=0,c=0,i=0,s,u,d;for(d of t)r[l]=s=+n(d),a[l]=u=+e(d),++l,c+=(s-c)/l,i+=(u-i)/l;for(l=0;l=r&&a!=null&&(a=+a)>=a&&o(r,a,++f)}function Gm(t,n,e,o,f){let r=0,a=0;return Oy(t,n,e,(l,c)=>{const i=c-f(l),s=c-o;r+=i*i,a+=s*s}),1-r/a}function d6(t,n,e){let o=0,f=0,r=0,a=0,l=0;Oy(t,n,e,(s,u)=>{++l,o+=(s-o)/l,f+=(u-f)/l,r+=(s*u-r)/l,a+=(s*s-a)/l});const c=Cy(o,f,r,a),i=s=>c[0]+c[1]*s;return{coef:c,predict:i,rSquared:Gm(t,n,e,f,i)}}function Pz(t,n,e){let o=0,f=0,r=0,a=0,l=0;Oy(t,n,e,(s,u)=>{++l,s=Math.log(s),o+=(s-o)/l,f+=(u-f)/l,r+=(s*u-r)/l,a+=(s*s-a)/l});const c=Cy(o,f,r,a),i=s=>c[0]+c[1]*Math.log(s);return{coef:c,predict:i,rSquared:Gm(t,n,e,f,i)}}function Dz(t,n,e){const[o,f,r,a]=uw(t,n,e);let l=0,c=0,i=0,s=0,u=0,d,h,m;Oy(t,n,e,(y,x)=>{d=o[u++],h=Math.log(x),m=d*x,l+=(x*h-l)/u,c+=(m-c)/u,i+=(m*h-i)/u,s+=(d*m-s)/u});const[g,p]=Cy(c/a,l/a,i/a,s/a),v=y=>Math.exp(g+p*(y-r));return{coef:[Math.exp(g-p*r),p],predict:v,rSquared:Gm(t,n,e,a,v)}}function Iz(t,n,e){let o=0,f=0,r=0,a=0,l=0,c=0;Oy(t,n,e,(u,d)=>{const h=Math.log(u),m=Math.log(d);++c,o+=(h-o)/c,f+=(m-f)/c,r+=(h*m-r)/c,a+=(h*h-a)/c,l+=(d-l)/c});const i=Cy(o,f,r,a),s=u=>i[0]*Math.pow(u,i[1]);return i[0]=Math.exp(i[0]),{coef:i,predict:s,rSquared:Gm(t,n,e,l,s)}}function p6(t,n,e){const[o,f,r,a]=uw(t,n,e),l=o.length;let c=0,i=0,s=0,u=0,d=0,h,m,g,p;for(h=0;h(T=T-r,x*T*T+w*T+k+a);return{coef:[k-w*r+x*r*r+a,w-2*x*r,x],predict:b,rSquared:Gm(t,n,e,a,b)}}function zz(t,n,e,o){if(o===1)return d6(t,n,e);if(o===2)return p6(t,n,e);const[f,r,a,l]=uw(t,n,e),c=f.length,i=[],s=[],u=o+1;let d,h,m,g,p;for(d=0;d{x-=a;let w=l+v[0]+v[1]*x+v[2]*x*x;for(d=3;d=0;--r)for(l=n[r],c=1,f[r]+=l,a=1;a<=r;++a)c*=(r+1-a)/a,f[r-a]+=l*Math.pow(e,a)*c;return f[0]+=o,f}function VZ(t){const n=t.length-1,e=[];let o,f,r,a,l;for(o=0;oMath.abs(t[o][a])&&(a=f);for(r=o;r=o;r--)t[r][f]-=t[r][o]*t[o][f]/t[o][o]}for(f=n-1;f>=0;--f){for(l=0,r=f+1;rf[x]-v?y:x;let k=0,b=0,T=0,_=0,S=0;const A=1/Math.abs(f[w]-v||1);for(let D=y;D<=x;++D){const O=f[D],R=r[D],z=qZ(Math.abs(v-O)*A)*d[D],L=O*z;k+=z,b+=L,T+=R*z,_+=R*L,S+=O*L}const[M,E]=Cy(b/k,T/k,_/k,S/k);s[p]=M+E*v,u[p]=Math.abs(r[p]-s[p]),HZ(f,p+1,m)}if(h===KC)break;const g=AI(u);if(Math.abs(g)=1?QC:(y=1-v*v)*y}return $Z(f,s,a,l)}function qZ(t){return(t=1-t*t*t)*t*t}function HZ(t,n,e){const o=t[n];let f=e[0],r=e[1]+1;if(!(r>=t.length))for(;n>f&&t[r]-o<=o-t[f];)e[0]=++f,e[1]=r,++r}function $Z(t,n,e,o){const f=t.length,r=[];let a=0,l=0,c=[],i;for(;a[g,t(g)],r=n[0],a=n[1],l=a-r,c=l/o,i=[f(r)],s=[];if(e===o){for(let g=1;g0;)s.push(f(r+g/e*l))}let u=i[0],d=s[s.length-1];const h=1/l,m=WZ(u[1],s);for(;d;){const g=f((u[0]+d[0])/2);g[0]-u[0]>=c&&YZ(u,g,d,h,m)>GZ?s.push(g):(u=d,i.push(d),s.pop()),d=s[s.length-1]}return i}function WZ(t,n){let e=t,o=t;const f=n.length;for(let r=0;ro&&(o=a)}return 1/(o-e)}function YZ(t,n,e,o,f){const r=Math.atan2(f*(e[1]-t[1]),o*(e[0]-t[0])),a=Math.atan2(f*(n[1]-t[1]),o*(n[0]-t[0]));return Math.abs(r-a)}function XZ(t){return n=>{const e=t.length;let o=1,f=String(t[0](n));for(;o{},ZZ={init:R5,add:R5,rem:R5,idx:0},Yv={values:{init:t=>t.cell.store=!0,value:t=>t.cell.data.values(),idx:-1},count:{value:t=>t.cell.num},__count__:{value:t=>t.missing+t.valid},missing:{value:t=>t.missing},valid:{value:t=>t.valid},sum:{init:t=>t.sum=0,value:t=>t.sum,add:(t,n)=>t.sum+=+n,rem:(t,n)=>t.sum-=n},product:{init:t=>t.product=1,value:t=>t.valid?t.product:void 0,add:(t,n)=>t.product*=n,rem:(t,n)=>t.product/=n},mean:{init:t=>t.mean=0,value:t=>t.valid?t.mean:void 0,add:(t,n)=>(t.mean_d=n-t.mean,t.mean+=t.mean_d/t.valid),rem:(t,n)=>(t.mean_d=n-t.mean,t.mean-=t.valid?t.mean_d/t.valid:t.mean)},average:{value:t=>t.valid?t.mean:void 0,req:["mean"],idx:1},variance:{init:t=>t.dev=0,value:t=>t.valid>1?t.dev/(t.valid-1):void 0,add:(t,n)=>t.dev+=t.mean_d*(n-t.mean),rem:(t,n)=>t.dev-=t.mean_d*(n-t.mean),req:["mean"],idx:1},variancep:{value:t=>t.valid>1?t.dev/t.valid:void 0,req:["variance"],idx:2},stdev:{value:t=>t.valid>1?Math.sqrt(t.dev/(t.valid-1)):void 0,req:["variance"],idx:2},stdevp:{value:t=>t.valid>1?Math.sqrt(t.dev/t.valid):void 0,req:["variance"],idx:2},stderr:{value:t=>t.valid>1?Math.sqrt(t.dev/(t.valid*(t.valid-1))):void 0,req:["variance"],idx:2},distinct:{value:t=>t.cell.data.distinct(t.get),req:["values"],idx:3},ci0:{value:t=>t.cell.data.ci0(t.get),req:["values"],idx:3},ci1:{value:t=>t.cell.data.ci1(t.get),req:["values"],idx:3},median:{value:t=>t.cell.data.q2(t.get),req:["values"],idx:3},q1:{value:t=>t.cell.data.q1(t.get),req:["values"],idx:3},q3:{value:t=>t.cell.data.q3(t.get),req:["values"],idx:3},min:{init:t=>t.min=void 0,value:t=>t.min=Number.isNaN(t.min)?t.cell.data.min(t.get):t.min,add:(t,n)=>{(n{n<=t.min&&(t.min=NaN)},req:["values"],idx:4},max:{init:t=>t.max=void 0,value:t=>t.max=Number.isNaN(t.max)?t.cell.data.max(t.get):t.max,add:(t,n)=>{(n>t.max||t.max===void 0)&&(t.max=n)},rem:(t,n)=>{n>=t.max&&(t.max=NaN)},req:["values"],idx:4},argmin:{init:t=>t.argmin=void 0,value:t=>t.argmin||t.cell.data.argmin(t.get),add:(t,n,e)=>{n{n<=t.min&&(t.argmin=void 0)},req:["min","values"],idx:3},argmax:{init:t=>t.argmax=void 0,value:t=>t.argmax||t.cell.data.argmax(t.get),add:(t,n,e)=>{n>t.max&&(t.argmax=e)},rem:(t,n)=>{n>=t.max&&(t.argmax=void 0)},req:["max","values"],idx:3}},Ly=Object.keys(Yv);function JZ(t,n){return e=>pa({name:t,out:e||t},ZZ,n)}Ly.forEach(t=>{Yv[t]=JZ(t,Yv[t])});function Nz(t,n){return Yv[t](n)}function Bz(t,n){return t.idx-n.idx}function KZ(t){const n={};t.forEach(o=>n[o.name]=o);const e=o=>{!o.req||o.req.forEach(f=>{n[f]||e(n[f]=Yv[f]())})};return t.forEach(e),Object.values(n).sort(Bz)}function QZ(){this.valid=0,this.missing=0,this._ops.forEach(t=>t.init(this))}function eJ(t,n){if(t==null||t===""){++this.missing;return}t===t&&(++this.valid,this._ops.forEach(e=>e.add(this,t,n)))}function tJ(t,n){if(t==null||t===""){--this.missing;return}t===t&&(--this.valid,this._ops.forEach(e=>e.rem(this,t,n)))}function nJ(t){return this._out.forEach(n=>t[n.out]=n.value(this)),t}function jz(t,n){const e=n||Hl,o=KZ(t),f=t.slice().sort(Bz);function r(a){this._ops=o,this._out=f,this.cell=a,this.init()}return r.prototype.init=QZ,r.prototype.add=eJ,r.prototype.rem=tJ,r.prototype.set=nJ,r.prototype.get=e,r.fields=t.map(a=>a.out),r}function g6(t){this._key=t?Lu(t):$i,this.reset()}const Tl=g6.prototype;Tl.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null};Tl.add=function(t){this._add.push(t)};Tl.rem=function(t){this._rem.push(t)};Tl.values=function(){if(this._get=null,this._rem.length===0)return this._add;const t=this._add,n=this._rem,e=this._key,o=t.length,f=n.length,r=Array(o-f),a={};let l,c,i;for(l=0;l=0;)r=t(n[o])+"",qi(e,r)||(e[r]=1,++f);return f};Tl.extent=function(t){if(this._get!==t||!this._ext){const n=this.values(),e=uI(n,t);this._ext=[n[e[0]],n[e[1]]],this._get=t}return this._ext};Tl.argmin=function(t){return this.extent(t)[0]||{}};Tl.argmax=function(t){return this.extent(t)[1]||{}};Tl.min=function(t){const n=this.extent(t)[0];return n!=null?t(n):void 0};Tl.max=function(t){const n=this.extent(t)[1];return n!=null?t(n):void 0};Tl.quartile=function(t){return(this._get!==t||!this._q)&&(this._q=e6(this.values(),t),this._get=t),this._q};Tl.q1=function(t){return this.quartile(t)[0]};Tl.q2=function(t){return this.quartile(t)[1]};Tl.q3=function(t){return this.quartile(t)[2]};Tl.ci=function(t){return(this._get!==t||!this._ci)&&(this._ci=Mz(this.values(),1e3,.05,t),this._get=t),this._ci};Tl.ci0=function(t){return this.ci(t)[0]};Tl.ci1=function(t){return this.ci(t)[1]};function Zd(t){_r.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}Zd.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Ly},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]};ni(Zd,_r,{transform(t,n){const e=this,o=n.fork(n.NO_SOURCE|n.NO_FIELDS),f=t.modified();return e.stamp=o.stamp,e.value&&(f||n.modified(e._inputs,!0))?(e._prev=e.value,e.value=f?e.init(t):{},n.visit(n.SOURCE,r=>e.add(r))):(e.value=e.value||e.init(t),n.visit(n.REM,r=>e.rem(r)),n.visit(n.ADD,r=>e.add(r))),o.modifies(e._outputs),e._drop=t.drop!==!1,t.cross&&e._dims.length>1&&(e._drop=!1,e.cross()),n.clean()&&e._drop&&o.clean(!0).runAfter(()=>this.clean()),e.changes(o)},cross(){const t=this,n=t.value,e=t._dnames,o=e.map(()=>({})),f=e.length;function r(l){let c,i,s,u;for(c in l)for(s=l[c].tuple,i=0;i{const v=xs(p);return f(p),e.push(v),v}),this.cellkey=t.key?t.key:wk(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];const r=t.fields||[null],a=t.ops||["count"],l=t.as||[],c=r.length,i={};let s,u,d,h,m,g;for(c!==a.length&&Pr("Unmatched number of fields and aggregate ops."),g=0;gjz(p,p.field)),{}},cellkey:wk(),cell(t,n){let e=this.value[t];return e?e.num===0&&this._drop&&e.stamp{const u=o(s);s[l]=u,s[c]=u==null?null:f+r*(1+(u-f)/r)}:s=>s[l]=o(s)),n.modifies(e?a:l)},_bins(t){if(this.value&&!t.modified())return this.value;const n=t.field,e=Az(t),o=e.step;let f=e.start,r=f+Math.ceil((e.stop-f)/o)*o,a,l;(a=t.anchor)!=null&&(l=a-(f+o*Math.floor((a-f)/o)),f+=l,r+=l);const c=function(i){let s=Rl(n(i));return s==null?null:sr?1/0:(s=Math.max(f,Math.min(s,r-o)),f+o*Math.floor(rJ+(s-f)/o))};return c.start=f,c.stop=e.stop,c.step=o,this.value=Nu(c,Bl(n),t.name||"bin_"+xs(n))}});function Uz(t,n,e){const o=t;let f=n||[],r=e||[],a={},l=0;return{add:c=>r.push(c),remove:c=>a[o(c)]=++l,size:()=>f.length,data:(c,i)=>(l&&(f=f.filter(s=>!a[o(s)]),a={},l=0),i&&c&&f.sort(c),r.length&&(f=c?gI(c,f,r.sort(c)):f.concat(r),r=[]),f)}}function v6(t){_r.call(this,[],t)}v6.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]};ni(v6,_r,{transform(t,n){const e=n.fork(n.ALL),o=Uz($i,this.value,e.materialize(e.ADD).add),f=t.sort,r=n.changed()||f&&(t.modified("sort")||n.modified(f.fields));return e.visit(e.REM,o.remove),this.modified(r),this.value=e.source=o.data(q0(f),r),n.source&&n.source.root&&(this.value.root=n.source.root),e}});function Vz(t){Co.call(this,null,iJ,t)}ni(Vz,Co);function iJ(t){return this.value&&!t.modified()?this.value:CA(t.fields,t.orders)}function y6(t){_r.call(this,null,t)}y6.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]};function aJ(t,n,e){switch(n){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase();break}return t.match(e)}ni(y6,_r,{transform(t,n){const e=u=>d=>{for(var h=aJ(l(d),t.case,r)||[],m,g=0,p=h.length;gf[u]=1+(f[u]||0)),s=e(u=>f[u]-=1);return o?n.visit(n.SOURCE,i):(n.visit(n.ADD,i),n.visit(n.REM,s)),this._finish(n,c)},_parameterCheck(t,n){let e=!1;return(t.modified("stopwords")||!this._stop)&&(this._stop=new RegExp("^"+(t.stopwords||"")+"$","i"),e=!0),(t.modified("pattern")||!this._match)&&(this._match=new RegExp(t.pattern||"[\\w']+","g"),e=!0),(t.modified("field")||n.modified(t.field.fields))&&(e=!0),e&&(this._counts={}),e},_finish(t,n){const e=this._counts,o=this._tuples||(this._tuples={}),f=n[0],r=n[1],a=t.fork(t.NO_SOURCE|t.NO_FIELDS);let l,c,i;for(l in e)c=o[l],i=e[l]||0,!c&&i?(o[l]=c=ro({}),c[f]=l,c[r]=i,a.add.push(c)):i===0?(c&&a.rem.push(c),e[l]=null,o[l]=null):c[r]!==i&&(c[r]=i,a.mod.push(c));return a.modifies(n)}});function x6(t){_r.call(this,null,t)}x6.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]};ni(x6,_r,{transform(t,n){const e=n.fork(n.NO_SOURCE),o=t.as||["a","b"],f=o[0],r=o[1],a=!this.value||n.changed(n.ADD_REM)||t.modified("as")||t.modified("filter");let l=this.value;return a?(l&&(e.rem=l),l=n.materialize(n.SOURCE).source,e.add=this.value=oJ(l,f,r,t.filter||mc)):e.mod=l,e.source=this.value,e.modifies(o)}});function oJ(t,n,e,o){for(var f=[],r={},a=t.length,l=0,c,i;lqz(r,n))):typeof o[f]===t7&&o[f](t[f]);return o}function b6(t){_r.call(this,null,t)}const Hz=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"lognormal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],uJ={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:Hz},{name:"weights",type:"number",array:!0}]};b6.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:Hz.concat(uJ)},{name:"as",type:"string",array:!0,default:["value","density"]}]};ni(b6,_r,{transform(t,n){const e=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){const o=qz(t.distribution,cJ(n)),f=t.steps||t.minsteps||25,r=t.steps||t.maxsteps||200;let a=t.method||"pdf";a!=="pdf"&&a!=="cdf"&&Pr("Invalid density method: "+a),!t.extent&&!o.data&&Pr("Missing density extent parameter."),a=o[a];const l=t.as||["value","density"],c=t.extent||Zf(o.data()),i=cw(a,c,f,r).map(s=>{const u={};return u[l[0]]=s[0],u[l[1]]=s[1],ro(u)});this.value&&(e.rem=this.value),this.value=e.add=e.source=i}return e}});function cJ(t){return()=>t.materialize(t.SOURCE).source}function $z(t,n){return t?t.map((e,o)=>n[o]||xs(e)):null}function _6(t,n,e){const o=[],f=u=>u(c);let r,a,l,c,i,s;if(n==null)o.push(t.map(e));else for(r={},a=0,l=t.length;aMy(Zf(t,n))/30;ni(w6,_r,{transform(t,n){if(this.value&&!(t.modified()||n.changed()))return n;const e=n.materialize(n.SOURCE).source,o=_6(n.source,t.groupby,Hl),f=t.smooth||!1,r=t.field,a=t.step||fJ(e,r),l=q0((m,g)=>r(m)-r(g)),c=t.as||Gz,i=o.length;let s=1/0,u=-1/0,d=0,h;for(;du&&(u=g),m[++h][c]=g}return this.value={start:s,stop:u,step:a},n.reflow(!0).modifies(c)}});function Wz(t){Co.call(this,null,hJ,t),this.modified(!0)}ni(Wz,Co);function hJ(t){const n=t.expr;return this.value&&!t.modified("expr")?this.value:Nu(e=>n(e,t),Bl(n),xs(n))}function k6(t){_r.call(this,[void 0,void 0],t)}k6.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]};ni(k6,_r,{transform(t,n){const e=this.value,o=t.field,f=n.changed()||n.modified(o.fields)||t.modified("field");let r=e[0],a=e[1];if((f||r==null)&&(r=1/0,a=-1/0),n.visit(f?n.SOURCE:n.ADD,l=>{const c=Rl(o(l));c!=null&&(ca&&(a=c))}),!Number.isFinite(r)||!Number.isFinite(a)){let l=xs(o);l&&(l=' for field "'.concat(l,'"')),n.dataflow.warn("Infinite extent".concat(l,": [").concat(r,", ").concat(a,"]")),r=a=void 0}this.value=[r,a]}});function T6(t,n){Co.call(this,t),this.parent=n,this.count=0}ni(T6,Co,{connect(t){return this.detachSubflow=t.detachSubflow,this.targets().add(t),t.source=this},add(t){this.count+=1,this.value.add.push(t)},rem(t){this.count-=1,this.value.rem.push(t)},mod(t){this.value.mod.push(t)},init(t){this.value.init(t,t.NO_SOURCE)},evaluate(){return this.value}});function fw(t){_r.call(this,{},t),this._keys=qm();const n=this._targets=[];n.active=0,n.forEach=e=>{for(let o=0,f=n.active;oo&&o.count>0);this.initTargets(e)}},initTargets(t){const n=this._targets,e=n.length,o=t?t.length:0;let f=0;for(;fthis.subflow(c,f,n);return this._group=t.group||{},this.initTargets(),n.visit(n.REM,c=>{const i=$i(c),s=r.get(i);s!==void 0&&(r.delete(i),l(s).rem(c))}),n.visit(n.ADD,c=>{const i=o(c);r.set($i(c),i),l(i).add(c)}),a||n.modified(o.fields)?n.visit(n.MOD,c=>{const i=$i(c),s=r.get(i),u=o(c);s===u?l(u).mod(c):(r.set(i,u),l(s).rem(c),l(u).add(c))}):n.changed(n.MOD)&&n.visit(n.MOD,c=>{l(r.get($i(c))).mod(c)}),a&&n.visit(n.REFLOW,c=>{const i=$i(c),s=r.get(i),u=o(c);s!==u&&(r.set(i,u),l(s).rem(c),l(u).add(c))}),n.clean()?e.runAfter(()=>{this.clean(),r.clean()}):r.empty>e.cleanThreshold&&e.runAfter(r.clean),n}});function Yz(t){Co.call(this,null,dJ,t)}ni(Yz,Co);function dJ(t){return this.value&&!t.modified()?this.value:Ir(t.name)?ki(t.name).map(n=>Lu(n)):Lu(t.name,t.as)}function A6(t){_r.call(this,qm(),t)}A6.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]};ni(A6,_r,{transform(t,n){const e=n.dataflow,o=this.value,f=n.fork(),r=f.add,a=f.rem,l=f.mod,c=t.expr;let i=!0;n.visit(n.REM,u=>{const d=$i(u);o.has(d)?o.delete(d):a.push(u)}),n.visit(n.ADD,u=>{c(u,t)?r.push(u):o.set($i(u),1)});function s(u){const d=$i(u),h=c(u,t),m=o.get(d);h&&m?(o.delete(d),r.push(u)):!h&&!m?(o.set(d,1),a.push(u)):i&&h&&!m&&l.push(u)}return n.visit(n.MOD,s),t.modified()&&(i=!1,n.visit(n.REFLOW,s)),o.empty>e.cleanThreshold&&e.runAfter(o.clean),f}});function M6(t){_r.call(this,[],t)}M6.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"index",type:"string"},{name:"as",type:"string",array:!0}]};ni(M6,_r,{transform(t,n){const e=n.fork(n.NO_SOURCE),o=t.fields,f=$z(o,t.as||[]),r=t.index||null,a=f.length;return e.rem=this.value,n.visit(n.SOURCE,l=>{const c=o.map(m=>m(l)),i=c.reduce((m,g)=>Math.max(m,g.length),0);let s=0,u,d,h;for(;s{for(let s=0,u;sa[o]=e(a,t))}});function Xz(t){_r.call(this,[],t)}ni(Xz,_r,{transform(t,n){const e=n.fork(n.ALL),o=t.generator;let f=this.value,r=t.size-f.length,a,l,c;if(r>0){for(a=[];--r>=0;)a.push(c=ro(o(t))),f.push(c);e.add=e.add.length?e.materialize(e.ADD).add.concat(a):a}else l=f.slice(0,-r),e.rem=e.rem.length?e.materialize(e.REM).rem.concat(l):l,f=f.slice(-r);return e.source=this.value=f,e}});const nb={value:"value",median:AI,mean:tY,min:lk,max:f0},pJ=[];function C6(t){_r.call(this,[],t)}C6.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]};function gJ(t){var n=t.method||nb.value,e;if(nb[n]==null)Pr("Unrecognized imputation method: "+n);else return n===nb.value?(e=t.value!==void 0?t.value:0,()=>e):nb[n]}function mJ(t){const n=t.field;return e=>e?n(e):NaN}ni(C6,_r,{transform(t,n){var e=n.fork(n.ALL),o=gJ(t),f=mJ(t),r=xs(t.field),a=xs(t.key),l=(t.groupby||[]).map(xs),c=vJ(n.source,t.groupby,t.key,t.keyvals),i=[],s=this.value,u=c.domain.length,d,h,m,g,p,v,y,x,w,k;for(p=0,x=c.length;pv(p),r=[],a=o?o.slice():[],l={},c={},i,s,u,d,h,m,g,p;for(a.forEach((v,y)=>l[v]=y+1),d=0,g=t.length;de.add(r))):(f=e.value=e.value||this.init(t),n.visit(n.REM,r=>e.rem(r)),n.visit(n.ADD,r=>e.add(r))),e.changes(),n.visit(n.SOURCE,r=>{pa(r,f[e.cellkey(r)].tuple)}),n.reflow(o).modifies(this._outputs)},changes(){const t=this._adds,n=this._mods;let e,o;for(e=0,o=this._alen;e{const m=i6(h,a)[l],g=t.counts?h.length:1,p=s||Zf(h);cw(m,p,u,d).forEach(v=>{const y={};for(let x=0;x(this._pending=ki(f.data),r=>r.touch(this)))}:e.request(t.url,t.format).then(o=>F5(this,n,ki(o.data)))}});function xJ(t){return t.modified("async")&&!(t.modified("values")||t.modified("url")||t.modified("format"))}function F5(t,n,e){e.forEach(ro);const o=n.fork(n.NO_FIELDS&n.NO_SOURCE);return o.rem=t.value,t.value=o.source=o.add=e,t._pending=null,o.rem.length&&o.clean(!0),o}function P6(t){_r.call(this,{},t)}P6.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]};ni(P6,_r,{transform(t,n){const e=t.fields,o=t.index,f=t.values,r=t.default==null?null:t.default,a=t.modified(),l=e.length;let c=a?n.SOURCE:n.ADD,i=n,s=t.as,u,d,h;return f?(d=f.length,l>1&&!s&&Pr('Multi-field lookup requires explicit "as" parameter.'),s&&s.length!==l*d&&Pr('The "as" parameter has too few output field names.'),s=s||f.map(xs),u=function(m){for(var g=0,p=0,v,y;gn.modified(m.fields)),c|=h?n.MOD:0),n.visit(c,u),i.modifies(s)}});function Kz(t){Co.call(this,null,bJ,t)}ni(Kz,Co);function bJ(t){if(this.value&&!t.modified())return this.value;const n=t.extents,e=n.length;let o=1/0,f=-1/0,r,a;for(r=0;rf&&(f=a[1]);return[o,f]}function Qz(t){Co.call(this,null,_J,t)}ni(Qz,Co);function _J(t){return this.value&&!t.modified()?this.value:t.values.reduce((n,e)=>n.concat(e),[])}function eR(t){_r.call(this,null,t)}ni(eR,_r,{transform(t,n){return this.modified(t.modified()),this.value=t,n.fork(n.NO_SOURCE|n.NO_FIELDS)}});function D6(t){Zd.call(this,t)}D6.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:Ly,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]};ni(D6,Zd,{_transform:Zd.prototype.transform,transform(t,n){return this._transform(wJ(t,n),n)}});function wJ(t,n){const e=t.field,o=t.value,f=(t.op==="count"?"__count__":t.op)||"sum",r=Bl(e).concat(Bl(o)),a=TJ(e,t.limit||0,n);return n.changed()&&t.set("__pivot__",null,null,!0),{key:t.key,groupby:t.groupby,ops:a.map(()=>f),fields:a.map(l=>kJ(l,e,o,r)),as:a.map(l=>l+""),modified:t.modified.bind(t)}}function kJ(t,n,e,o){return Nu(f=>n(f)===t?e(f):NaN,o,t+"")}function TJ(t,n,e){const o={},f=[];return e.visit(e.SOURCE,r=>{const a=t(r);o[a]||(o[a]=1,f.push(a))}),f.sort(K2),n?f.slice(0,n):f}function tR(t){fw.call(this,t)}ni(tR,fw,{transform(t,n){const e=t.subflow,o=t.field,f=r=>this.subflow($i(r),e,n,r);return(t.modified("field")||o&&n.modified(Bl(o)))&&Pr("PreFacet does not support field modification."),this.initTargets(),o?(n.visit(n.MOD,r=>{const a=f(r);o(r).forEach(l=>a.mod(l))}),n.visit(n.ADD,r=>{const a=f(r);o(r).forEach(l=>a.add(ro(l)))}),n.visit(n.REM,r=>{const a=f(r);o(r).forEach(l=>a.rem(l))})):(n.visit(n.MOD,r=>f(r).mod(r)),n.visit(n.ADD,r=>f(r).add(r)),n.visit(n.REM,r=>f(r).rem(r))),n.clean()&&n.runAfter(()=>this.clean()),n}});function I6(t){_r.call(this,null,t)}I6.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]};ni(I6,_r,{transform(t,n){const e=n.fork(n.NO_SOURCE),o=t.fields,f=$z(t.fields,t.as||[]),r=o?(l,c)=>AJ(l,c,o,f):rw;let a;return this.value?a=this.value:(n=n.addAll(),a=this.value={}),n.visit(n.REM,l=>{const c=$i(l);e.rem.push(a[c]),a[c]=null}),n.visit(n.ADD,l=>{const c=r(l,ro({}));a[$i(l)]=c,e.add.push(c)}),n.visit(n.MOD,l=>{e.mod.push(r(l,a[$i(l)]))}),e}});function AJ(t,n,e,o){for(let f=0,r=e.length;f{const d=QA(u,i);for(let h=0;h{const r=$i(f);e.rem.push(o[r]),o[r]=null}),n.visit(n.ADD,f=>{const r=ZA(f);o[$i(f)]=r,e.add.push(r)}),n.visit(n.MOD,f=>{const r=o[$i(f)];for(const a in f)r[a]=f[a],e.modifies(a);e.mod.push(r)})),e}});function R6(t){_r.call(this,[],t),this.count=0}R6.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]};ni(R6,_r,{transform(t,n){const e=n.fork(n.NO_SOURCE),o=t.modified("size"),f=t.size,r=this.value.reduce((s,u)=>(s[$i(u)]=1,s),{});let a=this.value,l=this.count,c=0;function i(s){let u,d;a.length=c&&(u=a[d],r[$i(u)]&&e.rem.push(u),a[d]=s)),++l}if(n.rem.length&&(n.visit(n.REM,s=>{const u=$i(s);r[u]&&(r[u]=-1,e.rem.push(s)),--l}),a=a.filter(s=>r[$i(s)]!==-1)),(n.rem.length||o)&&a.length{r[$i(s)]||i(s)}),c=-1),o&&a.length>f){const s=a.length-f;for(let u=0;u{r[$i(s)]&&e.mod.push(s)}),n.add.length&&n.visit(n.ADD,i),(n.add.length||c<0)&&(e.add=a.filter(s=>!r[$i(s)])),this.count=l,this.value=e.source=a,e}});function F6(t){_r.call(this,null,t)}F6.Definition={type:"Sequence",metadata:{generates:!0,changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]};ni(F6,_r,{transform(t,n){if(this.value&&!t.modified())return;const e=n.materialize().fork(n.MOD),o=t.as||"data";return e.rem=this.value?n.rem.concat(this.value):n.rem,this.value=Ju(t.start,t.stop,t.step||1).map(f=>{const r={};return r[o]=f,ro(r)}),e.add=n.add.concat(this.value),e}});function iR(t){_r.call(this,null,t),this.modified(!0)}ni(iR,_r,{transform(t,n){return this.value=n.source,n.changed()?n.fork(n.NO_SOURCE|n.NO_FIELDS):n.StopPropagation}});function N6(t){_r.call(this,null,t)}const aR=["unit0","unit1"];N6.Definition={type:"TimeUnit",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"units",type:"enum",values:UA,array:!0},{name:"step",type:"number",default:1},{name:"maxbins",type:"number",default:40},{name:"extent",type:"date",array:!0},{name:"timezone",type:"enum",default:"local",values:["local","utc"]},{name:"as",type:"string",array:!0,length:2,default:aR}]};ni(N6,_r,{transform(t,n){const e=t.field,o=t.interval!==!1,f=t.timezone==="utc",r=this._floor(t,n),a=(f?$m:Hm)(r.unit).offset,l=t.as||aR,c=l[0],i=l[1],s=r.step;let u=r.start||1/0,d=r.stop||-1/0,h=n.ADD;return(t.modified()||n.changed(n.REM)||n.modified(Bl(e)))&&(n=n.reflow(!0),h=n.SOURCE,u=1/0,d=-1/0),n.visit(h,m=>{const g=e(m);let p,v;g==null?(m[c]=null,o&&(m[i]=null)):(m[c]=p=v=r(g),o&&(m[i]=v=a(p,s)),pd&&(d=v))}),r.start=u,r.stop=d,n.modifies(o?l:c)},_floor(t,n){const e=t.timezone==="utc",{units:o,step:f}=t.units?{units:t.units,step:t.step||1}:XI({extent:t.extent||Zf(n.materialize(n.SOURCE).source,t.field),maxbins:t.maxbins}),r=VA(o),a=this.value||{},l=(e?jI:BI)(r,f);return l.unit=Na(r),l.units=r,l.step=f,l.start=a.start,l.stop=a.stop,this.value=l}});function oR(t){_r.call(this,qm(),t)}ni(oR,_r,{transform(t,n){const e=n.dataflow,o=t.field,f=this.value,r=l=>f.set(o(l),l);let a=!0;return t.modified("field")||n.modified(o.fields)?(f.clear(),n.visit(n.SOURCE,r)):n.changed()?(n.visit(n.REM,l=>f.delete(o(l))),n.visit(n.ADD,r)):a=!1,this.modified(a),f.empty>e.cleanThreshold&&e.runAfter(f.clean),n.fork()}});function sR(t){_r.call(this,null,t)}ni(sR,_r,{transform(t,n){(!this.value||t.modified("field")||t.modified("sort")||n.changed()||t.sort&&n.modified(t.sort.fields))&&(this.value=(t.sort?n.source.slice().sort(q0(t.sort)):n.source).map(t.field))}});function SJ(t,n,e,o){const f=Xv[t](n,e);return{init:f.init||Td,update:function(r,a){a[o]=f.next(r)}}}const Xv={row_number:function(){return{next:t=>t.index+1}},rank:function(){let t;return{init:()=>t=1,next:n=>{const e=n.index,o=n.data;return e&&n.compare(o[e-1],o[e])?t=e+1:t}}},dense_rank:function(){let t;return{init:()=>t=1,next:n=>{const e=n.index,o=n.data;return e&&n.compare(o[e-1],o[e])?++t:t}}},percent_rank:function(){const t=Xv.rank(),n=t.next;return{init:t.init,next:e=>(n(e)-1)/(e.data.length-1)}},cume_dist:function(){let t;return{init:()=>t=0,next:n=>{const e=n.data,o=n.compare;let f=n.index;if(t0||Pr("ntile num must be greater than zero.");const e=Xv.cume_dist(),o=e.next;return{init:e.init,next:f=>Math.ceil(n*o(f))}},lag:function(t,n){return n=+n||1,{next:e=>{const o=e.index-n;return o>=0?t(e.data[o]):null}}},lead:function(t,n){return n=+n||1,{next:e=>{const o=e.index+n,f=e.data;return ot(n.data[n.i0])}},last_value:function(t){return{next:n=>t(n.data[n.i1-1])}},nth_value:function(t,n){return n=+n,n>0||Pr("nth_value nth must be greater than zero."),{next:e=>{const o=e.i0+(n-1);return on=null,next:e=>{const o=t(e.data[e.index]);return o!=null?n=o:n}}},next_value:function(t){let n,e;return{init:()=>(n=null,e=-1),next:o=>{const f=o.data;return o.index<=e?n:(e=EJ(t,f,o.index))<0?(e=f.length,n=null):n=t(f[e])}}}};function EJ(t,n,e){for(let o=n.length;el[m]=1)}d(t.sort),n.forEach((h,m)=>{const g=e[m],p=xs(g),v=Fz(h,p,f[m]);if(d(g),r.push(v),qi(Xv,h))a.push(SJ(h,e[m],o[m],v));else{if(g==null&&h!=="count"&&Pr("Null aggregate field specified."),h==="count"){i.push(v);return}u=!1;let y=c[p];y||(y=c[p]=[],y.field=g,s.push(y)),y.push(Nz(h,v))}}),(i.length||s.length)&&(this.cell=OJ(s,i,u)),this.inputs=Object.keys(l)}const uR=lR.prototype;uR.init=function(){this.windows.forEach(t=>t.init()),this.cell&&this.cell.init()};uR.update=function(t,n){const e=this.cell,o=this.windows,f=t.data,r=o&&o.length;let a;if(e){for(a=t.p0;ajz(c,c.field));const o={num:0,agg:null,store:!1,count:n};if(!e)for(var f=t.length,r=o.agg=Array(f),a=0;athis.group(f(l));let a=this.state;(!a||e)&&(a=this.state=new lR(t)),e||n.modified(a.inputs)?(this.value={},n.visit(n.SOURCE,l=>r(l).add(l))):(n.visit(n.REM,l=>r(l).remove(l)),n.visit(n.ADD,l=>r(l).add(l)));for(let l=0,c=this._mlen;l0&&!f(r[e],r[e-1])&&(t.i0=n.left(r,r[e])),o1?0:t<-1?cm:Math.acos(t)}function r7(t){return t>=1?__:t<=-1?-__:Math.asin(t)}function FJ(t){return t.innerRadius}function NJ(t){return t.outerRadius}function BJ(t){return t.startAngle}function jJ(t){return t.endAngle}function UJ(t){return t&&t.padAngle}function VJ(t,n,e,o,f,r,a,l){var c=e-t,i=o-n,s=a-f,u=l-r,d=u*c-s*i;if(!(d*dO*O+R*R&&(_=A,S=M),{cx:_,cy:S,x01:-s,y01:-u,x11:_*(f/k-1),y11:S*(f/k-1)}}function qJ(){var t=FJ,n=NJ,e=Yo(0),o=null,f=BJ,r=jJ,a=UJ,l=null;function c(){var i,s,u=+t.apply(this,arguments),d=+n.apply(this,arguments),h=f.apply(this,arguments)-__,m=r.apply(this,arguments)-__,g=n7(m-h),p=m>h;if(l||(l=i=Nm()),dLl))l.moveTo(0,0);else if(g>cR-Ll)l.moveTo(d*Bp(h),d*Sf(h)),l.arc(0,0,d,h,m,!p),u>Ll&&(l.moveTo(u*Bp(m),u*Sf(m)),l.arc(0,0,u,m,h,p));else{var v=h,y=m,x=h,w=m,k=g,b=g,T=a.apply(this,arguments)/2,_=T>Ll&&(o?+o.apply(this,arguments):a0(u*u+d*d)),S=N5(n7(d-u)/2,+e.apply(this,arguments)),A=S,M=S,E,D;if(_>Ll){var O=r7(_/u*Sf(T)),R=r7(_/d*Sf(T));(k-=O*2)>Ll?(O*=p?1:-1,x+=O,w-=O):(k=0,x=w=(h+m)/2),(b-=R*2)>Ll?(R*=p?1:-1,v+=R,y-=R):(b=0,v=y=(h+m)/2)}var z=d*Bp(v),L=d*Sf(v),P=u*Bp(w),N=u*Sf(w);if(S>Ll){var B=d*Bp(y),G=d*Sf(y),W=u*Bp(x),K=u*Sf(x),te;if(gLl?M>Ll?(E=rb(W,K,z,L,d,M,p),D=rb(B,G,P,N,d,M,p),l.moveTo(E.cx+E.x01,E.cy+E.y01),MLl)||!(k>Ll)?l.lineTo(P,N):A>Ll?(E=rb(P,N,B,G,u,-A,p),D=rb(z,L,W,K,u,-A,p),l.lineTo(E.cx+E.x01,E.cy+E.y01),A=d;--h)l.point(y[h],x[h]);l.lineEnd(),l.areaEnd()}p&&(y[u]=+t(g,u,s),x[u]=+n(g,u,s),l.point(o?+o(g,u,s):y[u],e?+e(g,u,s):x[u]))}if(v)return l=null,v+""||null}function i(){return jD().defined(f).curve(a).context(r)}return c.x=function(s){return arguments.length?(t=typeof s=="function"?s:Yo(+s),o=null,c):t},c.x0=function(s){return arguments.length?(t=typeof s=="function"?s:Yo(+s),c):t},c.x1=function(s){return arguments.length?(o=s==null?null:typeof s=="function"?s:Yo(+s),c):o},c.y=function(s){return arguments.length?(n=typeof s=="function"?s:Yo(+s),e=null,c):n},c.y0=function(s){return arguments.length?(n=typeof s=="function"?s:Yo(+s),c):n},c.y1=function(s){return arguments.length?(e=s==null?null:typeof s=="function"?s:Yo(+s),c):e},c.lineX0=c.lineY0=function(){return i().x(t).y(n)},c.lineY1=function(){return i().x(t).y(e)},c.lineX1=function(){return i().x(o).y(n)},c.defined=function(s){return arguments.length?(f=typeof s=="function"?s:Yo(!!s),c):f},c.curve=function(s){return arguments.length?(a=s,r!=null&&(l=a(r)),c):a},c.context=function(s){return arguments.length?(s==null?r=l=null:l=a(r=s),c):r},c}var HJ={draw(t,n){const e=a0(n/cm);t.moveTo(e,0),t.arc(0,0,e,0,cR)}};function $J(t,n){let e=null;t=typeof t=="function"?t:Yo(t||HJ),n=typeof n=="function"?n:Yo(n===void 0?64:+n);function o(){let f;if(e||(e=f=Nm()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),f)return e=null,f+""||null}return o.type=function(f){return arguments.length?(t=typeof f=="function"?f:Yo(f),o):t},o.size=function(f){return arguments.length?(n=typeof f=="function"?f:Yo(+f),o):n},o.context=function(f){return arguments.length?(e=f??null,o):e},o}function Jd(){}function w_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function hw(t){this._context=t}hw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:w_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:w_(this,t,n);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};function GJ(t){return new hw(t)}function hR(t){this._context=t}hR.prototype={areaStart:Jd,areaEnd:Jd,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:w_(this,t,n);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};function WJ(t){return new hR(t)}function dR(t){this._context=t}dR.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,o=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,o):this._context.moveTo(e,o);break;case 3:this._point=4;default:w_(this,t,n);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};function YJ(t){return new dR(t)}function pR(t,n){this._basis=new hw(t),this._beta=n}pR.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var o=t[0],f=n[0],r=t[e]-o,a=n[e]-f,l=-1,c;++l<=e;)c=l/e,this._basis.point(this._beta*t[l]+(1-this._beta)*(o+c*r),this._beta*n[l]+(1-this._beta)*(f+c*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var XJ=function t(n){function e(o){return n===1?new hw(o):new pR(o,n)}return e.beta=function(o){return t(+o)},e}(.85);function k_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function j6(t,n){this._context=t,this._k=(1-n)/6}j6.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:k_(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:k_(this,t,n);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ZJ=function t(n){function e(o){return new j6(o,n)}return e.tension=function(o){return t(+o)},e}(0);function U6(t,n){this._context=t,this._k=(1-n)/6}U6.prototype={areaStart:Jd,areaEnd:Jd,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:k_(this,t,n);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var JJ=function t(n){function e(o){return new U6(o,n)}return e.tension=function(o){return t(+o)},e}(0);function V6(t,n){this._context=t,this._k=(1-n)/6}V6.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:k_(this,t,n);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var KJ=function t(n){function e(o){return new V6(o,n)}return e.tension=function(o){return t(+o)},e}(0);function q6(t,n,e){var o=t._x1,f=t._y1,r=t._x2,a=t._y2;if(t._l01_a>Ll){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);o=(o*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,f=(f*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Ll){var i=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);r=(r*i+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*i+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(o,f,r,a,t._x2,t._y2)}function gR(t,n){this._context=t,this._alpha=n}gR.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,o=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+o*o,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:q6(this,t,n);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var QJ=function t(n){function e(o){return n?new gR(o,n):new j6(o,0)}return e.alpha=function(o){return t(+o)},e}(.5);function mR(t,n){this._context=t,this._alpha=n}mR.prototype={areaStart:Jd,areaEnd:Jd,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,o=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+o*o,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:q6(this,t,n);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var eK=function t(n){function e(o){return n?new mR(o,n):new U6(o,0)}return e.alpha=function(o){return t(+o)},e}(.5);function vR(t,n){this._context=t,this._alpha=n}vR.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,o=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+o*o,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:q6(this,t,n);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var tK=function t(n){function e(o){return n?new vR(o,n):new V6(o,0)}return e.alpha=function(o){return t(+o)},e}(.5);function yR(t){this._context=t}yR.prototype={areaStart:Jd,areaEnd:Jd,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}};function nK(t){return new yR(t)}function i7(t){return t<0?-1:1}function a7(t,n,e){var o=t._x1-t._x0,f=n-t._x1,r=(t._y1-t._y0)/(o||f<0&&-0),a=(e-t._y1)/(f||o<0&&-0),l=(r*f+a*o)/(o+f);return(i7(r)+i7(a))*Math.min(Math.abs(r),Math.abs(a),.5*Math.abs(l))||0}function o7(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function B5(t,n,e){var o=t._x0,f=t._y0,r=t._x1,a=t._y1,l=(r-o)/3;t._context.bezierCurveTo(o+l,f+l*n,r-l,a-l*e,r,a)}function T_(t){this._context=t}T_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:B5(this,this._t0,o7(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(t=+t,n=+n,!(t===this._x1&&n===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,B5(this,o7(this,e=a7(this,t,n)),e);break;default:B5(this,this._t0,e=a7(this,t,n));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}};function xR(t){this._context=new bR(t)}(xR.prototype=Object.create(T_.prototype)).point=function(t,n){T_.prototype.point.call(this,n,t)};function bR(t){this._context=t}bR.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,o,f,r){this._context.bezierCurveTo(n,t,o,e,r,f)}};function rK(t){return new T_(t)}function iK(t){return new xR(t)}function _R(t){this._context=t}_R.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),e===2)this._context.lineTo(t[1],n[1]);else for(var o=s7(t),f=s7(n),r=0,a=1;a=0;--n)f[n]=(a[n]-f[n+1])/r[n];for(r[e-1]=(t[e]+f[e-1])/2,n=0;n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}break}}this._x=t,this._y=n}};function oK(t){return new dw(t,.5)}function sK(t){return new dw(t,0)}function lK(t){return new dw(t,1)}function qd(t,n){if(typeof document<"u"&&document.createElement){const e=document.createElement("canvas");if(e&&e.getContext)return e.width=t,e.height=n,e}return null}const uK=()=>typeof Image<"u"?Image:null,kk=Symbol("implicit");function H6(){var t=new CC,n=[],e=[],o=kk;function f(r){let a=t.get(r);if(a===void 0){if(o!==kk)return o;t.set(r,a=n.push(r)-1)}return e[a%e.length]}return f.domain=function(r){if(!arguments.length)return n.slice();n=[],t=new CC;for(const a of r)t.has(a)||t.set(a,n.push(a)-1);return f},f.range=function(r){return arguments.length?(e=Array.from(r),f):e.slice()},f.unknown=function(r){return arguments.length?(o=r,f):o},f.copy=function(){return H6(n,e).unknown(o)},Yh.apply(f,arguments),f}const wR=Math.PI/180,kR=180/Math.PI,A_=18,TR=.96422,AR=1,MR=.82521,SR=4/29,Qg=6/29,ER=3*Qg*Qg,cK=Qg*Qg*Qg;function CR(t){if(t instanceof qf)return new qf(t.l,t.a,t.b,t.opacity);if(t instanceof Fh)return OR(t);t instanceof H2||(t=VD(t));var n=q5(t.r),e=q5(t.g),o=q5(t.b),f=j5((.2225045*n+.7168786*e+.0606169*o)/AR),r,a;return n===e&&e===o?r=a=f:(r=j5((.4360747*n+.3850649*e+.1430804*o)/TR),a=j5((.0139322*n+.0971045*e+.7141733*o)/MR)),new qf(116*f-16,500*(r-f),200*(f-a),t.opacity)}function M_(t,n,e,o){return arguments.length===1?CR(t):new qf(t,n,e,o??1)}function qf(t,n,e,o){this.l=+t,this.a=+n,this.b=+e,this.opacity=+o}vA(qf,M_,yA(xA,{brighter:function(t){return new qf(this.l+A_*(t??1),this.a,this.b,this.opacity)},darker:function(t){return new qf(this.l-A_*(t??1),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return n=TR*U5(n),t=AR*U5(t),e=MR*U5(e),new H2(V5(3.1338561*n-1.6168667*t-.4906146*e),V5(-.9787684*n+1.9161415*t+.033454*e),V5(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}}));function j5(t){return t>cK?Math.pow(t,1/3):t/ER+SR}function U5(t){return t>Qg?t*t*t:ER*(t-SR)}function V5(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function q5(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function fK(t){if(t instanceof Fh)return new Fh(t.h,t.c,t.l,t.opacity);if(t instanceof qf||(t=CR(t)),t.a===0&&t.b===0)return new Fh(NaN,0180?s+=360:s-i>180&&(i+=360),d.push({i:u.push(f(u)+"rotate(",null,o)-2,x:Zp(i,s)})):s&&u.push(f(u)+"rotate("+s+o)}function l(i,s,u,d){i!==s?d.push({i:u.push(f(u)+"skewX(",null,o)-2,x:Zp(i,s)}):s&&u.push(f(u)+"skewX("+s+o)}function c(i,s,u,d,h,m){if(i!==u||s!==d){var g=h.push(f(h)+"scale(",null,",",null,")");m.push({i:g-4,x:Zp(i,u)},{i:g-2,x:Zp(s,d)})}else(u!==1||d!==1)&&h.push(f(h)+"scale("+u+","+d+")")}return function(i,s){var u=[],d=[];return i=t(i),s=t(s),r(i.translateX,i.translateY,s.translateX,s.translateY,u,d),a(i.rotate,s.rotate,u,d),l(i.skewX,s.skewX,u,d),c(i.scaleX,i.scaleY,s.scaleX,s.scaleY,u,d),i=s=null,function(h){for(var m=-1,g=d.length,p;++mMath.pow(t,n)}function RK(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}function g7(t){return(n,e)=>-t(-n,e)}function Y6(t){const n=t(d7,p7),e=n.domain;let o=10,f,r;function a(){return f=RK(o),r=zK(o),e()[0]<0?(f=g7(f),r=g7(r),t(PK,DK)):t(d7,p7),n}return n.base=function(l){return arguments.length?(o=+l,a()):o},n.domain=function(l){return arguments.length?(e(l),a()):e()},n.ticks=l=>{const c=e();let i=c[0],s=c[c.length-1];const u=s0){for(;d<=h;++d)for(m=1;ms)break;v.push(g)}}else for(;d<=h;++d)for(m=o-1;m>=1;--m)if(g=d>0?m/r(-d):m*r(d),!(gs)break;v.push(g)}v.length*2{if(l==null&&(l=10),c==null&&(c=o===10?"s":","),typeof c!="function"&&(!(o%1)&&(c=Q4(c)).precision==null&&(c.trim=!0),c=BD(c)),l===1/0)return c;const i=Math.max(1,o*l/n.ticks().length);return s=>{let u=s/r(Math.round(f(s)));return u*oe(NR(e(),{floor:l=>r(Math.floor(f(l))),ceil:l=>r(Math.ceil(f(l)))})),n}function BR(){const t=Y6(bA()).domain([1,10]);return t.copy=()=>W2(t,BR()).base(t.base()),Yh.apply(t,arguments),t}function m7(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function v7(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function X6(t){var n=1,e=t(m7(n),v7(n));return e.constant=function(o){return arguments.length?t(m7(n=+o),v7(n)):n},Bm(e)}function jR(){var t=X6(bA());return t.copy=function(){return W2(t,jR()).constant(t.constant())},Yh.apply(t,arguments)}function y7(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function FK(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function NK(t){return t<0?-t*t:t*t}function Z6(t){var n=t(Md,Md),e=1;function o(){return e===1?t(Md,Md):e===.5?t(FK,NK):t(y7(e),y7(1/e))}return n.exponent=function(f){return arguments.length?(e=+f,o()):e},Bm(n)}function J6(){var t=Z6(bA());return t.copy=function(){return W2(t,J6()).exponent(t.exponent())},Yh.apply(t,arguments),t}function BK(){return J6.apply(null,arguments).exponent(.5)}function UR(){var t=[],n=[],e=[],o;function f(){var a=0,l=Math.max(1,n.length);for(e=new Array(l-1);++a0?e[l-1]:t[0],l=e?[o[e-1],n]:[o[i-1],o[i]]},a.unknown=function(c){return arguments.length&&(r=c),a},a.thresholds=function(){return o.slice()},a.copy=function(){return VR().domain([t,n]).range(f).unknown(r)},Yh.apply(Bm(a),arguments)}function qR(){var t=[.5],n=[0,1],e,o=1;function f(r){return r!=null&&r<=r?n[Y2(t,r,0,o)]:e}return f.domain=function(r){return arguments.length?(t=Array.from(r),o=Math.min(t.length,n.length-1),f):t.slice()},f.range=function(r){return arguments.length?(n=Array.from(r),o=Math.min(t.length,n.length-1),f):n.slice()},f.invertExtent=function(r){var a=n.indexOf(r);return[t[a-1],t[a]]},f.unknown=function(r){return arguments.length?(e=r,f):e},f.copy=function(){return qR().domain(t).range(n).unknown(e)},Yh.apply(f,arguments)}function jK(t){return new Date(t)}function UK(t){return t instanceof Date?+t:+new Date(+t)}function K6(t,n,e,o,f,r,a,l,c,i){var s=oW(),u=s.invert,d=s.domain,h=i(".%L"),m=i(":%S"),g=i("%I:%M"),p=i("%I %p"),v=i("%a %d"),y=i("%b %d"),x=i("%B"),w=i("%Y");function k(b){return(c(b)0?o:1:0}const GK="identity",fm="linear",$h="log",Py="pow",Dy="sqrt",vw="symlog",_0="time",w0="utc",Hf="sequential",Wm="diverging",hm="quantile",yw="quantize",xw="threshold",rM="ordinal",Mk="point",XR="band",iM="bin-ordinal",Xs="continuous",Iy="discrete",zy="discretizing",kc="interpolating",aM="temporal";function WK(t){return function(n){let e=n[0],o=n[1],f;return o=o&&e[c]<=f&&(r<0&&(r=c),a=c);if(!(r<0))return o=t.invertExtent(e[r]),f=t.invertExtent(e[a]),[o[0]===void 0?o[1]:o[0],f[1]===void 0?f[0]:f[1]]}}function oM(){const t=H6().unknown(void 0),n=t.domain,e=t.range;let o=[0,1],f,r,a=!1,l=0,c=0,i=.5;delete t.unknown;function s(){const u=n().length,d=o[1]g+f*v);return e(d?p.reverse():p)}return t.domain=function(u){return arguments.length?(n(u),s()):n()},t.range=function(u){return arguments.length?(o=[+u[0],+u[1]],s()):o.slice()},t.rangeRound=function(u){return o=[+u[0],+u[1]],a=!0,s()},t.bandwidth=function(){return r},t.step=function(){return f},t.round=function(u){return arguments.length?(a=!!u,s()):a},t.padding=function(u){return arguments.length?(c=Math.max(0,Math.min(1,u)),l=c,s()):l},t.paddingInner=function(u){return arguments.length?(l=Math.max(0,Math.min(1,u)),s()):l},t.paddingOuter=function(u){return arguments.length?(c=Math.max(0,Math.min(1,u)),s()):c},t.align=function(u){return arguments.length?(i=Math.max(0,Math.min(1,u)),s()):i},t.invertRange=function(u){if(u[0]==null||u[1]==null)return;const d=o[1]o[1-d])))return v=Math.max(0,tk(h,g)-1),y=g===p?v:tk(h,p)-1,g-h[v]>r+1e-10&&++v,d&&(x=v,v=m-y,y=m-x),v>y?void 0:n().slice(v,y+1)},t.invert=function(u){const d=t.invertRange([u,u]);return d&&d[0]},t.copy=function(){return oM().domain(n()).range(o).round(a).paddingInner(l).paddingOuter(c).align(i)},s()}function ZR(t){const n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return ZR(n())},t}function XK(){return ZR(oM().paddingInner(1))}var ZK=Array.prototype.map;function JK(t){return ZK.call(t,Rl)}const KK=Array.prototype.slice;function JR(){let t=[],n=[];function e(o){return o==null||o!==o?void 0:n[(Y2(t,o)-1)%n.length]}return e.domain=function(o){return arguments.length?(t=JK(o),e):t.slice()},e.range=function(o){return arguments.length?(n=KK.call(o),e):n.slice()},e.tickFormat=function(o,f){return lW(t[0],Na(t),o??10,f)},e.copy=function(){return JR().domain(e.domain()).range(e.range())},e}const E_={};function QK(t,n,e){const o=function(){const r=n();return r.invertRange||(r.invertRange=r.invert?WK(r):r.invertExtent?YK(r):void 0),r.type=t,r};return o.metadata=uf(ki(e)),o}function Xa(t,n,e){return arguments.length>1?(E_[t]=QK(t,n,e),this):KR(t)?E_[t]:void 0}Xa(GK,FR);Xa(fm,sW,Xs);Xa($h,BR,[Xs,$h]);Xa(Py,J6,Xs);Xa(Dy,BK,Xs);Xa(vw,jR,Xs);Xa(_0,VK,[Xs,aM]);Xa(w0,qK,[Xs,aM]);Xa(Hf,Q6,[Xs,kc]);Xa("".concat(Hf,"-").concat(fm),Q6,[Xs,kc]);Xa("".concat(Hf,"-").concat($h),HR,[Xs,kc,$h]);Xa("".concat(Hf,"-").concat(Py),eM,[Xs,kc]);Xa("".concat(Hf,"-").concat(Dy),HK,[Xs,kc]);Xa("".concat(Hf,"-").concat(vw),$R,[Xs,kc]);Xa("".concat(Wm,"-").concat(fm),GR,[Xs,kc]);Xa("".concat(Wm,"-").concat($h),WR,[Xs,kc,$h]);Xa("".concat(Wm,"-").concat(Py),tM,[Xs,kc]);Xa("".concat(Wm,"-").concat(Dy),$K,[Xs,kc]);Xa("".concat(Wm,"-").concat(vw),YR,[Xs,kc]);Xa(hm,UR,[zy,hm]);Xa(yw,VR,zy);Xa(xw,qR,zy);Xa(iM,JR,[Iy,zy]);Xa(rM,H6,Iy);Xa(XR,oM,Iy);Xa(Mk,XK,Iy);function KR(t){return qi(E_,t)}function $0(t,n){const e=E_[t];return e&&e.metadata[n]}function sM(t){return $0(t,Xs)}function dm(t){return $0(t,Iy)}function Sk(t){return $0(t,zy)}function QR(t){return $0(t,$h)}function eQ(t){return $0(t,aM)}function eF(t){return $0(t,kc)}function tF(t){return $0(t,hm)}const tQ=["clamp","base","constant","exponent"];function nF(t,n){const e=n[0],o=Na(n)-e;return function(f){return t(e+f*o)}}function bw(t,n,e){return W6(lM(n||"rgb",e),t)}function rF(t,n){const e=new Array(n),o=n+1;for(let f=0;ft[l]?a[l](t[l]()):0),a)}function lM(t,n){const e=LK[nQ(t)];return n!=null&&e&&e.gamma?e.gamma(n):e}function nQ(t){return"interpolate"+t.toLowerCase().split("-").map(n=>n[0].toUpperCase()+n.slice(1)).join("")}const rQ={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},iQ={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function aF(t){const n=t.length/6|0,e=new Array(n);for(let o=0;obw(aF(t)));function uM(t,n){return t=t&&t.toLowerCase(),arguments.length>1?(x7[t]=n,this):x7[t]}const qb="symbol",aQ="discrete",oQ="gradient",sQ=t=>Ir(t)?t.map(n=>String(n)):String(t),lQ=(t,n)=>t[1]-n[1],uQ=(t,n)=>n[1]-t[1];function cM(t,n,e){let o;return wo(n)&&(t.bins&&(n=Math.max(n,t.bins.length)),e!=null&&(n=Math.min(n,Math.floor(My(t.domain())/e||1)))),Ei(n)&&(o=n.step,n=n.interval),bi(n)&&(n=t.type===_0?Hm(n):t.type==w0?$m(n):Pr("Only time and utc scales accept interval strings."),o&&(n=n.every(o))),n}function sF(t,n,e){let o=t.range(),f=o[0],r=Na(o),a=lQ;if(f>r&&(o=r,r=f,f=o,a=uQ),f=Math.floor(f),r=Math.ceil(r),n=n.map(l=>[l,t(l)]).filter(l=>f<=l[1]&&l[1]<=r).sort(a).map(l=>l[0]),e>0&&n.length>1){const l=[n[0],Na(n)];for(;n.length>e&&n.length>=3;)n=n.filter((c,i)=>!(i%2));n.length<3&&(n=l)}return n}function fM(t,n){return t.bins?sF(t,t.bins):t.ticks?t.ticks(n):t.domain()}function lF(t,n,e,o,f,r){const a=n.type;let l=sQ;if(a===_0||f===_0)l=t.timeFormat(o);else if(a===w0||f===w0)l=t.utcFormat(o);else if(QR(a)){const c=t.formatFloat(o);if(r||n.bins)l=c;else{const i=uF(n,e,!1);l=s=>i(s)?c(s):""}}else if(n.tickFormat){const c=n.domain();l=t.formatSpan(c[0],c[c.length-1],e,o)}else o&&(l=t.format(o));return l}function uF(t,n,e){const o=fM(t,n),f=t.base(),r=Math.log(f),a=Math.max(1,f*n/o.length),l=c=>{let i=c/Math.pow(f,Math.round(Math.log(c)/r));return i*f1?o[1]-o[0]:o[0],a;for(a=1;aEk[t.type]||t.bins;function hF(t,n,e,o,f,r,a){const l=cF[n.type]&&r!==_0&&r!==w0?cQ(t,n,f):lF(t,n,e,f,r,a);return o===qb&&dQ(n)?pQ(l):o===aQ?gQ(l):mQ(l)}const pQ=t=>(n,e,o)=>{const f=b7(o[e+1],b7(o.max,1/0)),r=_7(n,t),a=_7(f,t);return r&&a?r+" \u2013 "+a:a?"< "+a:"\u2265 "+r},b7=(t,n)=>t??n,gQ=t=>(n,e)=>e?t(n):null,mQ=t=>n=>t(n),_7=(t,n)=>Number.isFinite(t)?n(t):null;function vQ(t){const n=t.domain(),e=n.length-1;let o=+n[0],f=+Na(n),r=f-o;if(t.type===xw){const a=e?r/e:.1;o-=a,f+=a,r=f-o}return a=>(a-o)/r}function yQ(t,n,e,o){const f=o||n.type;return bi(e)&&eQ(f)&&(e=e.replace(/%a/g,"%A").replace(/%b/g,"%B")),!e&&f===_0?t.timeFormat("%A, %d %B %Y, %X"):!e&&f===w0?t.utcFormat("%A, %d %B %Y, %X UTC"):hF(t,n,5,null,e,o,!0)}function dF(t,n,e){e=e||{};const o=Math.max(3,e.maxlen||7),f=yQ(t,n,e.format,e.formatType);if(Sk(n.type)){const r=fF(n).slice(1).map(f),a=r.length;return"".concat(a," boundar").concat(a===1?"y":"ies",": ").concat(r.join(", "))}else if(dm(n.type)){const r=n.domain(),a=r.length,l=a>o?r.slice(0,o-2).map(f).join(", ")+", ending with "+r.slice(-1).map(f):r.map(f).join(", ");return"".concat(a," value").concat(a===1?"":"s",": ").concat(l)}else{const r=n.domain();return"values from ".concat(f(r[0])," to ").concat(f(Na(r)))}}let pF=0;function xQ(){pF=0}const C_="p_";function hM(t){return t&&t.gradient}function gF(t,n,e){const o=t.gradient;let f=t.id,r=o==="radial"?C_:"";return f||(f=t.id="gradient_"+pF++,o==="radial"?(t.x1=Ef(t.x1,.5),t.y1=Ef(t.y1,.5),t.r1=Ef(t.r1,0),t.x2=Ef(t.x2,.5),t.y2=Ef(t.y2,.5),t.r2=Ef(t.r2,.5),r=C_):(t.x1=Ef(t.x1,0),t.y1=Ef(t.y1,0),t.x2=Ef(t.x2,1),t.y2=Ef(t.y2,0))),n[f]=t,"url("+(e||"")+"#"+r+f+")"}function Ef(t,n){return t??n}function mF(t,n){var e=[],o;return o={gradient:"linear",x1:t?t[0]:0,y1:t?t[1]:0,x2:n?n[0]:1,y2:n?n[1]:0,stops:e,stop:function(f,r){return e.push({offset:f,color:r}),o}}}const w7={basis:{curve:GJ},"basis-closed":{curve:WJ},"basis-open":{curve:YJ},bundle:{curve:XJ,tension:"beta",value:.85},cardinal:{curve:ZJ,tension:"tension",value:0},"cardinal-open":{curve:KJ,tension:"tension",value:0},"cardinal-closed":{curve:JJ,tension:"tension",value:0},"catmull-rom":{curve:QJ,tension:"alpha",value:.5},"catmull-rom-closed":{curve:eK,tension:"alpha",value:.5},"catmull-rom-open":{curve:tK,tension:"alpha",value:.5},linear:{curve:UD},"linear-closed":{curve:nK},monotone:{horizontal:iK,vertical:rK},natural:{curve:aK},step:{curve:oK},"step-after":{curve:lK},"step-before":{curve:sK}};function dM(t,n,e){var o=qi(w7,t)&&w7[t],f=null;return o&&(f=o.curve||o[n||"vertical"],o.tension&&e!=null&&(f=f[o.tension](e))),f}const bQ={m:2,l:2,h:1,v:1,z:0,c:6,s:4,q:4,t:2,a:7},_Q=/[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi,wQ=/^[+-]?(([0-9]*\.[0-9]+)|([0-9]+\.)|([0-9]+))([eE][+-]?[0-9]+)?/,kQ=/^((\s+,?\s*)|(,\s*))/,TQ=/^[01]/;function pm(t){const n=[];return(t.match(_Q)||[]).forEach(o=>{let f=o[0];const r=f.toLowerCase(),a=bQ[r],l=AQ(r,a,o.slice(1).trim()),c=l.length;if(c1&&(g=Math.sqrt(g),e*=g,o*=g);const p=d/e,v=u/e,y=-u/o,x=d/o,w=p*l+v*c,k=y*l+x*c,b=p*t+v*n,T=y*t+x*n,_=(b-w)*(b-w)+(T-k)*(T-k);let S=1/_-.25;S<0&&(S=0);let A=Math.sqrt(S);r==f&&(A=-A);const M=.5*(w+b)-A*(T-k),E=.5*(k+T)+A*(b-w),D=Math.atan2(k-E,w-M);let R=Math.atan2(T-E,b-M)-D;R<0&&r===1?R+=Df:R>0&&r===0&&(R-=Df);const z=Math.ceil(Math.abs(R/(e0+.001))),L=[];for(let P=0;P+t}function ab(t,n,e){return Math.max(n,Math.min(t,e))}function xF(){var t=LQ,n=PQ,e=DQ,o=IQ,f=Th(0),r=f,a=f,l=f,c=null;function i(s,u,d){var h,m=u??+t.call(this,s),g=d??+n.call(this,s),p=+e.call(this,s),v=+o.call(this,s),y=Math.min(p,v)/2,x=ab(+f.call(this,s),0,y),w=ab(+r.call(this,s),0,y),k=ab(+a.call(this,s),0,y),b=ab(+l.call(this,s),0,y);if(c||(c=h=Nm()),x<=0&&w<=0&&k<=0&&b<=0)c.rect(m,g,p,v);else{var T=m+p,_=g+v;c.moveTo(m+x,g),c.lineTo(T-w,g),c.bezierCurveTo(T-pd*w,g,T,g+pd*w,T,g+w),c.lineTo(T,_-b),c.bezierCurveTo(T,_-pd*b,T-pd*b,_,T-b,_),c.lineTo(m+k,_),c.bezierCurveTo(m+pd*k,_,m,_-pd*k,m,_-k),c.lineTo(m,g+x),c.bezierCurveTo(m,g+pd*x,m+pd*x,g,m+x,g),c.closePath()}if(h)return c=null,h+""||null}return i.x=function(s){return arguments.length?(t=Th(s),i):t},i.y=function(s){return arguments.length?(n=Th(s),i):n},i.width=function(s){return arguments.length?(e=Th(s),i):e},i.height=function(s){return arguments.length?(o=Th(s),i):o},i.cornerRadius=function(s,u,d,h){return arguments.length?(f=Th(s),r=u!=null?Th(u):f,l=d!=null?Th(d):f,a=h!=null?Th(h):r,i):f},i.context=function(s){return arguments.length?(c=s??null,i):c},i}function bF(){var t,n,e,o,f=null,r,a,l,c;function i(u,d,h){const m=h/2;if(r){var g=l-d,p=u-a;if(g||p){var v=Math.sqrt(g*g+p*p),y=(g/=v)*c,x=(p/=v)*c,w=Math.atan2(p,g);f.moveTo(a-y,l-x),f.lineTo(u-g*m,d-p*m),f.arc(u,d,m,w-Math.PI,w),f.lineTo(a+y,l+x),f.arc(a,l,c,w,w+Math.PI)}else f.arc(u,d,m,0,Df);f.closePath()}else r=1;a=u,l=d,c=m}function s(u){var d,h=u.length,m,g=!1,p;for(f==null&&(f=p=Nm()),d=0;d<=h;++d)!(dt.x||0,Ny=t=>t.y||0,zQ=t=>t.width||0,RQ=t=>t.height||0,FQ=t=>(t.x||0)+(t.width||0),NQ=t=>(t.y||0)+(t.height||0),BQ=t=>t.startAngle||0,jQ=t=>t.endAngle||0,UQ=t=>t.padAngle||0,VQ=t=>t.innerRadius||0,qQ=t=>t.outerRadius||0,HQ=t=>t.cornerRadius||0,$Q=t=>Ry(t.cornerRadiusTopLeft,t.cornerRadius)||0,GQ=t=>Ry(t.cornerRadiusTopRight,t.cornerRadius)||0,WQ=t=>Ry(t.cornerRadiusBottomRight,t.cornerRadius)||0,YQ=t=>Ry(t.cornerRadiusBottomLeft,t.cornerRadius)||0,XQ=t=>Ry(t.size,64),ZQ=t=>t.size||1,_w=t=>t.defined!==!1,JQ=t=>yF(t.shape||"circle"),KQ=qJ().startAngle(BQ).endAngle(jQ).padAngle(UQ).innerRadius(VQ).outerRadius(qQ).cornerRadius(HQ),QQ=fR().x(Fy).y1(Ny).y0(NQ).defined(_w),eee=fR().y(Ny).x1(Fy).x0(FQ).defined(_w),tee=jD().x(Fy).y(Ny).defined(_w),nee=xF().x(Fy).y(Ny).width(zQ).height(RQ).cornerRadius($Q,GQ,WQ,YQ),ree=$J().type(JQ).size(XQ),iee=bF().x(Fy).y(Ny).defined(_w).size(ZQ);function pM(t){return t.cornerRadius||t.cornerRadiusTopLeft||t.cornerRadiusTopRight||t.cornerRadiusBottomRight||t.cornerRadiusBottomLeft}function aee(t,n){return KQ.context(t)(n)}function oee(t,n){const e=n[0],o=e.interpolate||"linear";return(e.orient==="horizontal"?eee:QQ).curve(dM(o,e.orient,e.tension)).context(t)(n)}function see(t,n){const e=n[0],o=e.interpolate||"linear";return tee.curve(dM(o,e.orient,e.tension)).context(t)(n)}function Ym(t,n,e,o){return nee.context(t)(n,e,o)}function lee(t,n){return(n.mark.shape||n.shape).context(t)(n)}function uee(t,n){return ree.context(t)(n)}function cee(t,n){return iee.context(t)(n)}var _F=1;function wF(){_F=1}function gM(t,n,e){var o=n.clip,f=t._defs,r=n.clip_id||(n.clip_id="clip"+_F++),a=f.clipping[r]||(f.clipping[r]={id:r});return ga(o)?a.path=o(null):pM(e)?a.path=Ym(null,e,0,0):(a.width=e.width||0,a.height=e.height||0),"url(#"+r+")"}function zs(t){this.clear(),t&&this.union(t)}zs.prototype={clone(){return new zs(this)},clear(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},empty(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},equals(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2===t.y2},set(t,n,e,o){return ethis.x2&&(this.x2=t),n>this.y2&&(this.y2=n),this},expand(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},round(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},scale(t){return this.x1*=t,this.y1*=t,this.x2*=t,this.y2*=t,this},translate(t,n){return this.x1+=t,this.x2+=t,this.y1+=n,this.y2+=n,this},rotate(t,n,e){const o=this.rotatedPoints(t,n,e);return this.clear().add(o[0],o[1]).add(o[2],o[3]).add(o[4],o[5]).add(o[6],o[7])},rotatedPoints(t,n,e){var{x1:o,y1:f,x2:r,y2:a}=this,l=Math.cos(t),c=Math.sin(t),i=n-n*l+e*c,s=e-n*c-e*l;return[l*o-c*f+i,c*o+l*f+s,l*o-c*a+i,c*o+l*a+s,l*r-c*f+i,c*r+l*f+s,l*r-c*a+i,c*r+l*a+s]},union(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},intersect(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},alignsWith(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},intersects(t){return t&&!(this.x2t.x2||this.y2t.y2)},contains(t,n){return!(tthis.x2||nthis.y2)},width(){return this.x2-this.x1},height(){return this.y2-this.y1}};function ww(t){this.mark=t,this.bounds=this.bounds||new zs}function kw(t){ww.call(this,t),this.items=this.items||[]}ni(kw,ww);function mM(t){this._pending=0,this._loader=t||ew()}function M7(t){t._pending+=1}function j1(t){t._pending-=1}mM.prototype={pending(){return this._pending},sanitizeURL(t){const n=this;return M7(n),n._loader.sanitize(t,{context:"href"}).then(e=>(j1(n),e)).catch(()=>(j1(n),null))},loadImage(t){const n=this,e=uK();return M7(n),n._loader.sanitize(t,{context:"image"}).then(o=>{const f=o.href;if(!f||!e)throw{url:f};const r=new e,a=qi(o,"crossOrigin")?o.crossOrigin:"anonymous";return a!=null&&(r.crossOrigin=a),r.onload=()=>j1(n),r.onerror=()=>j1(n),r.src=f,r}).catch(o=>(j1(n),{complete:!1,width:0,height:0,src:o&&o.url||""}))},ready(){const t=this;return new Promise(n=>{function e(o){t.pending()?setTimeout(()=>{e(!0)},10):n(o)}e(!1)})}};function Xh(t,n,e){if(n.stroke&&n.opacity!==0&&n.strokeOpacity!==0){const o=n.strokeWidth!=null?+n.strokeWidth:1;t.expand(o+(e?fee(n,o):0))}return t}function fee(t,n){return t.strokeJoin&&t.strokeJoin!=="miter"?0:n}const hee=Df-1e-8;let Tw,Hb,$b,o0,Ck,Gb,Ok,Lk;const Ed=(t,n)=>Tw.add(t,n),Wb=(t,n)=>Ed(Hb=t,$b=n),S7=t=>Ed(t,Tw.y1),E7=t=>Ed(Tw.x1,t),t0=(t,n)=>Ck*t+Ok*n,n0=(t,n)=>Gb*t+Lk*n,W5=(t,n)=>Ed(t0(t,n),n0(t,n)),Y5=(t,n)=>Wb(t0(t,n),n0(t,n));function By(t,n){return Tw=t,n?(o0=n*Kd,Ck=Lk=Math.cos(o0),Gb=Math.sin(o0),Ok=-Gb):(Ck=Lk=1,o0=Gb=Ok=0),dee}const dee={beginPath(){},closePath(){},moveTo:Y5,lineTo:Y5,rect(t,n,e,o){o0?(W5(t+e,n),W5(t+e,n+o),W5(t,n+o),Y5(t,n)):(Ed(t+e,n+o),Wb(t,n))},quadraticCurveTo(t,n,e,o){const f=t0(t,n),r=n0(t,n),a=t0(e,o),l=n0(e,o);C7(Hb,f,a,S7),C7($b,r,l,E7),Wb(a,l)},bezierCurveTo(t,n,e,o,f,r){const a=t0(t,n),l=n0(t,n),c=t0(e,o),i=n0(e,o),s=t0(f,r),u=n0(f,r);O7(Hb,a,c,s,S7),O7($b,l,i,u,E7),Wb(s,u)},arc(t,n,e,o,f,r){if(o+=o0,f+=o0,Hb=e*Math.cos(f)+t,$b=e*Math.sin(f)+n,Math.abs(f-o)>hee)Ed(t-e,n-e),Ed(t+e,n+e);else{const a=i=>Ed(e*Math.cos(i)+t,e*Math.sin(i)+n);let l,c;if(a(o),a(f),f!==o)if(o=o%Df,o<0&&(o+=Df),f=f%Df,f<0&&(f+=Df),ff;++c,l-=e0)a(l);else for(l=o-o%e0+e0,c=0;c<4&&lMQ?(s=a*a+l*r,s>=0&&(s=Math.sqrt(s),c=(-a+s)/r,i=(-a-s)/r)):c=.5*l/a,0d)return!1;g>u&&(u=g)}else if(h>0){if(g0?(t.globalAlpha=e,t.fillStyle=AF(t,n,n.fill),!0):!1}var gee=[];function mm(t,n,e){var o=(o=n.strokeWidth)!=null?o:1;return o<=0?!1:(e*=n.strokeOpacity==null?1:n.strokeOpacity,e>0?(t.globalAlpha=e,t.strokeStyle=AF(t,n,n.stroke),t.lineWidth=o,t.lineCap=n.strokeCap||"butt",t.lineJoin=n.strokeJoin||"miter",t.miterLimit=n.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(n.strokeDash||gee),t.lineDashOffset=n.strokeDashOffset||0),!0):!1)}function mee(t,n){return t.zindex-n.zindex||t.index-n.index}function xM(t){if(!t.zdirty)return t.zitems;var n=t.items,e=[],o,f,r;for(f=0,r=n.length;f=0;)if(o=n(e[f]))return o;if(e===r){for(e=t.items,f=e.length;--f>=0;)if(!e[f].zindex&&(o=n(e[f])))return o}return null}function bM(t){return function(n,e,o){ff(e,f=>{(!o||o.intersects(f.bounds))&&MF(t,n,f,f)})}}function vee(t){return function(n,e,o){e.items.length&&(!o||o.intersects(e.bounds))&&MF(t,n,e.items[0],e.items)}}function MF(t,n,e,o){var f=e.opacity==null?1:e.opacity;f!==0&&(t(n,o)||(gm(n,e),e.fill&&O_(n,e,f)&&n.fill(),e.stroke&&mm(n,e,f)&&n.stroke()))}function Aw(t){return t=t||mc,function(n,e,o,f,r,a){return o*=n.pixelRatio,f*=n.pixelRatio,L_(e,l=>{const c=l.bounds;if(!(c&&!c.contains(r,a)||!c)&&t(n,l,o,f,r,a))return l})}}function jy(t,n){return function(e,o,f,r){var a=Array.isArray(o)?o[0]:o,l=n??a.fill,c=a.stroke&&e.isPointInStroke,i,s;return c&&(i=a.strokeWidth,s=a.strokeCap,e.lineWidth=i??1,e.lineCap=s??"butt"),t(e,o)?!1:l&&e.isPointInPath(f,r)||c&&e.isPointInStroke(f,r)}}function _M(t){return Aw(jy(t))}function d0(t,n){return"translate("+t+","+n+")"}function wM(t){return"rotate("+t+")"}function yee(t,n){return"scale("+t+","+n+")"}function SF(t){return d0(t.x||0,t.y||0)}function xee(t){return d0(t.x||0,t.y||0)+(t.angle?" "+wM(t.angle):"")}function bee(t){return d0(t.x||0,t.y||0)+(t.angle?" "+wM(t.angle):"")+(t.scaleX||t.scaleY?" "+yee(t.scaleX||1,t.scaleY||1):"")}function kM(t,n,e){function o(a,l){a("transform",xee(l)),a("d",n(null,l))}function f(a,l){return n(By(a,l.angle),l),Xh(a,l).translate(l.x||0,l.y||0)}function r(a,l){var c=l.x||0,i=l.y||0,s=l.angle||0;a.translate(c,i),s&&a.rotate(s*=Kd),a.beginPath(),n(a,l),s&&a.rotate(-s),a.translate(-c,-i)}return{type:t,tag:"path",nested:!1,attr:o,bound:f,draw:bM(r),pick:_M(r),isect:e||vM(r)}}var _ee=kM("arc",aee);function wee(t,n){for(var e=t[0].orient==="horizontal"?n[1]:n[0],o=t[0].orient==="horizontal"?"y":"x",f=t.length,r=1/0,a,l;--f>=0;)t[f].defined!==!1&&(l=Math.abs(t[f][o]-e),l=0;)if(t[o].defined!==!1&&(f=t[o].x-n[0],r=t[o].y-n[1],a=f*f+r*r,a=0;)if(t[e].defined!==!1&&(o=t[e].x-n[0],f=t[e].y-n[1],r=o*o+f*f,o=t[e].size||1,r.5&&n<1.5?.5-Math.abs(n-1):0}function See(t,n){t("transform",SF(n))}function OF(t,n){const e=CF(n);t("d",Ym(null,n,e,e))}function Eee(t,n){t("class","background"),t("aria-hidden",!0),OF(t,n)}function Cee(t,n){t("class","foreground"),t("aria-hidden",!0),n.strokeForeground?OF(t,n):t("d","")}function Oee(t,n,e){const o=n.clip?gM(e,n,n):null;t("clip-path",o)}function Lee(t,n){if(!n.clip&&n.items){const e=n.items,o=e.length;for(let f=0;f{const f=o.x||0,r=o.y||0,a=o.strokeForeground,l=o.opacity==null?1:o.opacity;(o.stroke||o.fill)&&l&&(Kv(t,o,f,r),gm(t,o),o.fill&&O_(t,o,l)&&t.fill(),o.stroke&&!a&&mm(t,o,l)&&t.stroke()),t.save(),t.translate(f,r),o.clip&&EF(t,o),e&&e.translate(-f,-r),ff(o,c=>{this.draw(t,c,e)}),e&&e.translate(f,r),t.restore(),a&&o.stroke&&l&&(Kv(t,o,f,r),gm(t,o),mm(t,o,l)&&t.stroke())})}function Ree(t,n,e,o,f,r){if(n.bounds&&!n.bounds.contains(f,r)||!n.items)return null;const a=e*t.pixelRatio,l=o*t.pixelRatio;return L_(n,c=>{let i,s,u;const d=c.bounds;if(d&&!d.contains(f,r))return;s=c.x||0,u=c.y||0;const h=s+(c.width||0),m=u+(c.height||0),g=c.clip;if(g&&(fh||rm))return;if(t.save(),t.translate(s,u),s=f-s,u=r-u,g&&pM(c)&&!Iee(t,c,a,l))return t.restore(),null;const p=c.strokeForeground,v=n.interactive!==!1;return v&&p&&c.stroke&&Dee(t,c,a,l)?(t.restore(),c):(i=L_(c,y=>Fee(y,s,u)?this.pick(y,e,o,s,u):null),!i&&v&&(c.fill||!p&&c.stroke)&&Pee(t,c,a,l)&&(i=c),t.restore(),i||null)})}function Fee(t,n,e){return(t.interactive!==!1||t.marktype==="group")&&t.bounds&&t.bounds.contains(n,e)}var Nee={type:"group",tag:"g",nested:!1,attr:See,bound:Lee,draw:zee,pick:Ree,isect:kF,content:Oee,background:Eee,foreground:Cee},Qv={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1"};function AM(t,n){var e=t.image;return(!e||t.url&&t.url!==e.url)&&(e={complete:!1,width:0,height:0},n.loadImage(t.url).then(o=>{t.image=o,t.image.url=t.url})),e}function MM(t,n){return t.width!=null?t.width:!n||!n.width?0:t.aspect!==!1&&t.height?t.height*n.width/n.height:n.width}function SM(t,n){return t.height!=null?t.height:!n||!n.height?0:t.aspect!==!1&&t.width?t.width*n.height/n.width:n.height}function Mw(t,n){return t==="center"?n/2:t==="right"?n:0}function Sw(t,n){return t==="middle"?n/2:t==="bottom"?n:0}function Bee(t,n,e){const o=AM(n,e),f=MM(n,o),r=SM(n,o),a=(n.x||0)-Mw(n.align,f),l=(n.y||0)-Sw(n.baseline,r),c=!o.src&&o.toDataURL?o.toDataURL():o.src||"";t("href",c,Qv["xmlns:xlink"],"xlink:href"),t("transform",d0(a,l)),t("width",f),t("height",r),t("preserveAspectRatio",n.aspect===!1?"none":"xMidYMid")}function jee(t,n){const e=n.image,o=MM(n,e),f=SM(n,e),r=(n.x||0)-Mw(n.align,o),a=(n.y||0)-Sw(n.baseline,f);return t.set(r,a,r+o,a+f)}function Uee(t,n,e){ff(n,o=>{if(e&&!e.intersects(o.bounds))return;const f=AM(o,this);let r=MM(o,f),a=SM(o,f);if(r===0||a===0)return;let l=(o.x||0)-Mw(o.align,r),c=(o.y||0)-Sw(o.baseline,a),i,s,u,d;o.aspect!==!1&&(s=f.width/f.height,u=o.width/o.height,s===s&&u===u&&s!==u&&(u{if(!(e&&!e.intersects(o.bounds))){var f=o.opacity==null?1:o.opacity;f&&LF(t,o,f)&&(gm(t,o),t.stroke())}})}function Qee(t,n,e,o){return t.isPointInStroke?LF(t,n,1)&&t.isPointInStroke(e,o):!1}var ete={type:"rule",tag:"line",nested:!1,attr:Zee,bound:Jee,draw:Kee,pick:Aw(Qee),isect:TF},tte=kM("shape",lee),nte=kM("symbol",uee,yM);const I7=pI();var af={height:ah,measureWidth:EM,estimateWidth:Dk,width:Dk,canvas:PF};PF(!0);function PF(t){af.width=t&&Hd?EM:Dk}function Dk(t,n){return DF(ep(t,n),ah(t))}function DF(t,n){return~~(.8*t.length*n)}function EM(t,n){return ah(t)<=0||!(n=ep(t,n))?0:IF(n,Ew(t))}function IF(t,n){const e="(".concat(n,") ").concat(t);let o=I7.get(e);return o===void 0&&(Hd.font=n,o=Hd.measureText(t).width,I7.set(e,o)),o}function ah(t){return t.fontSize!=null?+t.fontSize||0:11}function Qd(t){return t.lineHeight!=null?t.lineHeight:ah(t)+2}function rte(t){return Ir(t)?t.length>1?t:t[0]:t}function Uy(t){return rte(t.lineBreak&&t.text&&!Ir(t.text)?t.text.split(t.lineBreak):t.text)}function CM(t){const n=Uy(t);return(Ir(n)?n.length-1:0)*Qd(t)}function ep(t,n){const e=n==null?"":(n+"").trim();return t.limit>0&&e.length?ate(t,e):e}function ite(t){if(af.width===EM){const n=Ew(t);return e=>IF(e,n)}else{const n=ah(t);return e=>DF(e,n)}}function ate(t,n){var e=+t.limit,o=ite(t);if(o(n)>>1,o(n.slice(c))>e?a=c+1:l=c;return f+n.slice(a)}else{for(;a>>1),o(n.slice(0,c))Math.max(d,af.width(n,h)),0)):u=af.width(n,s),f==="center"?c-=u/2:f==="right"&&(c-=u),t.set(c+=a,i+=l,c+u,i+o),n.angle&&!e)t.rotate(n.angle*Kd,a,l);else if(e===2)return t.rotatedPoints(n.angle*Kd,a,l);return t}function lte(t,n,e){ff(n,o=>{var f=o.opacity==null?1:o.opacity,r,a,l,c,i,s,u;if(!(e&&!e.intersects(o.bounds)||f===0||o.fontSize<=0||o.text==null||o.text.length===0)){if(t.font=Ew(o),t.textAlign=o.align||"left",r=Cw(o),a=r.x1,l=r.y1,o.angle&&(t.save(),t.translate(a,l),t.rotate(o.angle*Kd),a=l=0),a+=o.dx||0,l+=(o.dy||0)+OM(o),s=Uy(o),gm(t,o),Ir(s))for(i=Qd(o),c=0;cn;)t.removeChild(e[--o]);return t}function jF(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}function Ow(t,n){const e=n.getBoundingClientRect();return[t.clientX-e.left-(n.clientLeft||0),t.clientY-e.top-(n.clientTop||0)]}function pte(t,n,e,o){var f=t&&t.mark,r,a;if(f&&(r=tc[f.marktype]).tip){for(a=Ow(n,e),a[0]-=o[0],a[1]-=o[1];t=t.mark.group;)a[0]-=t.x||0,a[1]-=t.y||0;t=r.tip(f.items,a)}return t}function tp(t,n){this._active=null,this._handlers={},this._loader=t||ew(),this._tooltip=n||gte}function gte(t,n,e,o){t.element().setAttribute("title",o||"")}tp.prototype={initialize(t,n,e){return this._el=t,this._obj=e||null,this.origin(n)},element(){return this._el},canvas(){return this._el&&this._el.firstChild},origin(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},scene(t){return arguments.length?(this._scene=t,this):this._scene},on(){},off(){},_handlerIndex(t,n,e){for(let o=t?t.length:0;--o>=0;)if(t[o].type===n&&(!e||t[o].handler===e))return o;return-1},handlers(t){const n=this._handlers,e=[];if(t)e.push(...n[this.eventName(t)]);else for(const o in n)e.push(...n[o]);return e},eventName(t){const n=t.indexOf(".");return n<0?t:t.slice(0,n)},handleHref(t,n,e){this._loader.sanitize(e,{context:"href"}).then(o=>{const f=new MouseEvent(t.type,t),r=Cd(null,"a");for(const a in o)r.setAttribute(a,o[a]);r.dispatchEvent(f)}).catch(()=>{})},handleTooltip(t,n,e){if(n&&n.tooltip!=null){n=pte(n,t,this.canvas(),this._origin);const o=e&&n&&n.tooltip||null;this._tooltip.call(this._obj,this,t,n,o)}},getItemBoundingClientRect(t){const n=this.canvas();if(!n)return;const e=n.getBoundingClientRect(),o=this._origin,f=t.bounds,r=f.width(),a=f.height();let l=f.x1+o[0]+e.left,c=f.y1+o[1]+e.top;for(;t.mark&&(t=t.mark.group);)l+=t.x||0,c+=t.y||0;return{x:l,y:c,width:r,height:a,left:l,top:c,right:l+r,bottom:c+a}}};function oh(t){this._el=null,this._bgcolor=null,this._loader=new mM(t)}oh.prototype={initialize(t,n,e,o,f){return this._el=t,this.resize(n,e,o,f)},element(){return this._el},canvas(){return this._el&&this._el.firstChild},background(t){return arguments.length===0?this._bgcolor:(this._bgcolor=t,this)},resize(t,n,e,o){return this._width=t,this._height=n,this._origin=e||[0,0],this._scale=o||1,this},dirty(){},render(t){const n=this;return n._call=function(){n._render(t)},n._call(),n._call=null,n},_render(){},renderAsync(t){const n=this.render(t);return this._ready?this._ready.then(()=>n):Promise.resolve(n)},_load(t,n){var e=this,o=e._loader[t](n);if(!e._ready){const f=e._call;e._ready=e._loader.ready().then(r=>{r&&f(),e._ready=null})}return o},sanitizeURL(t){return this._load("sanitizeURL",t)},loadImage(t){return this._load("loadImage",t)}};const mte="keydown",vte="keypress",yte="keyup",UF="dragenter",Xb="dragleave",VF="dragover",zk="mousedown",xte="mouseup",P_="mousemove",Cv="mouseout",qF="mouseover",D_="click",bte="dblclick",_te="wheel",HF="mousewheel",I_="touchstart",z_="touchmove",R_="touchend",wte=[mte,vte,yte,UF,Xb,VF,zk,xte,P_,Cv,qF,D_,bte,_te,HF,I_,z_,R_],Rk=P_,ey=Cv,Fk=D_;function qy(t,n){tp.call(this,t,n),this._down=null,this._touch=null,this._first=!0,this._events={}}const kte=t=>t===I_||t===z_||t===R_?[I_,z_,R_]:[t];function R7(t,n){kte(n).forEach(e=>Tte(t,e))}function Tte(t,n){const e=t.canvas();e&&!t._events[n]&&(t._events[n]=1,e.addEventListener(n,t[n]?o=>t[n](o):o=>t.fire(n,o)))}function F7(t,n,e){return function(o){const f=this._active,r=this.pickEvent(o);r===f?this.fire(t,o):((!f||!f.exit)&&this.fire(e,o),this._active=r,this.fire(n,o),this.fire(t,o))}}function N7(t){return function(n){this.fire(t,n),this._active=null}}ni(qy,tp,{initialize(t,n,e){return this._canvas=t&&DM(t,"canvas"),[D_,zk,P_,Cv,Xb].forEach(o=>R7(this,o)),tp.prototype.initialize.call(this,t,n,e)},canvas(){return this._canvas},context(){return this._canvas.getContext("2d")},events:wte,DOMMouseScroll(t){this.fire(HF,t)},mousemove:F7(P_,qF,Cv),dragover:F7(VF,UF,Xb),mouseout:N7(Cv),dragleave:N7(Xb),mousedown(t){this._down=this._active,this.fire(zk,t)},click(t){this._down===this._active&&(this.fire(D_,t),this._down=null)},touchstart(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire(I_,t,!0)},touchmove(t){this.fire(z_,t,!0)},touchend(t){this.fire(R_,t,!0),this._touch=null},fire(t,n,e){const o=e?this._touch:this._active,f=this._handlers[t];if(n.vegaType=t,t===Fk&&o&&o.href?this.handleHref(n,o,o.href):(t===Rk||t===ey)&&this.handleTooltip(n,o,t!==ey),f)for(let r=0,a=f.length;r=0&&o.splice(f,1),this},pickEvent(t){const n=Ow(t,this._canvas),e=this._origin;return this.pick(this._scene,n[0],n[1],n[0]-e[0],n[1]-e[1])},pick(t,n,e,o,f){const r=this.context();return tc[t.marktype].pick.call(this,r,t,n,e,o,f)}});function Ate(){return typeof window<"u"&&window.devicePixelRatio||1}var Mte=Ate();function Ste(t,n,e,o,f,r){const a=typeof HTMLElement<"u"&&t instanceof HTMLElement&&t.parentNode!=null,l=t.getContext("2d"),c=a?Mte:f;t.width=n*c,t.height=e*c;for(const i in r)l[i]=r[i];return a&&c!==1&&(t.style.width=n+"px",t.style.height=e+"px"),l.pixelRatio=c,l.setTransform(c,0,0,c,c*o[0],c*o[1]),t}function F_(t){oh.call(this,t),this._options={},this._redraw=!1,this._dirty=new zs,this._tempb=new zs}const B7=oh.prototype,Ete=(t,n,e)=>new zs().set(0,0,n,e).translate(-t[0],-t[1]);function Cte(t,n,e){return n.expand(1).round(),t.pixelRatio%1&&n.scale(t.pixelRatio).round().scale(1/t.pixelRatio),n.translate(-(e[0]%1),-(e[1]%1)),t.beginPath(),t.rect(n.x1,n.y1,n.width(),n.height()),t.clip(),n}ni(F_,oh,{initialize(t,n,e,o,f,r){return this._options=r||{},this._canvas=this._options.externalContext?null:qd(1,1,this._options.type),t&&this._canvas&&(Xc(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),B7.initialize.call(this,t,n,e,o,f)},resize(t,n,e,o){if(B7.resize.call(this,t,n,e,o),this._canvas)Ste(this._canvas,this._width,this._height,this._origin,this._scale,this._options.context);else{const f=this._options.externalContext;f||Pr("CanvasRenderer is missing a valid canvas or context"),f.scale(this._scale,this._scale),f.translate(this._origin[0],this._origin[1])}return this._redraw=!0,this},canvas(){return this._canvas},context(){return this._options.externalContext||(this._canvas?this._canvas.getContext("2d"):null)},dirty(t){const n=this._tempb.clear().union(t.bounds);let e=t.mark.group;for(;e;)n.translate(e.x||0,e.y||0),e=e.mark.group;this._dirty.union(n)},_render(t){const n=this.context(),e=this._origin,o=this._width,f=this._height,r=this._dirty,a=Ete(e,o,f);n.save();const l=this._redraw||r.empty()?(this._redraw=!1,a.expand(1)):Cte(n,a.intersect(r),e);return this.clear(-e[0],-e[1],o,f),this.draw(n,t,l),n.restore(),r.clear(),this},draw(t,n,e){const o=tc[n.marktype];n.clip&&Mee(t,n),o.draw.call(this,t,n,e),n.clip&&t.restore()},clear(t,n,e,o){const f=this._options,r=this.context();f.type!=="pdf"&&!f.externalContext&&r.clearRect(t,n,e,o),this._bgcolor!=null&&(r.fillStyle=this._bgcolor,r.fillRect(t,n,e,o))}});function IM(t,n){tp.call(this,t,n);const e=this;e._hrefHandler=Nk(e,(o,f)=>{f&&f.href&&e.handleHref(o,f,f.href)}),e._tooltipHandler=Nk(e,(o,f)=>{e.handleTooltip(o,f,o.type!==ey)})}const Nk=(t,n)=>e=>{let o=e.target.__data__;o=Array.isArray(o)?o[0]:o,e.vegaType=e.type,n.call(t._obj,e,o)};ni(IM,tp,{initialize(t,n,e){let o=this._svg;return o&&(o.removeEventListener(Fk,this._hrefHandler),o.removeEventListener(Rk,this._tooltipHandler),o.removeEventListener(ey,this._tooltipHandler)),this._svg=o=t&&DM(t,"svg"),o&&(o.addEventListener(Fk,this._hrefHandler),o.addEventListener(Rk,this._tooltipHandler),o.addEventListener(ey,this._tooltipHandler)),tp.prototype.initialize.call(this,t,n,e)},canvas(){return this._svg},on(t,n){const e=this.eventName(t),o=this._handlers;if(this._handlerIndex(o[e],t,n)<0){const r={type:t,handler:n,listener:Nk(this,n)};(o[e]||(o[e]=[])).push(r),this._svg&&this._svg.addEventListener(e,r.listener)}return this},off(t,n){const e=this.eventName(t),o=this._handlers[e],f=this._handlerIndex(o,t,n);return f>=0&&(this._svg&&this._svg.removeEventListener(e,o[f].listener),o.splice(f,1)),this}});const $F="aria-hidden",zM="aria-label",RM="role",FM="aria-roledescription",GF="graphics-object",NM="graphics-symbol",WF=(t,n,e)=>({[RM]:t,[FM]:n,[zM]:e||void 0}),Ote=uf(["axis-domain","axis-grid","axis-label","axis-tick","axis-title","legend-band","legend-entry","legend-gradient","legend-label","legend-title","legend-symbol","title"]),j7={axis:{desc:"axis",caption:Dte},legend:{desc:"legend",caption:Ite},"title-text":{desc:"title",caption:t=>"Title text '".concat(V7(t),"'")},"title-subtitle":{desc:"subtitle",caption:t=>"Subtitle text '".concat(V7(t),"'")}},U7={ariaRole:RM,ariaRoleDescription:FM,description:zM};function YF(t,n){const e=n.aria===!1;if(t($F,e||void 0),e||n.description==null)for(const o in U7)t(U7[o],void 0);else{const o=n.mark.marktype;t(zM,n.description),t(RM,n.ariaRole||(o==="group"?GF:NM)),t(FM,n.ariaRoleDescription||"".concat(o," mark"))}}function XF(t){return t.aria===!1?{[$F]:!0}:Ote[t.role]?null:j7[t.role]?Pte(t,j7[t.role]):Lte(t)}function Lte(t){const n=t.marktype,e=n==="group"||n==="text"||t.items.some(o=>o.description!=null&&o.aria!==!1);return WF(e?GF:NM,"".concat(n," mark container"),t.description)}function Pte(t,n){try{const e=t.items[0],o=n.caption||(()=>"");return WF(n.role||NM,n.desc,e.description||o(e))}catch{return null}}function V7(t){return ki(t.text).join(" ")}function Dte(t){const n=t.datum,e=t.orient,o=n.title?ZF(t):null,f=t.context,r=f.scales[n.scale].value,a=f.dataflow.locale(),l=r.type,c=e==="left"||e==="right"?"Y":"X";return"".concat(c,"-axis")+(o?" titled '".concat(o,"'"):"")+" for a ".concat(dm(l)?"discrete":l," scale")+" with ".concat(dF(a,r,t))}function Ite(t){const n=t.datum,e=n.title?ZF(t):null,o="".concat(n.type||""," legend").trim(),f=n.scales,r=Object.keys(f),a=t.context,l=a.scales[f[r[0]]].value,c=a.dataflow.locale();return Rte(o)+(e?" titled '".concat(e,"'"):"")+" for ".concat(zte(r))+" with ".concat(dF(c,l,t))}function ZF(t){try{return ki(Na(t.items).items[0].text).join(" ")}catch{return null}}function zte(t){return t=t.map(n=>n+(n==="fill"||n==="stroke"?" color":"")),t.length<2?t[0]:t.slice(0,-1).join(", ")+" and "+Na(t)}function Rte(t){return t.length?t[0].toUpperCase()+t.slice(1):t}const JF=t=>(t+"").replace(/&/g,"&").replace(//g,">"),Fte=t=>JF(t).replace(/"/g,""").replace(/\t/g," ").replace(/\n/g," ").replace(/\r/g," ");function BM(){let t="",n="",e="";const o=[],f=()=>n=e="",r=c=>{n&&(t+="".concat(n,">").concat(e),f()),o.push(c)},a=(c,i)=>(i!=null&&(n+=" ".concat(c,'="').concat(Fte(i),'"')),l),l={open(c){r(c),n="<"+c;for(var i=arguments.length,s=new Array(i>1?i-1:0),u=1;u".concat(e,""):"/>"):t+=""),f(),l},attr:a,text:c=>(e+=JF(c),l),toString:()=>t};return l}const KF=t=>QF(BM(),t)+"";function QF(t,n){if(t.open(n.tagName),n.hasAttributes()){const e=n.attributes,o=e.length;for(let f=0;f{i.dirty=n})),!o.zdirty){if(e.exit){r.nested&&o.items.length?(c=o.items[0],c._svg&&this._update(r,c._svg,c)):e._svg&&(c=e._svg.parentNode,c&&c.removeChild(e._svg)),e._svg=null;continue}e=r.nested?o.items[0]:e,e._update!==n&&(!e._svg||!e._svg.ownerSVGElement?(this._dirtyAll=!1,H7(e,n)):this._update(r,e._svg,e),e._update=n)}return!this._dirtyAll},mark(t,n,e){if(!this.isDirty(n))return n._svg;const o=this._svg,f=tc[n.marktype],r=n.interactive===!1?"none":null,a=f.tag==="g",l=$7(n,t,e,"g",o);l.setAttribute("class",jF(n));const c=XF(n);for(const d in c)ru(l,d,c[d]);a||ru(l,"pointer-events",r),ru(l,"clip-path",n.clip?gM(this,n,n.group):null);let i=null,s=0;const u=d=>{const h=this.isDirty(d),m=$7(d,l,i,f.tag,o);h&&(this._update(f,m,d),a&&jte(this,m,d)),i=m,++s};return f.nested?n.items.length&&u(n.items[0]):ff(n,u),Xc(l,s),l},_update(t,n,e){Nh=n,Dl=n.__values__,YF(Ov,e),t.attr(Ov,e,this);const o=Vte[t.type];o&&o.call(this,t,n,e),Nh&&this.style(Nh,e)},style(t,n){if(n!=null){for(const e in N_){let o=e==="font"?Vy(n):n[e];if(o===Dl[e])continue;const f=N_[e];o==null?t.removeAttribute(f):(hM(o)&&(o=gF(o,this._defs.gradient,tN())),t.setAttribute(f,o+"")),Dl[e]=o}for(const e in B_)Zb(t,B_[e],n[e])}},defs(){const t=this._svg,n=this._defs;let e=n.el,o=0;for(const f in n.gradient)e||(n.el=e=Tu(t,U1+1,"defs",$s)),o=Nte(e,n.gradient[f],o);for(const f in n.clipping)e||(n.el=e=Tu(t,U1+1,"defs",$s)),o=Bte(e,n.clipping[f],o);e&&(o===0?(t.removeChild(e),n.el=null):Xc(e,o))},_clearDefs(){const t=this._defs;t.gradient={},t.clipping={}}});function H7(t,n){for(;t&&t.dirty!==n;t=t.mark.group)if(t.dirty=n,t.mark&&t.mark.dirty!==n)t.mark.dirty=n;else return}function Nte(t,n,e){let o,f,r;if(n.gradient==="radial"){let a=Tu(t,e++,"pattern",$s);Od(a,{id:C_+n.id,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),a=Tu(a,0,"rect",$s),Od(a,{width:1,height:1,fill:"url(".concat(tN(),"#").concat(n.id,")")}),t=Tu(t,e++,"radialGradient",$s),Od(t,{id:n.id,fx:n.x1,fy:n.y1,fr:n.r1,cx:n.x2,cy:n.y2,r:n.r2})}else t=Tu(t,e++,"linearGradient",$s),Od(t,{id:n.id,x1:n.x1,x2:n.x2,y1:n.y1,y2:n.y2});for(o=0,f=n.stops.length;o{o=t.mark(n,r,o),++f}),Xc(n,1+f)}function $7(t,n,e,o,f){let r=t._svg,a;if(!r&&(a=n.ownerDocument,r=Cd(a,o,$s),t._svg=r,t.mark&&(r.__data__=t,r.__values__={fill:"default"},o==="g"))){const l=Cd(a,"path",$s);r.appendChild(l),l.__data__=t;const c=Cd(a,"g",$s);r.appendChild(c),c.__data__=t;const i=Cd(a,"path",$s);r.appendChild(i),i.__data__=t,i.__values__={fill:"default"}}return(r.ownerSVGElement!==f||Ute(r,e))&&n.insertBefore(r,e?e.nextSibling:n.firstChild),r}function Ute(t,n){return t.parentNode&&t.parentNode.childNodes.length>1&&t.previousSibling!=n}let Nh=null,Dl=null;const Vte={group(t,n,e){const o=Nh=n.childNodes[2];Dl=o.__values__,t.foreground(Ov,e,this),Dl=n.__values__,Nh=n.childNodes[1],t.content(Ov,e,this);const f=Nh=n.childNodes[0];t.background(Ov,e,this);const r=e.mark.interactive===!1?"none":null;if(r!==Dl.events&&(ru(o,"pointer-events",r),ru(f,"pointer-events",r),Dl.events=r),e.strokeForeground&&e.stroke){const a=e.fill;ru(o,"display",null),this.style(f,e),ru(f,"stroke",null),a&&(e.fill=null),Dl=o.__values__,this.style(o,e),a&&(e.fill=a),Nh=null}else ru(o,"display","none")},image(t,n,e){e.smooth===!1?(Zb(n,"image-rendering","optimizeSpeed"),Zb(n,"image-rendering","pixelated")):Zb(n,"image-rendering",null)},text(t,n,e){const o=Uy(e);let f,r,a,l;Ir(o)?(r=o.map(c=>ep(e,c)),f=r.join(` +`),f!==Dl.text&&(Xc(n,0),a=n.ownerDocument,l=Qd(e),r.forEach((c,i)=>{const s=Cd(a,"tspan",$s);s.__data__=e,s.textContent=c,i&&(s.setAttribute("x",0),s.setAttribute("dy",l)),n.appendChild(s)}),Dl.text=f)):(r=ep(e,o),r!==Dl.text&&(n.textContent=r,Dl.text=r)),ru(n,"font-family",Vy(e)),ru(n,"font-size",ah(e)+"px"),ru(n,"font-style",e.fontStyle),ru(n,"font-variant",e.fontVariant),ru(n,"font-weight",e.fontWeight)}};function Ov(t,n,e){n!==Dl[t]&&(e?qte(Nh,t,n,e):ru(Nh,t,n),Dl[t]=n)}function Zb(t,n,e){e!==Dl[n]&&(e==null?t.style.removeProperty(n):t.style.setProperty(n,e+""),Dl[n]=e)}function Od(t,n){for(const e in n)ru(t,e,n[e])}function ru(t,n,e){e!=null?t.setAttribute(n,e):t.removeAttribute(n)}function qte(t,n,e,o){e!=null?t.setAttributeNS(o,n,e):t.removeAttributeNS(o,n)}function tN(){let t;return typeof window>"u"?"":(t=window.location).hash?t.href.slice(0,-t.hash.length):t.href}function UM(t){oh.call(this,t),this._text=null,this._defs={gradient:{},clipping:{}}}ni(UM,oh,{svg(){return this._text},_render(t){const n=BM();n.open("svg",pa({},Qv,{class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 ".concat(this._width," ").concat(this._height)}));const e=this._bgcolor;return e&&e!=="transparent"&&e!=="none"&&n.open("rect",{width:this._width,height:this._height,fill:e}).close(),n.open("g",eN,{transform:"translate("+this._origin+")"}),this.mark(n,t),n.close(),this.defs(n),this._text=n.close()+"",this},mark(t,n){const e=tc[n.marktype],o=e.tag,f=[YF,e.attr];t.open("g",{class:jF(n),"clip-path":n.clip?gM(this,n,n.group):null},XF(n),{"pointer-events":o!=="g"&&n.interactive===!1?"none":null});const r=a=>{const l=this.href(a);if(l&&t.open("a",l),t.open(o,this.attr(n,a,f,o!=="g"?o:null)),o==="text"){const c=Uy(a);if(Ir(c)){const i={x:0,dy:Qd(a)};for(let s=0;sthis.mark(t,u)),t.close(),c&&s?(i&&(a.fill=null),a.stroke=s,t.open("path",this.attr(n,a,e.foreground,"bgrect")).close(),i&&(a.fill=i)):t.open("path",this.attr(n,a,e.foreground,"bgfore")).close()}t.close(),l&&t.close()};return e.nested?n.items&&n.items.length&&r(n.items[0]):ff(n,r),t.close()},href(t){const n=t.href;let e;if(n){if(e=this._hrefs&&this._hrefs[n])return e;this.sanitizeURL(n).then(o=>{o["xlink:href"]=o.href,o.href=null,(this._hrefs||(this._hrefs={}))[n]=o})}return null},attr(t,n,e,o){const f={},r=(a,l,c,i)=>{f[i||a]=l};return Array.isArray(e)?e.forEach(a=>a(r,n,this)):e(r,n,this),o&&Hte(f,n,t,o,this._defs),f},defs(t){const n=this._defs.gradient,e=this._defs.clipping;if(Object.keys(n).length+Object.keys(e).length!==0){t.open("defs");for(const f in n){const r=n[f],a=r.stops;r.gradient==="radial"?(t.open("pattern",{id:C_+f,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),t.open("rect",{width:"1",height:"1",fill:"url(#"+f+")"}).close(),t.close(),t.open("radialGradient",{id:f,fx:r.x1,fy:r.y1,fr:r.r1,cx:r.x2,cy:r.y2,r:r.r2})):t.open("linearGradient",{id:f,x1:r.x1,x2:r.x2,y1:r.y1,y2:r.y2});for(let l=0;l1?(vm[t]=n,this):vm[t]}function oN(t,n,e){const o=[],f=new zs().union(n),r=t.marktype;return r?sN(t,f,e,o):r==="group"?lN(t,f,e,o):Pr("Intersect scene must be mark node or group item.")}function sN(t,n,e,o){if($te(t,n,e)){const f=t.items,r=t.marktype,a=f.length;let l=0;if(r==="group")for(;l=0;r--)if(e[r]!=o[r])return!1;for(r=e.length-1;r>=0;r--)if(f=e[r],!VM(t[f],n[f],f))return!1;return typeof t==typeof n}function Yte(){wF(),xQ()}const ym="top",Zc="left",ef="right",np="bottom",Xte="top-left",Zte="top-right",Jte="bottom-left",Kte="bottom-right",qM="start",Bk="middle",iu="end",Qte="x",ene="y",Pw="group",HM="axis",$M="title",tne="frame",nne="scope",GM="legend",hN="row-header",dN="row-footer",pN="row-title",gN="column-header",mN="column-footer",vN="column-title",rne="padding",ine="symbol",yN="fit",ane="fit-x",one="fit-y",sne="pad",WM="none",ob="all",jk="each",YM="flush",Pd="column",Dd="row";function xN(t){_r.call(this,null,t)}ni(xN,_r,{transform(t,n){const e=n.dataflow,o=t.mark,f=o.marktype,r=tc[f],a=r.bound;let l=o.bounds,c;if(r.nested)o.items.length&&e.dirty(o.items[0]),l=sb(o,a),o.items.forEach(i=>{i.bounds.clear().union(l)});else if(f===Pw||t.modified())switch(n.visit(n.MOD,i=>e.dirty(i)),l.clear(),o.items.forEach(i=>l.union(sb(i,a))),o.role){case HM:case GM:case $M:n.reflow()}else c=n.changed(n.REM),n.visit(n.ADD,i=>{l.union(sb(i,a))}),n.visit(n.MOD,i=>{c=c||l.alignsWith(i.bounds),e.dirty(i),l.union(sb(i,a))}),c&&(l.clear(),o.items.forEach(i=>l.union(i.bounds)));return cN(o),n.modifies("bounds")}});function sb(t,n,e){return n(t.bounds.clear(),t,e)}const G7=":vega_identifier:";function XM(t){_r.call(this,0,t)}XM.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]};ni(XM,_r,{transform(t,n){const e=lne(n.dataflow),o=t.as;let f=e.value;return n.visit(n.ADD,r=>r[o]=r[o]||++f),e.set(this.value=f),n}});function lne(t){return t._signals[G7]||(t._signals[G7]=t.add(0))}function bN(t){_r.call(this,null,t)}ni(bN,_r,{transform(t,n){let e=this.value;e||(e=n.dataflow.scenegraph().mark(t.markdef,une(t),t.index),e.group.context=t.context,t.context.group||(t.context.group=e.group),e.source=this.source,e.clip=t.clip,e.interactive=t.interactive,this.value=e);const o=e.marktype===Pw?kw:ww;return n.visit(n.ADD,f=>o.call(f,e)),(t.modified("clip")||t.modified("interactive"))&&(e.clip=t.clip,e.interactive=!!t.interactive,e.zdirty=!0,n.reflow()),e.items=n.source,n}});function une(t){const n=t.groups,e=t.parent;return n&&n.size===1?n.get(Object.keys(n.object)[0]):n&&e?n.lookup(e):null}function _N(t){_r.call(this,null,t)}const W7={parity:t=>t.filter((n,e)=>e%2?n.opacity=0:1),greedy:(t,n)=>{let e;return t.filter((o,f)=>!f||!wN(e.bounds,o.bounds,n)?(e=o,1):o.opacity=0)}},wN=(t,n,e)=>e>Math.max(n.x1-t.x2,t.x1-n.x2,n.y1-t.y2,t.y1-n.y2),Y7=(t,n)=>{for(var e=1,o=t.length,f=t[0].bounds,r;e{const n=t.bounds;return n.width()>1&&n.height()>1},fne=(t,n,e)=>{var o=t.range(),f=new zs;return n===ym||n===np?f.set(o[0],-1/0,o[1],1/0):f.set(-1/0,o[0],1/0,o[1]),f.expand(e||1),r=>f.encloses(r.bounds)},X7=t=>(t.forEach(n=>n.opacity=1),t),Z7=(t,n)=>t.reflow(n.modified()).modifies("opacity");ni(_N,_r,{transform(t,n){const e=W7[t.method]||W7.parity,o=t.separation||0;let f=n.materialize(n.SOURCE).source,r,a;if(!f||!f.length)return;if(!t.method)return t.modified("method")&&(X7(f),n=Z7(n,t)),n;if(f=f.filter(cne),!f.length)return;if(t.sort&&(f=f.slice().sort(t.sort)),r=X7(f),n=Z7(n,t),r.length>=3&&Y7(r,o)){do r=e(r,o);while(r.length>=3&&Y7(r,o));r.length<3&&!Na(f).opacity&&(r.length>1&&(Na(r).opacity=0),Na(f).opacity=1)}t.boundScale&&t.boundTolerance>=0&&(a=fne(t.boundScale,t.boundOrient,+t.boundTolerance),f.forEach(c=>{a(c)||(c.opacity=0)}));const l=r[0].mark.bounds.clear();return f.forEach(c=>{c.opacity&&l.union(c.bounds)}),n}});function kN(t){_r.call(this,null,t)}ni(kN,_r,{transform(t,n){const e=n.dataflow;if(n.visit(n.ALL,o=>e.dirty(o)),n.fields&&n.fields.zindex){const o=n.source&&n.source[0];o&&(o.mark.zdirty=!0)}}});const Pl=new zs;function Yg(t,n,e){return t[n]===e?0:(t[n]=e,1)}function hne(t){var n=t.items[0].orient;return n===Zc||n===ef}function dne(t){let n=+t.grid;return[t.ticks?n++:-1,t.labels?n++:-1,n+ +t.domain]}function pne(t,n,e,o){var f=n.items[0],r=f.datum,a=f.translate!=null?f.translate:.5,l=f.orient,c=dne(r),i=f.range,s=f.offset,u=f.position,d=f.minExtent,h=f.maxExtent,m=r.title&&f.items[c[2]].items[0],g=f.titlePadding,p=f.bounds,v=m&&CM(m),y=0,x=0,w,k;switch(Pl.clear().union(p),p.clear(),(w=c[0])>-1&&p.union(f.items[w].bounds),(w=c[1])>-1&&p.union(f.items[w].bounds),l){case ym:y=u||0,x=-s,k=Math.max(d,Math.min(h,-p.y1)),p.add(0,-k).add(i,0),m&&lb(t,m,k,g,v,0,-1,p);break;case Zc:y=-s,x=u||0,k=Math.max(d,Math.min(h,-p.x1)),p.add(-k,0).add(0,i),m&&lb(t,m,k,g,v,1,-1,p);break;case ef:y=e+s,x=u||0,k=Math.max(d,Math.min(h,p.x2)),p.add(0,0).add(k,i),m&&lb(t,m,k,g,v,1,1,p);break;case np:y=u||0,x=o+s,k=Math.max(d,Math.min(h,p.y2)),p.add(0,0).add(i,k),m&&lb(t,m,k,g,0,0,1,p);break;default:y=f.x,x=f.y}return Xh(p.translate(y,x),f),Yg(f,"x",y+a)|Yg(f,"y",x+a)&&(f.bounds=Pl,t.dirty(f),f.bounds=p,t.dirty(f)),f.mark.bounds.clear().union(p)}function lb(t,n,e,o,f,r,a,l){const c=n.bounds;if(n.auto){const i=a*(e+f+o);let s=0,u=0;t.dirty(n),r?s=(n.x||0)-(n.x=i):u=(n.y||0)-(n.y=i),n.mark.bounds.clear().union(c.translate(-s,-u)),t.dirty(n)}l.union(c)}const J7=(t,n)=>Math.floor(Math.min(t,n)),K7=(t,n)=>Math.ceil(Math.max(t,n));function gne(t){var n=t.items,e=n.length,o=0,f,r;const a={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};for(;o1)for(T=0;T0&&(x[T]+=O/2);if(l&&Wo(e.center,Dd)&&s!==1)for(T=0;T0&&(w[T]+=R/2);for(T=0;Tf&&(t.warn("Grid headers exceed limit: "+f),n=n.slice(0,f)),g+=r,y=0,w=n.length;y=0&&(T=e[x])==null;x-=d);l?(_=h==null?T.x:Math.round(T.bounds.x1+h*T.bounds.width()),S=g):(_=g,S=h==null?T.y:Math.round(T.bounds.y1+h*T.bounds.height())),k.union(b.bounds.translate(_-(b.x||0),S-(b.y||0))),b.x=_,b.y=S,t.dirty(b),p=a(p,k[i])}return p}function eO(t,n,e,o,f,r){if(!!n){t.dirty(n);var a=e,l=e;o?a=Math.round(f.x1+r*f.width()):l=Math.round(f.y1+r*f.height()),n.bounds.translate(a-(n.x||0),l-(n.y||0)),n.mark.bounds.clear().union(n.bounds),n.x=a,n.y=l,t.dirty(n)}}function _ne(t,n){const e=t[n]||{};return(o,f)=>e[o]!=null?e[o]:t[o]!=null?t[o]:f}function wne(t,n){let e=-1/0;return t.forEach(o=>{o.offset!=null&&(e=Math.max(e,o.offset))}),e>-1/0?e:n}function kne(t,n,e,o,f,r,a){const l=_ne(e,n),c=wne(t,l("offset",0)),i=l("anchor",qM),s=i===iu?1:i===Bk?.5:0,u={align:jk,bounds:l("bounds",YM),columns:l("direction")==="vertical"?1:t.length,padding:l("margin",8),center:l("center"),nodirty:!0};switch(n){case Zc:u.anchor={x:Math.floor(o.x1)-c,column:iu,y:s*(a||o.height()+2*o.y1),row:i};break;case ef:u.anchor={x:Math.ceil(o.x2)+c,y:s*(a||o.height()+2*o.y1),row:i};break;case ym:u.anchor={y:Math.floor(f.y1)-c,row:iu,x:s*(r||f.width()+2*f.x1),column:i};break;case np:u.anchor={y:Math.ceil(f.y2)+c,x:s*(r||f.width()+2*f.x1),column:i};break;case Xte:u.anchor={x:c,y:c};break;case Zte:u.anchor={x:r-c,y:c,column:iu};break;case Jte:u.anchor={x:c,y:a-c,row:iu};break;case Kte:u.anchor={x:r-c,y:a-c,column:iu,row:iu};break}return u}function Tne(t,n){var e=n.items[0],o=e.datum,f=e.orient,r=e.bounds,a=e.x,l=e.y,c,i;return e._bounds?e._bounds.clear().union(r):e._bounds=r.clone(),r.clear(),Mne(t,e,e.items[0].items[0]),r=Ane(e,r),c=2*e.padding,i=2*e.padding,r.empty()||(c=Math.ceil(r.width()+c),i=Math.ceil(r.height()+i)),o.type===ine&&Sne(e.items[0].items[0].items[0].items),f!==WM&&(e.x=a=0,e.y=l=0),e.width=c,e.height=i,Xh(r.set(a,l,a+c,l+i),e),e.mark.bounds.clear().union(r),e}function Ane(t,n){return t.items.forEach(e=>n.union(e.bounds)),n.x1=t.padding,n.y1=t.padding,n}function Mne(t,n,e){var o=n.padding,f=o-e.x,r=o-e.y;if(!n.datum.title)(f||r)&&V1(t,e,f,r);else{var a=n.items[1].items[0],l=a.anchor,c=n.titlePadding||0,i=o-a.x,s=o-a.y;switch(a.orient){case Zc:f+=Math.ceil(a.bounds.width())+c;break;case ef:case np:break;default:r+=a.bounds.height()+c}switch((f||r)&&V1(t,e,f,r),a.orient){case Zc:s+=Pg(n,e,a,l,1,1);break;case ef:i+=Pg(n,e,a,iu,0,0)+c,s+=Pg(n,e,a,l,1,1);break;case np:i+=Pg(n,e,a,l,0,0),s+=Pg(n,e,a,iu,-1,0,1)+c;break;default:i+=Pg(n,e,a,l,0,0)}(i||s)&&V1(t,a,i,s),(i=Math.round(a.bounds.x1-o))<0&&(V1(t,e,-i,0),V1(t,a,-i,0))}}function Pg(t,n,e,o,f,r,a){const l=t.datum.type!=="symbol",c=e.datum.vgrad,i=l&&(r||!c)&&!a?n.items[0]:n,s=i.bounds[f?"y2":"x2"]-t.padding,u=c&&r?s:0,d=c&&r?0:s,h=f<=0?0:CM(e);return Math.round(o===qM?u:o===iu?d-h:.5*(s-h))}function V1(t,n,e,o){n.x+=e,n.y+=o,n.bounds.translate(e,o),n.mark.bounds.translate(e,o),t.dirty(n)}function Sne(t){const n=t.reduce((e,o)=>(e[o.column]=Math.max(o.bounds.x2-o.x,e[o.column]||0),e),{});t.forEach(e=>{e.width=n[e.column],e.height=e.bounds.y2-e.y})}function Ene(t,n,e,o,f){var r=n.items[0],a=r.frame,l=r.orient,c=r.anchor,i=r.offset,s=r.padding,u=r.items[0].items[0],d=r.items[1]&&r.items[1].items[0],h=l===Zc||l===ef?o:e,m=0,g=0,p=0,v=0,y=0,x;if(a!==Pw?l===Zc?(m=f.y2,h=f.y1):l===ef?(m=f.y1,h=f.y2):(m=f.x1,h=f.x2):l===Zc&&(m=o,h=0),x=c===qM?m:c===iu?h:(m+h)/2,d&&d.text){switch(l){case ym:case np:y=u.bounds.height()+s;break;case Zc:v=u.bounds.width()+s;break;case ef:v=-u.bounds.width()-s;break}Pl.clear().union(d.bounds),Pl.translate(v-(d.x||0),y-(d.y||0)),Yg(d,"x",v)|Yg(d,"y",y)&&(t.dirty(d),d.bounds.clear().union(Pl),d.mark.bounds.clear().union(Pl),t.dirty(d)),Pl.clear().union(d.bounds)}else Pl.clear();switch(Pl.union(u.bounds),l){case ym:g=x,p=f.y1-Pl.height()-i;break;case Zc:g=f.x1-Pl.width()-i,p=x;break;case ef:g=f.x2+Pl.width()+i,p=x;break;case np:g=x,p=f.y2+i;break;default:g=r.x,p=r.y}return Yg(r,"x",g)|Yg(r,"y",p)&&(Pl.translate(g,p),t.dirty(r),r.bounds.clear().union(Pl),n.bounds.clear().union(Pl),t.dirty(r)),r.bounds}function AN(t){_r.call(this,null,t)}ni(AN,_r,{transform(t,n){const e=n.dataflow;return t.mark.items.forEach(o=>{t.layout&&yne(e,o,t.layout),One(e,o,t)}),Cne(t.mark.group)?n.reflow():n}});function Cne(t){return t&&t.mark.role!=="legend-entry"}function One(t,n,e){var o=n.items,f=Math.max(0,n.width||0),r=Math.max(0,n.height||0),a=new zs().set(0,0,f,r),l=a.clone(),c=a.clone(),i=[],s,u,d,h,m,g;for(m=0,g=o.length;m{d=v.orient||ef,d!==WM&&(p[d]||(p[d]=[])).push(v)});for(const v in p){const y=p[v];TN(t,y,kne(y,v,e.legends,l,c,f,r))}i.forEach(v=>{const y=v.bounds;if(y.equals(v._bounds)||(v.bounds=v._bounds,t.dirty(v),v.bounds=y,t.dirty(v)),e.autosize&&e.autosize.type===yN)switch(v.orient){case Zc:case ef:a.add(y.x1,0).add(y.x2,0);break;case ym:case np:a.add(0,y.y1).add(0,y.y2)}else a.union(y)})}a.union(l).union(c),s&&a.union(Ene(t,s,f,r,a)),n.clip&&a.set(0,0,n.width||0,n.height||0),Lne(t,n,a,e)}function Lne(t,n,e,o){const f=o.autosize||{},r=f.type;if(t._autosize<1||!r)return;let a=t._width,l=t._height,c=Math.max(0,n.width||0),i=Math.max(0,Math.ceil(-e.x1)),s=Math.max(0,n.height||0),u=Math.max(0,Math.ceil(-e.y1));const d=Math.max(0,Math.ceil(e.x2-c)),h=Math.max(0,Math.ceil(e.y2-s));if(f.contains===rne){const m=t.padding();a-=m.left+m.right,l-=m.top+m.bottom}r===WM?(i=0,u=0,c=a,s=l):r===yN?(c=Math.max(0,a-i-d),s=Math.max(0,l-u-h)):r===ane?(c=Math.max(0,a-i-d),l=s+u+h):r===one?(a=c+i+d,s=Math.max(0,l-u-h)):r===sne&&(a=c+i+d,l=s+u+h),t._resizeView(a,l,c,s,[i,u],f.resize)}var Pne=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",bound:xN,identifier:XM,mark:bN,overlap:_N,render:kN,viewlayout:AN});function MN(t){_r.call(this,null,t)}ni(MN,_r,{transform(t,n){if(this.value&&!t.modified())return n.StopPropagation;var e=n.dataflow.locale(),o=n.fork(n.NO_SOURCE|n.NO_FIELDS),f=this.value,r=t.scale,a=t.count==null?t.values?t.values.length:10:t.count,l=cM(r,a,t.minstep),c=t.format||lF(e,r,l,t.formatSpecifier,t.formatType,!!t.values),i=t.values?sF(r,t.values,l):fM(r,l);return f&&(o.rem=f),f=i.map((s,u)=>ro({index:u/(i.length-1||1),value:s,label:c(s)})),t.extra&&f.length&&f.push(ro({index:-1,extra:{value:f[0].value},label:""})),o.source=f,o.add=f,this.value=f,o}});function SN(t){_r.call(this,null,t)}function Dne(){return ro({})}function Ine(t){const n=qm().test(e=>e.exit);return n.lookup=e=>n.get(t(e)),n}ni(SN,_r,{transform(t,n){var e=n.dataflow,o=n.fork(n.NO_SOURCE|n.NO_FIELDS),f=t.item||Dne,r=t.key||$i,a=this.value;return Ir(o.encode)&&(o.encode=null),a&&(t.modified("key")||n.modified(r))&&Pr("DataJoin does not support modified key function or fields."),a||(n=n.addAll(),this.value=a=Ine(r)),n.visit(n.ADD,l=>{const c=r(l);let i=a.get(c);i?i.exit?(a.empty--,o.add.push(i)):o.mod.push(i):(i=f(l),a.set(c,i),o.add.push(i)),i.datum=l,i.exit=!1}),n.visit(n.MOD,l=>{const c=r(l),i=a.get(c);i&&(i.datum=l,o.mod.push(i))}),n.visit(n.REM,l=>{const c=r(l),i=a.get(c);l===i.datum&&!i.exit&&(o.rem.push(i),i.exit=!0,++a.empty)}),n.changed(n.ADD_MOD)&&o.modifies("datum"),(n.clean()||t.clean&&a.empty>e.cleanThreshold)&&e.runAfter(a.clean),o}});function EN(t){_r.call(this,null,t)}ni(EN,_r,{transform(t,n){var e=n.fork(n.ADD_REM),o=t.mod||!1,f=t.encoders,r=n.encode;if(Ir(r))if(e.changed()||r.every(u=>f[u]))r=r[0],e.encode=null;else return n.StopPropagation;var a=r==="enter",l=f.update||md,c=f.enter||md,i=f.exit||md,s=(r&&!a?f[r]:l)||md;if(n.changed(n.ADD)&&(n.visit(n.ADD,u=>{c(u,t),l(u,t)}),e.modifies(c.output),e.modifies(l.output),s!==md&&s!==l&&(n.visit(n.ADD,u=>{s(u,t)}),e.modifies(s.output))),n.changed(n.REM)&&i!==md&&(n.visit(n.REM,u=>{i(u,t)}),e.modifies(i.output)),a||s!==md){const u=n.MOD|(t.modified()?n.REFLOW:0);a?(n.visit(u,d=>{const h=c(d,t)||o;(s(d,t)||h)&&e.mod.push(d)}),e.mod.length&&e.modifies(c.output)):n.visit(u,d=>{(s(d,t)||o)&&e.mod.push(d)}),e.mod.length&&e.modifies(s.output)}return e.changed()?e:n.StopPropagation}});function CN(t){_r.call(this,[],t)}ni(CN,_r,{transform(t,n){if(this.value!=null&&!t.modified())return n.StopPropagation;var e=n.dataflow.locale(),o=n.fork(n.NO_SOURCE|n.NO_FIELDS),f=this.value,r=t.type||qb,a=t.scale,l=+t.limit,c=cM(a,t.count==null?5:t.count,t.minstep),i=!!t.values||r===qb,s=t.format||hF(e,a,c,r,t.formatSpecifier,t.formatType,i),u=t.values||fF(a,c),d,h,m,g,p;return f&&(o.rem=f),r===qb?(l&&u.length>l?(n.dataflow.warn("Symbol legend count exceeds limit, filtering items."),f=u.slice(0,l-1),p=!0):f=u,ga(m=t.size)?(!t.values&&a(f[0])===0&&(f=f.slice(1)),g=f.reduce((v,y)=>Math.max(v,m(y,t)),0)):m=$l(g=m||8),f=f.map((v,y)=>ro({index:y,label:s(v,y,f),value:v,offset:g,size:m(v,t)})),p&&(p=u[f.length],f.push(ro({index:f.length,label:"\u2026".concat(u.length-f.length," entries"),value:p,offset:g,size:m(p,t)})))):r===oQ?(d=a.domain(),h=iF(a,d[0],Na(d)),u.length<3&&!t.values&&d[0]!==Na(d)&&(u=[d[0],Na(d)]),f=u.map((v,y)=>ro({index:y,label:s(v,y,u),value:v,perc:h(v)}))):(m=u.length-1,h=vQ(a),f=u.map((v,y)=>ro({index:y,label:s(v,y,u),value:v,perc:y?h(v):0,perc2:y===m?1:h(u[y+1])}))),o.source=f,o.add=f,this.value=f,o}});const zne=t=>t.source.x,Rne=t=>t.source.y,Fne=t=>t.target.x,Nne=t=>t.target.y;function ZM(t){_r.call(this,{},t)}ZM.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]};ni(ZM,_r,{transform(t,n){var e=t.sourceX||zne,o=t.sourceY||Rne,f=t.targetX||Fne,r=t.targetY||Nne,a=t.as||"path",l=t.orient||"vertical",c=t.shape||"line",i=tO.get(c+"-"+l)||tO.get(c);return i||Pr("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),n.visit(n.SOURCE,s=>{s[a]=i(e(s),o(s),f(s),r(s))}),n.reflow(t.modified()).modifies(a)}});const ON=(t,n,e,o)=>"M"+t+","+n+"L"+e+","+o,Bne=(t,n,e,o)=>ON(n*Math.cos(t),n*Math.sin(t),o*Math.cos(e),o*Math.sin(e)),LN=(t,n,e,o)=>{var f=e-t,r=o-n,a=Math.sqrt(f*f+r*r)/2,l=180*Math.atan2(r,f)/Math.PI;return"M"+t+","+n+"A"+a+","+a+" "+l+" 0 1 "+e+","+o},jne=(t,n,e,o)=>LN(n*Math.cos(t),n*Math.sin(t),o*Math.cos(e),o*Math.sin(e)),PN=(t,n,e,o)=>{const f=e-t,r=o-n,a=.2*(f+r),l=.2*(r-f);return"M"+t+","+n+"C"+(t+a)+","+(n+l)+" "+(e+l)+","+(o-a)+" "+e+","+o},Une=(t,n,e,o)=>PN(n*Math.cos(t),n*Math.sin(t),o*Math.cos(e),o*Math.sin(e)),Vne=(t,n,e,o)=>"M"+t+","+n+"V"+o+"H"+e,qne=(t,n,e,o)=>"M"+t+","+n+"H"+e+"V"+o,Hne=(t,n,e,o)=>{const f=Math.cos(t),r=Math.sin(t),a=Math.cos(e),l=Math.sin(e),c=Math.abs(e-t)>Math.PI?e<=t:e>t;return"M"+n*f+","+n*r+"A"+n+","+n+" 0 0,"+(c?1:0)+" "+n*a+","+n*l+"L"+o*a+","+o*l},$ne=(t,n,e,o)=>{const f=(t+e)/2;return"M"+t+","+n+"C"+f+","+n+" "+f+","+o+" "+e+","+o},Gne=(t,n,e,o)=>{const f=(n+o)/2;return"M"+t+","+n+"C"+t+","+f+" "+e+","+f+" "+e+","+o},Wne=(t,n,e,o)=>{const f=Math.cos(t),r=Math.sin(t),a=Math.cos(e),l=Math.sin(e),c=(n+o)/2;return"M"+n*f+","+n*r+"C"+c*f+","+c*r+" "+c*a+","+c*l+" "+o*a+","+o*l},tO=qm({line:ON,"line-radial":Bne,arc:LN,"arc-radial":jne,curve:PN,"curve-radial":Une,"orthogonal-horizontal":Vne,"orthogonal-vertical":qne,"orthogonal-radial":Hne,"diagonal-horizontal":$ne,"diagonal-vertical":Gne,"diagonal-radial":Wne});function JM(t){_r.call(this,null,t)}JM.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]};ni(JM,_r,{transform(t,n){var e=t.as||["startAngle","endAngle"],o=e[0],f=e[1],r=t.field||jm,a=t.startAngle||0,l=t.endAngle!=null?t.endAngle:2*Math.PI,c=n.source,i=c.map(r),s=i.length,u=a,d=(l-a)/SI(i),h=Ju(s),m,g,p;for(t.sort&&h.sort((v,y)=>i[v]-i[y]),m=0;m-1)return o;var f=n.domain,r=t.type,a=n.zero||n.zero===void 0&&Xne(t),l,c;if(!f)return 0;if(DN(r)&&n.padding&&f[0]!==Na(f)&&(f=tre(r,f,n.range,n.padding,n.exponent,n.constant)),(a||n.domainMin!=null||n.domainMax!=null||n.domainMid!=null)&&(l=(f=f.slice()).length-1||1,a&&(f[0]>0&&(f[0]=0),f[l]<0&&(f[l]=0)),n.domainMin!=null&&(f[0]=n.domainMin),n.domainMax!=null&&(f[l]=n.domainMax),n.domainMid!=null)){c=n.domainMid;const i=c>f[l]?l+1:cf+(r<0?-1:r>0?1:0),0));o!==n.length&&e.warn("Log scale domain includes zero: "+oi(n))}return n}function nre(t,n,e){let o=n.bins;if(o&&!Ir(o)){const f=t.domain(),r=f[0],a=Na(f),l=o.step;let c=o.start==null?r:o.start,i=o.stop==null?a:o.stop;l||Pr("Scale bins parameter missing step property."),ca&&(i=l*Math.floor(a/l)),o=Ju(c,i+l/2,l)}return o?t.bins=o:t.bins&&delete t.bins,t.type===iM&&(o?!n.domain&&!n.domainRaw&&(t.domain(o),e=o.length):t.bins=t.domain()),e}function rre(t,n,e){var o=t.type,f=n.round||!1,r=n.range;if(n.rangeStep!=null)r=ire(o,n,e);else if(n.scheme&&(r=are(o,n,e),ga(r))){if(t.interpolator)return t.interpolator(r);Pr("Scale type ".concat(o," does not support interpolating color schemes."))}if(r&&eF(o))return t.interpolator(bw(Uk(r,n.reverse),n.interpolate,n.interpolateGamma));r&&n.interpolate&&t.interpolate?t.interpolate(lM(n.interpolate,n.interpolateGamma)):ga(t.round)?t.round(f):ga(t.rangeRound)&&t.interpolate(f?G2:Ty),r&&t.range(Uk(r,n.reverse))}function ire(t,n,e){t!==XR&&t!==Mk&&Pr("Only band and point scales support rangeStep.");var o=(n.paddingOuter!=null?n.paddingOuter:n.padding)||0,f=t===Mk?1:(n.paddingInner!=null?n.paddingInner:n.padding)||0;return[0,n.rangeStep*nM(e,f,o)]}function are(t,n,e){var o=n.schemeExtent,f,r;return Ir(n.scheme)?r=bw(n.scheme,n.interpolate,n.interpolateGamma):(f=n.scheme.toLowerCase(),r=uM(f),r||Pr("Unrecognized scheme name: ".concat(n.scheme))),e=t===xw?e+1:t===iM?e-1:t===hm||t===yw?+n.schemeCount||Yne:e,eF(t)?nO(r,o,n.reverse):ga(r)?rF(nO(r,o),e):t===rM?r:r.slice(0,e)}function nO(t,n,e){return ga(t)&&(n||e)?nF(t,Uk(n||[0,1],e)):t}function Uk(t,n){return n?t.slice().reverse():t}function RN(t){_r.call(this,null,t)}ni(RN,_r,{transform(t,n){const e=t.modified("sort")||n.changed(n.ADD)||n.modified(t.sort.fields)||n.modified("datum");return e&&n.source.sort(q0(t.sort)),this.modified(e),n}});const rO="zero",FN="center",NN="normalize",BN=["y0","y1"];function KM(t){_r.call(this,null,t)}KM.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:rO,values:[rO,FN,NN]},{name:"as",type:"string",array:!0,length:2,default:BN}]};ni(KM,_r,{transform(t,n){var e=t.as||BN,o=e[0],f=e[1],r=q0(t.sort),a=t.field||jm,l=t.offset===FN?ore:t.offset===NN?sre:lre,c,i,s,u;for(c=ure(n.source,t.groupby,r,a),i=0,s=c.length,u=c.max;ig(s),a,l,c,i,s,u,d,h,m;if(n==null)f.push(t.slice());else for(a={},l=0,c=t.length;lm&&(m=h),e&&d.sort(e)}return f.max=m,f}var cre=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",axisticks:MN,datajoin:SN,encode:EN,legendentries:CN,linkpath:ZM,pie:JM,scale:IN,sortitems:RN,stack:KM}),Xi=1e-6,j_=1e-12,Sa=Math.PI,ys=Sa/2,U_=Sa/4,hu=Sa*2,Os=180/Sa,Ea=Sa/180,Va=Math.abs,Xm=Math.atan,xc=Math.atan2,Zi=Math.cos,cb=Math.ceil,jN=Math.exp,Vk=Math.hypot,V_=Math.log,J5=Math.pow,Gi=Math.sin,fc=Math.sign||function(t){return t>0?1:t<0?-1:0},du=Math.sqrt,QM=Math.tan;function UN(t){return t>1?0:t<-1?Sa:Math.acos(t)}function Iu(t){return t>1?ys:t<-1?-ys:Math.asin(t)}function bl(){}function q_(t,n){t&&aO.hasOwnProperty(t.type)&&aO[t.type](t,n)}var iO={Feature:function(t,n){q_(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,o=-1,f=e.length;++o=0?1:-1,f=o*e,r=Zi(n),a=Gi(n),l=Gk*a,c=$k*r+l*Zi(f),i=l*o*Gi(f);H_.add(xc(i,c)),Hk=t,$k=r,Gk=a}function pre(t){return $_=new cu,Ih(t,Kf),$_*2}function G_(t){return[xc(t[1],t[0]),Iu(t[2])]}function k0(t){var n=t[0],e=t[1],o=Zi(e);return[o*Zi(n),o*Gi(n),Gi(e)]}function fb(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function xm(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function K5(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function hb(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function W_(t){var n=du(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var us,wu,ms,Yu,Kp,$N,GN,em,Lv,_d,Gh,Lh={point:Wk,lineStart:sO,lineEnd:lO,polygonStart:function(){Lh.point=YN,Lh.lineStart=gre,Lh.lineEnd=mre,Lv=new cu,Kf.polygonStart()},polygonEnd:function(){Kf.polygonEnd(),Lh.point=Wk,Lh.lineStart=sO,Lh.lineEnd=lO,H_<0?(us=-(ms=180),wu=-(Yu=90)):Lv>Xi?Yu=90:Lv<-Xi&&(wu=-90),Gh[0]=us,Gh[1]=ms},sphere:function(){us=-(ms=180),wu=-(Yu=90)}};function Wk(t,n){_d.push(Gh=[us=t,ms=t]),nYu&&(Yu=n)}function WN(t,n){var e=k0([t*Ea,n*Ea]);if(em){var o=xm(em,e),f=[o[1],-o[0],0],r=xm(f,o);W_(r),r=G_(r);var a=t-Kp,l=a>0?1:-1,c=r[0]*Os*l,i,s=Va(a)>180;s^(l*KpYu&&(Yu=i)):(c=(c+360)%360-180,s^(l*KpYu&&(Yu=n))),s?tWu(us,ms)&&(ms=t):Wu(t,ms)>Wu(us,ms)&&(us=t):ms>=us?(tms&&(ms=t)):t>Kp?Wu(us,t)>Wu(us,ms)&&(ms=t):Wu(t,ms)>Wu(us,ms)&&(us=t)}else _d.push(Gh=[us=t,ms=t]);nYu&&(Yu=n),em=e,Kp=t}function sO(){Lh.point=WN}function lO(){Gh[0]=us,Gh[1]=ms,Lh.point=Wk,em=null}function YN(t,n){if(em){var e=t-Kp;Lv.add(Va(e)>180?e+(e>0?360:-360):e)}else $N=t,GN=n;Kf.point(t,n),WN(t,n)}function gre(){Kf.lineStart()}function mre(){YN($N,GN),Kf.lineEnd(),Va(Lv)>Xi&&(us=-(ms=180)),Gh[0]=us,Gh[1]=ms,em=null}function Wu(t,n){return(n-=t)<0?n+360:n}function vre(t,n){return t[0]-n[0]}function uO(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nWu(o[0],o[1])&&(o[1]=f[1]),Wu(f[0],o[1])>Wu(o[0],o[1])&&(o[0]=f[0])):r.push(o=f);for(a=-1/0,e=r.length-1,n=0,o=r[e];n<=e;o=f,++n)f=r[n],(l=Wu(o[1],f[0]))>a&&(a=l,us=f[0],ms=o[1])}return _d=Gh=null,us===1/0||wu===1/0?[[NaN,NaN],[NaN,NaN]]:[[us,wu],[ms,Yu]]}var dv,Y_,X_,Z_,J_,K_,Q_,e2,Yk,Xk,Zk,XN,ZN,au,ou,su,tf={sphere:bl,point:eS,lineStart:cO,lineEnd:fO,polygonStart:function(){tf.lineStart=_re,tf.lineEnd=wre},polygonEnd:function(){tf.lineStart=cO,tf.lineEnd=fO}};function eS(t,n){t*=Ea,n*=Ea;var e=Zi(n);Hy(e*Zi(t),e*Gi(t),Gi(n))}function Hy(t,n,e){++dv,X_+=(t-X_)/dv,Z_+=(n-Z_)/dv,J_+=(e-J_)/dv}function cO(){tf.point=xre}function xre(t,n){t*=Ea,n*=Ea;var e=Zi(n);au=e*Zi(t),ou=e*Gi(t),su=Gi(n),tf.point=bre,Hy(au,ou,su)}function bre(t,n){t*=Ea,n*=Ea;var e=Zi(n),o=e*Zi(t),f=e*Gi(t),r=Gi(n),a=xc(du((a=ou*r-su*f)*a+(a=su*o-au*r)*a+(a=au*f-ou*o)*a),au*o+ou*f+su*r);Y_+=a,K_+=a*(au+(au=o)),Q_+=a*(ou+(ou=f)),e2+=a*(su+(su=r)),Hy(au,ou,su)}function fO(){tf.point=eS}function _re(){tf.point=kre}function wre(){JN(XN,ZN),tf.point=eS}function kre(t,n){XN=t,ZN=n,t*=Ea,n*=Ea,tf.point=JN;var e=Zi(n);au=e*Zi(t),ou=e*Gi(t),su=Gi(n),Hy(au,ou,su)}function JN(t,n){t*=Ea,n*=Ea;var e=Zi(n),o=e*Zi(t),f=e*Gi(t),r=Gi(n),a=ou*r-su*f,l=su*o-au*r,c=au*f-ou*o,i=Vk(a,l,c),s=Iu(i),u=i&&-s/i;Yk.add(u*a),Xk.add(u*l),Zk.add(u*c),Y_+=s,K_+=s*(au+(au=o)),Q_+=s*(ou+(ou=f)),e2+=s*(su+(su=r)),Hy(au,ou,su)}function Tre(t){dv=Y_=X_=Z_=J_=K_=Q_=e2=0,Yk=new cu,Xk=new cu,Zk=new cu,Ih(t,tf);var n=+Yk,e=+Xk,o=+Zk,f=Vk(n,e,o);return fSa?t+Math.round(-t/hu)*hu:t,n]}Kk.invert=Kk;function KN(t,n,e){return(t%=hu)?n||e?Jk(dO(t),pO(n,e)):dO(t):n||e?pO(n,e):Kk}function hO(t){return function(n,e){return n+=t,[n>Sa?n-hu:n<-Sa?n+hu:n,e]}}function dO(t){var n=hO(t);return n.invert=hO(-t),n}function pO(t,n){var e=Zi(t),o=Gi(t),f=Zi(n),r=Gi(n);function a(l,c){var i=Zi(c),s=Zi(l)*i,u=Gi(l)*i,d=Gi(c),h=d*e+s*o;return[xc(u*f-h*r,s*e-d*o),Iu(h*f+u*r)]}return a.invert=function(l,c){var i=Zi(c),s=Zi(l)*i,u=Gi(l)*i,d=Gi(c),h=d*f-u*r;return[xc(u*f+d*r,s*e+h*o),Iu(h*e-s*o)]},a}function Are(t){t=KN(t[0]*Ea,t[1]*Ea,t.length>2?t[2]*Ea:0);function n(e){return e=t(e[0]*Ea,e[1]*Ea),e[0]*=Os,e[1]*=Os,e}return n.invert=function(e){return e=t.invert(e[0]*Ea,e[1]*Ea),e[0]*=Os,e[1]*=Os,e},n}function Mre(t,n,e,o,f,r){if(!!e){var a=Zi(n),l=Gi(n),c=o*e;f==null?(f=n+o*hu,r=n-c/2):(f=gO(a,f),r=gO(a,r),(o>0?fr)&&(f+=o*hu));for(var i,s=f;o>0?s>r:s1&&t.push(t.pop().concat(t.shift()))},result:function(){var e=t;return t=[],n=null,e}}}function Jb(t,n){return Va(t[0]-n[0])=0;--l)f.point((u=s[l])[0],u[1]);else o(d.x,d.p.x,-1,f);d=d.p}d=d.o,s=d.z,h=!h}while(!d.v);f.lineEnd()}}}function mO(t){if(!!(n=t.length)){for(var n,e=0,o=t[0],f;++e=0?1:-1,A=S*_,M=A>Sa,E=p*b;if(c.add(xc(E*S*Gi(A),v*T+E*Zi(A))),a+=M?_+S*hu:_,M^m>=e^w>=e){var D=xm(k0(h),k0(x));W_(D);var O=xm(r,D);W_(O);var R=(M^_>=0?-1:1)*Iu(O[2]);(o>R||o===R&&(D[0]||D[1]))&&(l+=M^_>=0?1:-1)}}return(a<-Xi||a0){for(c||(f.polygonStart(),c=!0),f.lineStart(),b=0;b<_;++b)f.point((A=S[b])[0],A[1]);f.lineEnd()}return}T>1&&w&2&&k.push(k.pop().concat(k.shift())),s.push(k.filter(Ere))}}return d}}function Ere(t){return t.length>1}function Cre(t,n){return((t=t.x)[0]<0?t[1]-ys-Xi:ys-t[1])-((n=n.x)[0]<0?n[1]-ys-Xi:ys-n[1])}var vO=tB(function(){return!0},Ore,Pre,[-Sa,-ys]);function Ore(t){var n=NaN,e=NaN,o=NaN,f;return{lineStart:function(){t.lineStart(),f=1},point:function(r,a){var l=r>0?Sa:-Sa,c=Va(r-n);Va(c-Sa)0?ys:-ys),t.point(o,e),t.lineEnd(),t.lineStart(),t.point(l,e),t.point(r,e),f=0):o!==l&&c>=Sa&&(Va(n-o)Xi?Xm((Gi(n)*(r=Zi(o))*Gi(e)-Gi(o)*(f=Zi(n))*Gi(t))/(f*r*a)):(n+o)/2}function Pre(t,n,e,o){var f;if(t==null)f=e*ys,o.point(-Sa,f),o.point(0,f),o.point(Sa,f),o.point(Sa,0),o.point(Sa,-f),o.point(0,-f),o.point(-Sa,-f),o.point(-Sa,0),o.point(-Sa,f);else if(Va(t[0]-n[0])>Xi){var r=t[0]0,f=Va(n)>Xi;function r(s,u,d,h){Mre(h,t,e,d,s,u)}function a(s,u){return Zi(s)*Zi(u)>n}function l(s){var u,d,h,m,g;return{lineStart:function(){m=h=!1,g=1},point:function(p,v){var y=[p,v],x,w=a(p,v),k=o?w?0:i(p,v):w?i(p+(p<0?Sa:-Sa),v):0;if(!u&&(m=h=w)&&s.lineStart(),w!==h&&(x=c(u,y),(!x||Jb(u,x)||Jb(y,x))&&(y[2]=1)),w!==h)g=0,w?(s.lineStart(),x=c(y,u),s.point(x[0],x[1])):(x=c(u,y),s.point(x[0],x[1],2),s.lineEnd()),u=x;else if(f&&u&&o^w){var b;!(k&d)&&(b=c(y,u,!0))&&(g=0,o?(s.lineStart(),s.point(b[0][0],b[0][1]),s.point(b[1][0],b[1][1]),s.lineEnd()):(s.point(b[1][0],b[1][1]),s.lineEnd(),s.lineStart(),s.point(b[0][0],b[0][1],3)))}w&&(!u||!Jb(u,y))&&s.point(y[0],y[1]),u=y,h=w,d=k},lineEnd:function(){h&&s.lineEnd(),u=null},clean:function(){return g|(m&&h)<<1}}}function c(s,u,d){var h=k0(s),m=k0(u),g=[1,0,0],p=xm(h,m),v=fb(p,p),y=p[0],x=v-y*y;if(!x)return!d&&s;var w=n*v/x,k=-n*y/x,b=xm(g,p),T=hb(g,w),_=hb(p,k);K5(T,_);var S=b,A=fb(T,S),M=fb(S,S),E=A*A-M*(fb(T,T)-1);if(!(E<0)){var D=du(E),O=hb(S,(-A-D)/M);if(K5(O,T),O=G_(O),!d)return O;var R=s[0],z=u[0],L=s[1],P=u[1],N;z0^O[1]<(Va(O[0]-R)Sa^(R<=O[0]&&O[0]<=z)){var K=hb(S,(-A+D)/M);return K5(K,T),[O,G_(K)]}}}function i(s,u){var d=o?t:Sa-t,h=0;return s<-d?h|=1:s>d&&(h|=2),u<-d?h|=4:u>d&&(h|=8),h}return tB(a,l,r,o?[0,-t]:[-Sa,t-Sa])}function Ire(t,n,e,o,f,r){var a=t[0],l=t[1],c=n[0],i=n[1],s=0,u=1,d=c-a,h=i-l,m;if(m=e-a,!(!d&&m>0)){if(m/=d,d<0){if(m0){if(m>u)return;m>s&&(s=m)}if(m=f-a,!(!d&&m<0)){if(m/=d,d<0){if(m>u)return;m>s&&(s=m)}else if(d>0){if(m0)){if(m/=h,h<0){if(m0){if(m>u)return;m>s&&(s=m)}if(m=r-l,!(!h&&m<0)){if(m/=h,h<0){if(m>u)return;m>s&&(s=m)}else if(h>0){if(m0&&(t[0]=a+s*d,t[1]=l+s*h),u<1&&(n[0]=a+u*d,n[1]=l+u*h),!0}}}}}var pv=1e9,pb=-pv;function nB(t,n,e,o){function f(i,s){return t<=i&&i<=e&&n<=s&&s<=o}function r(i,s,u,d){var h=0,m=0;if(i==null||(h=a(i,u))!==(m=a(s,u))||c(i,s)<0^u>0)do d.point(h===0||h===3?t:e,h>1?o:n);while((h=(h+u+4)%4)!==m);else d.point(s[0],s[1])}function a(i,s){return Va(i[0]-t)0?0:3:Va(i[0]-e)0?2:1:Va(i[1]-n)0?1:0:s>0?3:2}function l(i,s){return c(i.x,s.x)}function c(i,s){var u=a(i,1),d=a(s,1);return u!==d?u-d:u===0?s[1]-i[1]:u===1?i[0]-s[0]:u===2?i[1]-s[1]:s[0]-i[0]}return function(i){var s=i,u=QN(),d,h,m,g,p,v,y,x,w,k,b,T={point:_,lineStart:E,lineEnd:D,polygonStart:A,polygonEnd:M};function _(R,z){f(R,z)&&s.point(R,z)}function S(){for(var R=0,z=0,L=h.length;zo&&(te-W)*(o-K)>(Y-K)*(t-W)&&++R:Y<=o&&(te-W)*(o-K)<(Y-K)*(t-W)&&--R;return R}function A(){s=u,d=[],h=[],b=!0}function M(){var R=S(),z=b&&R,L=(d=MI(d)).length;(z||L)&&(i.polygonStart(),z&&(i.lineStart(),r(null,null,1,i),i.lineEnd()),L&&eB(d,l,R,r,i),i.polygonEnd()),s=i,d=h=m=null}function E(){T.point=O,h&&h.push(m=[]),k=!0,w=!1,y=x=NaN}function D(){d&&(O(g,p),v&&w&&u.rejoin(),d.push(u.result())),T.point=_,w&&s.lineEnd()}function O(R,z){var L=f(R,z);if(h&&m.push([R,z]),k)g=R,p=z,v=L,k=!1,L&&(s.lineStart(),s.point(R,z));else if(L&&w)s.point(R,z);else{var P=[y=Math.max(pb,Math.min(pv,y)),x=Math.max(pb,Math.min(pv,x))],N=[R=Math.max(pb,Math.min(pv,R)),z=Math.max(pb,Math.min(pv,z))];Ire(P,N,t,n,e,o)?(w||(s.lineStart(),s.point(P[0],P[1])),s.point(N[0],N[1]),L||s.lineEnd(),b=!1):L&&(s.lineStart(),s.point(R,z),b=!1)}y=R,x=z,w=L}return T}}function yO(t,n,e){var o=Ju(t,n-Xi,e).concat(n);return function(f){return o.map(function(r){return[f,r]})}}function xO(t,n,e){var o=Ju(t,n-Xi,e).concat(n);return function(f){return o.map(function(r){return[r,f]})}}function zre(){var t,n,e,o,f,r,a,l,c=10,i=c,s=90,u=360,d,h,m,g,p=2.5;function v(){return{type:"MultiLineString",coordinates:y()}}function y(){return Ju(cb(o/s)*s,e,s).map(m).concat(Ju(cb(l/u)*u,a,u).map(g)).concat(Ju(cb(n/c)*c,t,c).filter(function(x){return Va(x%s)>Xi}).map(d)).concat(Ju(cb(r/i)*i,f,i).filter(function(x){return Va(x%u)>Xi}).map(h))}return v.lines=function(){return y().map(function(x){return{type:"LineString",coordinates:x}})},v.outline=function(){return{type:"Polygon",coordinates:[m(o).concat(g(a).slice(1),m(e).reverse().slice(1),g(l).reverse().slice(1))]}},v.extent=function(x){return arguments.length?v.extentMajor(x).extentMinor(x):v.extentMinor()},v.extentMajor=function(x){return arguments.length?(o=+x[0][0],e=+x[1][0],l=+x[0][1],a=+x[1][1],o>e&&(x=o,o=e,e=x),l>a&&(x=l,l=a,a=x),v.precision(p)):[[o,l],[e,a]]},v.extentMinor=function(x){return arguments.length?(n=+x[0][0],t=+x[1][0],r=+x[0][1],f=+x[1][1],n>t&&(x=n,n=t,t=x),r>f&&(x=r,r=f,f=x),v.precision(p)):[[n,r],[t,f]]},v.step=function(x){return arguments.length?v.stepMajor(x).stepMinor(x):v.stepMinor()},v.stepMajor=function(x){return arguments.length?(s=+x[0],u=+x[1],v):[s,u]},v.stepMinor=function(x){return arguments.length?(c=+x[0],i=+x[1],v):[c,i]},v.precision=function(x){return arguments.length?(p=+x,d=yO(r,f,90),h=xO(n,t,p),m=yO(l,a,90),g=xO(o,e,p),v):p},v.extentMajor([[-180,-90+Xi],[180,90-Xi]]).extentMinor([[-180,-80-Xi],[180,80+Xi]])}var ty=t=>t,e4=new cu,Qk=new cu,rB,iB,eT,tT,Ad={point:bl,lineStart:bl,lineEnd:bl,polygonStart:function(){Ad.lineStart=Rre,Ad.lineEnd=Nre},polygonEnd:function(){Ad.lineStart=Ad.lineEnd=Ad.point=bl,e4.add(Va(Qk)),Qk=new cu},result:function(){var t=e4/2;return e4=new cu,t}};function Rre(){Ad.point=Fre}function Fre(t,n){Ad.point=aB,rB=eT=t,iB=tT=n}function aB(t,n){Qk.add(tT*t-eT*n),eT=t,tT=n}function Nre(){aB(rB,iB)}var bO=Ad,bm=1/0,t2=bm,ny=-bm,n2=ny,Bre={point:jre,lineStart:bl,lineEnd:bl,polygonStart:bl,polygonEnd:bl,result:function(){var t=[[bm,t2],[ny,n2]];return ny=n2=-(t2=bm=1/0),t}};function jre(t,n){tny&&(ny=t),nn2&&(n2=n)}var r2=Bre,nT=0,rT=0,gv=0,i2=0,a2=0,Xg=0,iT=0,aT=0,mv=0,oB,sB,If,zf,Jc={point:T0,lineStart:_O,lineEnd:wO,polygonStart:function(){Jc.lineStart=qre,Jc.lineEnd=Hre},polygonEnd:function(){Jc.point=T0,Jc.lineStart=_O,Jc.lineEnd=wO},result:function(){var t=mv?[iT/mv,aT/mv]:Xg?[i2/Xg,a2/Xg]:gv?[nT/gv,rT/gv]:[NaN,NaN];return nT=rT=gv=i2=a2=Xg=iT=aT=mv=0,t}};function T0(t,n){nT+=t,rT+=n,++gv}function _O(){Jc.point=Ure}function Ure(t,n){Jc.point=Vre,T0(If=t,zf=n)}function Vre(t,n){var e=t-If,o=n-zf,f=du(e*e+o*o);i2+=f*(If+t)/2,a2+=f*(zf+n)/2,Xg+=f,T0(If=t,zf=n)}function wO(){Jc.point=T0}function qre(){Jc.point=$re}function Hre(){lB(oB,sB)}function $re(t,n){Jc.point=lB,T0(oB=If=t,sB=zf=n)}function lB(t,n){var e=t-If,o=n-zf,f=du(e*e+o*o);i2+=f*(If+t)/2,a2+=f*(zf+n)/2,Xg+=f,f=zf*t-If*n,iT+=f*(If+t),aT+=f*(zf+n),mv+=f*3,T0(If=t,zf=n)}var kO=Jc;function uB(t){this._context=t}uB.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:{this._context.moveTo(t,n),this._point=1;break}case 1:{this._context.lineTo(t,n);break}default:{this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,hu);break}}},result:bl};var oT=new cu,t4,cB,fB,vv,yv,o2={point:bl,lineStart:function(){o2.point=Gre},lineEnd:function(){t4&&hB(cB,fB),o2.point=bl},polygonStart:function(){t4=!0},polygonEnd:function(){t4=null},result:function(){var t=+oT;return oT=new cu,t}};function Gre(t,n){o2.point=hB,cB=vv=t,fB=yv=n}function hB(t,n){vv-=t,yv-=n,oT.add(du(vv*vv+yv*yv)),vv=t,yv=n}var TO=o2;function dB(){this._string=[]}dB.prototype={_radius:4.5,_circle:AO(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:{this._string.push("M",t,",",n),this._point=1;break}case 1:{this._string.push("L",t,",",n);break}default:{this._circle==null&&(this._circle=AO(this._radius)),this._string.push("M",t,",",n,this._circle);break}}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}else return null}};function AO(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function pB(t,n){var e=4.5,o,f;function r(a){return a&&(typeof e=="function"&&f.pointRadius(+e.apply(this,arguments)),Ih(a,o(f))),f.result()}return r.area=function(a){return Ih(a,o(bO)),bO.result()},r.measure=function(a){return Ih(a,o(TO)),TO.result()},r.bounds=function(a){return Ih(a,o(r2)),r2.result()},r.centroid=function(a){return Ih(a,o(kO)),kO.result()},r.projection=function(a){return arguments.length?(o=a==null?(t=null,ty):(t=a).stream,r):t},r.context=function(a){return arguments.length?(f=a==null?(n=null,new dB):new uB(n=a),typeof e!="function"&&f.pointRadius(e),r):n},r.pointRadius=function(a){return arguments.length?(e=typeof a=="function"?a:(f.pointRadius(+a),+a),r):e},r.projection(t).context(n)}function Dw(t){return function(n){var e=new sT;for(var o in t)e[o]=t[o];return e.stream=n,e}}function sT(){}sT.prototype={constructor:sT,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function tS(t,n,e){var o=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),o!=null&&t.clipExtent(null),Ih(e,t.stream(r2)),n(r2.result()),o!=null&&t.clipExtent(o),t}function Iw(t,n,e){return tS(t,function(o){var f=n[1][0]-n[0][0],r=n[1][1]-n[0][1],a=Math.min(f/(o[1][0]-o[0][0]),r/(o[1][1]-o[0][1])),l=+n[0][0]+(f-a*(o[1][0]+o[0][0]))/2,c=+n[0][1]+(r-a*(o[1][1]+o[0][1]))/2;t.scale(150*a).translate([l,c])},e)}function nS(t,n,e){return Iw(t,[[0,0],n],e)}function rS(t,n,e){return tS(t,function(o){var f=+n,r=f/(o[1][0]-o[0][0]),a=(f-r*(o[1][0]+o[0][0]))/2,l=-r*o[0][1];t.scale(150*r).translate([a,l])},e)}function iS(t,n,e){return tS(t,function(o){var f=+n,r=f/(o[1][1]-o[0][1]),a=-r*o[0][0],l=(f-r*(o[1][1]+o[0][1]))/2;t.scale(150*r).translate([a,l])},e)}var MO=16,Wre=Zi(30*Ea);function SO(t,n){return+n?Xre(t,n):Yre(t)}function Yre(t){return Dw({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}function Xre(t,n){function e(o,f,r,a,l,c,i,s,u,d,h,m,g,p){var v=i-o,y=s-f,x=v*v+y*y;if(x>4*n&&g--){var w=a+d,k=l+h,b=c+m,T=du(w*w+k*k+b*b),_=Iu(b/=T),S=Va(Va(b)-1)n||Va((v*D+y*O)/x-.5)>.3||a*d+l*h+c*m2?R[2]%360*Ea:0,D()):[l*Os,c*Os,i*Os]},M.angle=function(R){return arguments.length?(u=R%360*Ea,D()):u*Os},M.reflectX=function(R){return arguments.length?(d=R?-1:1,D()):d<0},M.reflectY=function(R){return arguments.length?(h=R?-1:1,D()):h<0},M.precision=function(R){return arguments.length?(b=SO(T,k=R*R),O()):du(k)},M.fitExtent=function(R,z){return Iw(M,R,z)},M.fitSize=function(R,z){return nS(M,R,z)},M.fitWidth=function(R,z){return rS(M,R,z)},M.fitHeight=function(R,z){return iS(M,R,z)};function D(){var R=EO(e,0,0,d,h,u).apply(null,n(r,a)),z=EO(e,o-R[0],f-R[1],d,h,u);return s=KN(l,c,i),T=Jk(n,z),_=Jk(s,T),b=SO(T,k),O()}function O(){return S=A=null,M}return function(){return n=t.apply(this,arguments),M.invert=n.invert&&E,D()}}function aS(t){var n=0,e=Sa/3,o=gB(t),f=o(n,e);return f.parallels=function(r){return arguments.length?o(n=r[0]*Ea,e=r[1]*Ea):[n*Os,e*Os]},f}function Qre(t){var n=Zi(t);function e(o,f){return[o*n,Gi(f)/n]}return e.invert=function(o,f){return[o/n,Iu(f*n)]},e}function eie(t,n){var e=Gi(t),o=(e+Gi(n))/2;if(Va(o)=.12&&p<.234&&g>=-.425&&g<-.214?f:p>=.166&&p<.234&&g>=-.214&&g<-.115?a:e).invert(d)},s.stream=function(d){return t&&n===d?t:t=tie([e.stream(n=d),f.stream(d),a.stream(d)])},s.precision=function(d){return arguments.length?(e.precision(d),f.precision(d),a.precision(d),u()):e.precision()},s.scale=function(d){return arguments.length?(e.scale(d),f.scale(d*.35),a.scale(d),s.translate(e.translate())):e.scale()},s.translate=function(d){if(!arguments.length)return e.translate();var h=e.scale(),m=+d[0],g=+d[1];return o=e.translate(d).clipExtent([[m-.455*h,g-.238*h],[m+.455*h,g+.238*h]]).stream(i),r=f.translate([m-.307*h,g+.201*h]).clipExtent([[m-.425*h+Xi,g+.12*h+Xi],[m-.214*h-Xi,g+.234*h-Xi]]).stream(i),l=a.translate([m-.205*h,g+.212*h]).clipExtent([[m-.214*h+Xi,g+.166*h+Xi],[m-.115*h-Xi,g+.234*h-Xi]]).stream(i),u()},s.fitExtent=function(d,h){return Iw(s,d,h)},s.fitSize=function(d,h){return nS(s,d,h)},s.fitWidth=function(d,h){return rS(s,d,h)},s.fitHeight=function(d,h){return iS(s,d,h)};function u(){return t=n=null,s}return s.scale(1070)}function vB(t){return function(n,e){var o=Zi(n),f=Zi(e),r=t(o*f);return r===1/0?[2,0]:[r*f*Gi(n),r*Gi(e)]}}function $y(t){return function(n,e){var o=du(n*n+e*e),f=t(o),r=Gi(f),a=Zi(f);return[xc(n*r,o*a),Iu(o&&e*r/o)]}}var yB=vB(function(t){return du(2/(1+t))});yB.invert=$y(function(t){return 2*Iu(t/2)});function rie(){return sh(yB).scale(124.75).clipAngle(180-.001)}var xB=vB(function(t){return(t=UN(t))&&t/Gi(t)});xB.invert=$y(function(t){return t});function iie(){return sh(xB).scale(79.4188).clipAngle(180-.001)}function zw(t,n){return[t,V_(QM((ys+n)/2))]}zw.invert=function(t,n){return[t,2*Xm(jN(n))-ys]};function aie(){return bB(zw).scale(961/hu)}function bB(t){var n=sh(t),e=n.center,o=n.scale,f=n.translate,r=n.clipExtent,a=null,l,c,i;n.scale=function(u){return arguments.length?(o(u),s()):o()},n.translate=function(u){return arguments.length?(f(u),s()):f()},n.center=function(u){return arguments.length?(e(u),s()):e()},n.clipExtent=function(u){return arguments.length?(u==null?a=l=c=i=null:(a=+u[0][0],l=+u[0][1],c=+u[1][0],i=+u[1][1]),s()):a==null?null:[[a,l],[c,i]]};function s(){var u=Sa*o(),d=n(Are(n.rotate()).invert([0,0]));return r(a==null?[[d[0]-u,d[1]-u],[d[0]+u,d[1]+u]]:t===zw?[[Math.max(d[0]-u,a),l],[Math.min(d[0]+u,c),i]]:[[a,Math.max(d[1]-u,l)],[c,Math.min(d[1]+u,i)]])}return s()}function gb(t){return QM((ys+t)/2)}function oie(t,n){var e=Zi(t),o=t===n?Gi(t):V_(e/Zi(n))/V_(gb(n)/gb(t)),f=e*J5(gb(t),o)/o;if(!o)return zw;function r(a,l){f>0?l<-ys+Xi&&(l=-ys+Xi):l>ys-Xi&&(l=ys-Xi);var c=f/J5(gb(l),o);return[c*Gi(o*a),f-c*Zi(o*a)]}return r.invert=function(a,l){var c=f-l,i=fc(o)*du(a*a+c*c),s=xc(a,Va(c))*fc(c);return c*o<0&&(s-=Sa*fc(a)*fc(c)),[s/o,2*Xm(J5(f/i,1/o))-ys]},r}function sie(){return aS(oie).scale(109.5).parallels([30,30])}function l2(t,n){return[t,n]}l2.invert=l2;function lie(){return sh(l2).scale(152.63)}function uie(t,n){var e=Zi(t),o=t===n?Gi(t):(e-Zi(n))/(n-t),f=e/o+t;if(Va(o)Xi&&--o>0);return[t/(.8707+(r=e*e)*(-.131979+r*(-.013791+r*r*r*(.003971-.001529*r)))),e]};function gie(){return sh(kB).scale(175.295)}function TB(t,n){return[Zi(n)*Gi(t),Gi(n)]}TB.invert=$y(Iu);function mie(){return sh(TB).scale(249.5).clipAngle(90+Xi)}function AB(t,n){var e=Zi(n),o=1+Zi(t)*e;return[e*Gi(t)/o,Gi(n)/o]}AB.invert=$y(function(t){return 2*Xm(t)});function vie(){return sh(AB).scale(250).clipAngle(142)}function MB(t,n){return[V_(QM((ys+n)/2)),-t]}MB.invert=function(t,n){return[-n,2*Xm(jN(t))-ys]};function yie(){var t=bB(MB),n=t.center,e=t.rotate;return t.center=function(o){return arguments.length?n([-o[1],o[0]]):(o=n(),[o[1],-o[0]])},t.rotate=function(o){return arguments.length?e([o[0],o[1],o.length>2?o[2]+90:90]):(o=e(),[o[0],o[1],o[2]-90])},e([0,0,90]).scale(159.155)}var xie=Math.abs,lT=Math.cos,c2=Math.sin,bie=1e-6,SB=Math.PI,uT=SB/2,CO=_ie(2);function OO(t){return t>1?uT:t<-1?-uT:Math.asin(t)}function _ie(t){return t>0?Math.sqrt(t):0}function wie(t,n){var e=t*c2(n),o=30,f;do n-=f=(n+c2(n)-e)/(1+lT(n));while(xie(f)>bie&&--o>0);return n/2}function kie(t,n,e){function o(f,r){return[t*f*lT(r=wie(e,r)),n*c2(r)]}return o.invert=function(f,r){return r=OO(r/n),[f/(t*lT(r)),OO((2*r+c2(2*r))/e)]},o}var Tie=kie(CO/uT,CO,SB);function Aie(){return sh(Tie).scale(169.529)}const Mie=pB(),cT=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function Sie(t,n){return function e(){const o=n();return o.type=t,o.path=pB().projection(o),o.copy=o.copy||function(){const f=e();return cT.forEach(r=>{o[r]&&f[r](o[r]())}),f.path.pointRadius(o.path.pointRadius()),f},o}}function oS(t,n){if(!t||typeof t!="string")throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(f2[t]=Sie(t,n),this):f2[t]||null}function EB(t){return t&&t.path||Mie}const f2={albers:mB,albersusa:nie,azimuthalequalarea:rie,azimuthalequidistant:iie,conicconformal:sie,conicequalarea:s2,conicequidistant:cie,equalEarth:hie,equirectangular:lie,gnomonic:die,identity:pie,mercator:aie,mollweide:Aie,naturalEarth1:gie,orthographic:mie,stereographic:vie,transversemercator:yie};for(const t in f2)oS(t,f2[t]);function Eie(){}const Ah=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function CB(){var t=1,n=1,e=l;function o(c,i){return i.map(s=>f(c,s))}function f(c,i){var s=[],u=[];return r(c,i,d=>{e(d,c,i),Cie(d)>0?s.push([d]):u.push(d)}),u.forEach(d=>{for(var h=0,m=s.length,g;h=i,Ah[p<<1].forEach(x);++h=i,Ah[g|p<<1].forEach(x);for(Ah[p<<0].forEach(x);++m=i,v=c[m*t]>=i,Ah[p<<1|v<<2].forEach(x);++h=i,y=v,v=c[m*t+h+1]>=i,Ah[g|p<<1|v<<2|y<<3].forEach(x);Ah[p|v<<3].forEach(x)}for(h=-1,v=c[m*t]>=i,Ah[v<<2].forEach(x);++h=i,Ah[v<<2|y<<3].forEach(x);Ah[v<<3].forEach(x);function x(w){var k=[w[0][0]+h,w[0][1]+m],b=[w[1][0]+h,w[1][1]+m],T=a(k),_=a(b),S,A;(S=d[T])?(A=u[_])?(delete d[S.end],delete u[A.start],S===A?(S.ring.push(b),s(S.ring)):u[S.start]=d[A.end]={start:S.start,end:A.end,ring:S.ring.concat(A.ring)}):(delete d[S.end],S.ring.push(b),d[S.end=_]=S):(S=u[_])?(A=d[T])?(delete u[S.start],delete d[A.end],S===A?(S.ring.push(b),s(S.ring)):u[A.start]=d[S.end]={start:A.start,end:S.end,ring:A.ring.concat(S.ring)}):(delete u[S.start],S.ring.unshift(k),u[S.start=T]=S):u[T]=d[_]={start:T,end:_,ring:[k,b]}}}function a(c){return c[0]*2+c[1]*(t+1)*4}function l(c,i,s){c.forEach(u=>{var d=u[0],h=u[1],m=d|0,g=h|0,p,v=i[g*t+m];d>0&&d0&&h=0&&s>=0||Pr("invalid size"),t=i,n=s,o},o.smooth=function(c){return arguments.length?(e=c?l:Eie,o):e===l},o}function Cie(t){for(var n=0,e=t.length,o=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++no!=h>o&&e<(d-i)*(o-s)/(h-s)+i&&(f=-f)}return f}function Pie(t,n,e){var o;return Die(t,n,e)&&Iie(t[o=+(t[0]===n[0])],e[o],n[o])}function Die(t,n,e){return(n[0]-t[0])*(e[1]-t[1])===(e[0]-t[0])*(n[1]-t[1])}function Iie(t,n,e){return t<=n&&n<=e||e<=n&&n<=t}function OB(t,n,e){return function(o){var f=Zf(o),r=e?Math.min(f[0],0):f[0],a=f[1],l=a-r,c=n?x0(r,a,t):l/(t+1);return Ju(r+c,a,c)}}function sS(t){_r.call(this,null,t)}sS.Definition={type:"Isocontour",metadata:{generates:!0},params:[{name:"field",type:"field"},{name:"thresholds",type:"number",array:!0},{name:"levels",type:"number"},{name:"nice",type:"boolean",default:!1},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"zero",type:"boolean",default:!0},{name:"smooth",type:"boolean",default:!0},{name:"scale",type:"number",expr:!0},{name:"translate",type:"number",array:!0,expr:!0},{name:"as",type:"string",null:!0,default:"contour"}]};ni(sS,_r,{transform(t,n){if(this.value&&!n.changed()&&!t.modified())return n.StopPropagation;var e=n.fork(n.NO_SOURCE|n.NO_FIELDS),o=n.materialize(n.SOURCE).source,f=t.field||Hl,r=CB().smooth(t.smooth!==!1),a=t.thresholds||zie(o,f,t),l=t.as===null?null:t.as||"contour",c=[];return o.forEach(i=>{const s=f(i),u=r.size([s.width,s.height])(s.values,Ir(a)?a:a(s.values));Rie(u,s,i,t),u.forEach(d=>{c.push(rw(i,ro(l!=null?{[l]:d}:d)))})}),this.value&&(e.rem=this.value),this.value=e.source=e.add=c,e}});function zie(t,n,e){const o=OB(e.levels||10,e.nice,e.zero!==!1);return e.resolve!=="shared"?o:o(t.map(f=>f0(n(f).values)))}function Rie(t,n,e,o){let f=o.scale||n.scale,r=o.translate||n.translate;if(ga(f)&&(f=f(e,o)),ga(r)&&(r=r(e,o)),(f===1||f==null)&&!r)return;const a=(wo(f)?f:f[0])||1,l=(wo(f)?f:f[1])||1,c=r&&r[0]||0,i=r&&r[1]||0;t.forEach(LB(n,a,l,c,i))}function LB(t,n,e,o,f){const r=t.x1||0,a=t.y1||0,l=n*e<0;function c(u){u.forEach(i)}function i(u){l&&u.reverse(),u.forEach(s)}function s(u){u[0]=(u[0]-r)*n+o,u[1]=(u[1]-a)*e+f}return function(u){return u.coordinates.forEach(c),u}}function LO(t,n,e){const o=t>=0?t:t6(n,e);return Math.round((Math.sqrt(4*o*o+1)-1)/2)}function n4(t){return ga(t)?t:$l(+t)}function PB(){var t=c=>c[0],n=c=>c[1],e=jm,o=[-1,-1],f=960,r=500,a=2;function l(c,i){const s=LO(o[0],c,t)>>a,u=LO(o[1],c,n)>>a,d=s?s+2:0,h=u?u+2:0,m=2*d+(f>>a),g=2*h+(r>>a),p=new Float32Array(m*g),v=new Float32Array(m*g);let y=p;c.forEach(w=>{const k=d+(+t(w)>>a),b=h+(+n(w)>>a);k>=0&&k=0&&b0&&u>0?(Dg(m,g,p,v,s),Ig(m,g,v,p,u),Dg(m,g,p,v,s),Ig(m,g,v,p,u),Dg(m,g,p,v,s),Ig(m,g,v,p,u)):s>0?(Dg(m,g,p,v,s),Dg(m,g,v,p,s),Dg(m,g,p,v,s),y=v):u>0&&(Ig(m,g,p,v,u),Ig(m,g,v,p,u),Ig(m,g,p,v,u),y=v);const x=i?Math.pow(2,-2*a):1/SI(y);for(let w=0,k=m*g;w>a),y2:h+(r>>a)}}return l.x=function(c){return arguments.length?(t=n4(c),l):t},l.y=function(c){return arguments.length?(n=n4(c),l):n},l.weight=function(c){return arguments.length?(e=n4(c),l):e},l.size=function(c){if(!arguments.length)return[f,r];var i=+c[0],s=+c[1];return i>=0&&s>=0||Pr("invalid size"),f=i,r=s,l},l.cellSize=function(c){return arguments.length?((c=+c)>=1||Pr("invalid cell size"),a=Math.floor(Math.log(c)/Math.LN2),l):1<=f&&(l>=r&&(c-=e[l-r+a*t]),o[l-f+a*t]=c/Math.min(l+1,t-1+r-l,r))}function Ig(t,n,e,o,f){const r=(f<<1)+1;for(let a=0;a=f&&(l>=r&&(c-=e[a+(l-r)*t]),o[a+(l-f)*t]=c/Math.min(l+1,n-1+r-l,r))}function lS(t){_r.call(this,null,t)}lS.Definition={type:"KDE2D",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"weight",type:"field"},{name:"groupby",type:"field",array:!0},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number",array:!0,length:2},{name:"counts",type:"boolean",default:!1},{name:"as",type:"string",default:"grid"}]};const Fie=["x","y","weight","size","cellSize","bandwidth"];function DB(t,n){return Fie.forEach(e=>n[e]!=null?t[e](n[e]):0),t}ni(lS,_r,{transform(t,n){if(this.value&&!n.changed()&&!t.modified())return n.StopPropagation;var e=n.fork(n.NO_SOURCE|n.NO_FIELDS),o=n.materialize(n.SOURCE).source,f=Nie(o,t.groupby),r=(t.groupby||[]).map(xs),a=DB(PB(),t),l=t.as||"grid",c=[];function i(s,u){for(let d=0;dro(i({[l]:a(s,t.counts)},s.dims))),this.value&&(e.rem=this.value),this.value=e.source=e.add=c,e}});function Nie(t,n){var e=[],o=s=>s(l),f,r,a,l,c,i;if(n==null)e.push(t);else for(f={},r=0,a=t.length;re.push(l(s))),r&&a&&(n.visit(c,s=>{var u=r(s),d=a(s);u!=null&&d!=null&&(u=+u)===u&&(d=+d)===d&&o.push([u,d])}),e=e.concat({type:fT,geometry:{type:Bie,coordinates:o}})),this.value={type:cS,features:e}}});function hS(t){_r.call(this,null,t)}hS.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]};ni(hS,_r,{transform(t,n){var e=n.fork(n.ALL),o=this.value,f=t.field||Hl,r=t.as||"path",a=e.SOURCE;!o||t.modified()?(this.value=o=EB(t.projection),e.materialize().reflow()):a=f===Hl||n.modified(f.fields)?e.ADD_MOD:e.ADD;const l=jie(o,t.pointRadius);return e.visit(a,c=>c[r]=o(f(c))),o.pointRadius(l),e.modifies(r)}});function jie(t,n){const e=t.pointRadius();return t.context(null),n!=null&&t.pointRadius(n),e}function dS(t){_r.call(this,null,t)}dS.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]};ni(dS,_r,{transform(t,n){var e=t.projection,o=t.fields[0],f=t.fields[1],r=t.as||["x","y"],a=r[0],l=r[1],c;function i(s){const u=e([o(s),f(s)]);u?(s[a]=u[0],s[l]=u[1]):(s[a]=void 0,s[l]=void 0)}return t.modified()?n=n.materialize().reflow(!0).visit(n.SOURCE,i):(c=n.modified(o.fields)||n.modified(f.fields),n.visit(c?n.ADD_MOD:n.ADD,i)),n.modifies(r)}});function pS(t){_r.call(this,null,t)}pS.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]};ni(pS,_r,{transform(t,n){var e=n.fork(n.ALL),o=this.value,f=t.as||"shape",r=e.ADD;return(!o||t.modified())&&(this.value=o=Uie(EB(t.projection),t.field||Lu("datum"),t.pointRadius),e.materialize().reflow(),r=e.SOURCE),e.visit(r,a=>a[f]=o),e.modifies(f)}});function Uie(t,n,e){const o=e==null?f=>t(n(f)):f=>{var r=t.pointRadius(),a=t.pointRadius(e)(n(f));return t.pointRadius(r),a};return o.context=f=>(t.context(f),o),o}function gS(t){_r.call(this,[],t),this.generator=zre()}gS.Definition={type:"Graticule",metadata:{changes:!0,generates:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]};ni(gS,_r,{transform(t,n){var e=this.value,o=this.generator,f;if(!e.length||t.modified())for(const r in t)ga(o[r])&&o[r](t[r]);return f=o(),e.length?n.mod.push(yz(e[0],f)):n.add.push(ro(f)),e[0]=f,n}});function mS(t){_r.call(this,null,t)}mS.Definition={type:"heatmap",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"color",type:"string",expr:!0},{name:"opacity",type:"number",expr:!0},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"as",type:"string",default:"image"}]};ni(mS,_r,{transform(t,n){if(!n.changed()&&!t.modified())return n.StopPropagation;var e=n.materialize(n.SOURCE).source,o=t.resolve==="shared",f=t.field||Hl,r=qie(t.opacity,t),a=Vie(t.color,t),l=t.as||"image",c={$x:0,$y:0,$value:0,$max:o?f0(e.map(i=>f0(f(i).values))):0};return e.forEach(i=>{const s=f(i),u=pa({},i,c);o||(u.$max=f0(s.values||[])),i[l]=Hie(s,u,a.dep?a:$l(a(u)),r.dep?r:$l(r(u)))}),n.reflow(!0).modifies(l)}});function Vie(t,n){let e;return ga(t)?(e=o=>f_(t(o,n)),e.dep=IB(t)):e=$l(f_(t||"#888")),e}function qie(t,n){let e;return ga(t)?(e=o=>t(o,n),e.dep=IB(t)):t?e=$l(t):(e=o=>o.$value/o.$max||0,e.dep=!0),e}function IB(t){if(!ga(t))return!1;const n=uf(Bl(t));return n.$x||n.$y||n.$value||n.$max}function Hie(t,n,e,o){const f=t.width,r=t.height,a=t.x1||0,l=t.y1||0,c=t.x2||f,i=t.y2||r,s=t.values,u=s?p=>s[p]:Td,d=qd(c-a,i-l),h=d.getContext("2d"),m=h.getImageData(0,0,c-a,i-l),g=m.data;for(let p=l,v=0;p{t[o]!=null&&PO(e,o,t[o])})):cT.forEach(o=>{t.modified(o)&&PO(e,o,t[o])}),t.pointRadius!=null&&e.path.pointRadius(t.pointRadius),t.fit&&$ie(e,t),n.fork(n.NO_SOURCE|n.NO_FIELDS)}});function $ie(t,n){const e=Wie(n.fit);n.extent?t.fitExtent(n.extent,e):n.size&&t.fitSize(n.size,e)}function Gie(t){const n=oS((t||"mercator").toLowerCase());return n||Pr("Unrecognized projection type: "+t),n()}function PO(t,n,e){ga(t[n])&&t[n](e)}function Wie(t){return t=ki(t),t.length===1?t[0]:{type:cS,features:t.reduce((n,e)=>n.concat(Yie(e)),[])}}function Yie(t){return t.type===cS?t.features:ki(t).filter(n=>n!=null).map(n=>n.type===fT?n:{type:fT,geometry:n})}var Xie=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",contour:uS,geojson:fS,geopath:hS,geopoint:dS,geoshape:pS,graticule:gS,heatmap:mS,isocontour:sS,kde2d:lS,projection:zB});function Zie(t,n){var e,o=1;t==null&&(t=0),n==null&&(n=0);function f(){var r,a=e.length,l,c=0,i=0;for(r=0;r=(u=(l+i)/2))?l=u:i=u,(p=e>=(d=(c+s)/2))?c=d:s=d,f=r,!(r=r[v=p<<1|g]))return f[v]=a,t;if(h=+t._x.call(null,r.data),m=+t._y.call(null,r.data),n===h&&e===m)return a.next=r,f?f[v]=a:t._root=a,t;do f=f?f[v]=new Array(4):t._root=new Array(4),(g=n>=(u=(l+i)/2))?l=u:i=u,(p=e>=(d=(c+s)/2))?c=d:s=d;while((v=p<<1|g)===(y=(m>=d)<<1|h>=u));return f[y]=r,f[v]=a,t}function Kie(t){var n,e,o=t.length,f,r,a=new Array(o),l=new Array(o),c=1/0,i=1/0,s=-1/0,u=-1/0;for(e=0;es&&(s=f),ru&&(u=r));if(c>s||i>u)return this;for(this.cover(c,i).cover(s,u),e=0;et||t>=f||o>n||n>=r;)switch(i=(ns||(l=m.y0)>u||(c=m.x1)=v)<<1|t>=p)&&(m=d[d.length-1],d[d.length-1]=d[d.length-1-g],d[d.length-1-g]=m)}else{var y=t-+this._x.call(null,h.data),x=n-+this._y.call(null,h.data),w=y*y+x*x;if(w=(d=(a+c)/2))?a=d:c=d,(g=u>=(h=(l+i)/2))?l=h:i=h,n=e,!(e=e[p=g<<1|m]))return this;if(!e.length)break;(n[p+1&3]||n[p+2&3]||n[p+3&3])&&(o=n,v=p)}for(;e.data!==t;)if(f=e,!(e=e.next))return this;return(r=e.next)&&delete e.next,f?(r?f.next=r:delete f.next,this):n?(r?n[p]=r:delete n[p],(e=n[0]||n[1]||n[2]||n[3])&&e===(n[3]||n[2]||n[1]||n[0])&&!e.length&&(o?o[v]=e:this._root=e),this):(this._root=r,this)}function iae(t){for(var n=0,e=t.length;nd.index){var M=h-_.x-_.vx,E=m-_.y-_.vy,D=M*M+E*E;Dh+A||bm+A||Ti.r&&(i.r=i[s].r)}function c(){if(!!n){var i,s=n.length,u;for(e=new Array(s),i=0;i[n(k,b,a),k])),w;for(p=0,l=new Array(v);p{}};function FB(){for(var t=0,n=arguments.length,e={},o;t=0&&(o=e.slice(f+1),e=e.slice(0,f)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:o}})}Kb.prototype=FB.prototype={constructor:Kb,on:function(t,n){var e=this._,o=xae(t+"",e),f,r=-1,a=o.length;if(arguments.length<2){for(;++r0)for(var e=new Array(f),o=0,f,r;o=0&&t._call.call(void 0,n),t=t._next;--_m}function RO(){A0=(d2=ry.now())+Rw,_m=xv=0;try{wae()}finally{_m=0,Tae(),A0=0}}function kae(){var t=ry.now(),n=t-d2;n>NB&&(Rw-=n,d2=t)}function Tae(){for(var t,n=h2,e,o=1/0;n;)n._call?(o>n._time&&(o=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:h2=e);bv=t,hT(o)}function hT(t){if(!_m){xv&&(xv=clearTimeout(xv));var n=t-A0;n>24?(t<1/0&&(xv=setTimeout(RO,t-ry.now()-Rw)),q1&&(q1=clearInterval(q1))):(q1||(d2=ry.now(),q1=setInterval(kae,NB)),_m=1,BB(RO))}}function Aae(t,n,e){var o=new p2,f=n;return n==null?(o.restart(t,n,e),o):(o._restart=o.restart,o.restart=function(r,a,l){a=+a,l=l==null?xS():+l,o._restart(function c(i){i+=f,o._restart(c,f+=a,l),r(i)},a,l)},o.restart(t,n,e),o)}const Mae=1664525,Sae=1013904223,FO=4294967296;function Eae(){let t=1;return()=>(t=(Mae*t+Sae)%FO)/FO}function Cae(t){return t.x}function Oae(t){return t.y}var Lae=10,Pae=Math.PI*(3-Math.sqrt(5));function Dae(t){var n,e=1,o=.001,f=1-Math.pow(o,1/300),r=0,a=.6,l=new Map,c=jB(u),i=FB("tick","end"),s=Eae();t==null&&(t=[]);function u(){d(),i.call("tick",n),e1?(p==null?l.delete(g):l.set(g,m(p)),n):l.get(g)},find:function(g,p,v){var y=0,x=t.length,w,k,b,T,_;for(v==null?v=1/0:v*=v,y=0;y1?(i.on(g,p),n):i.on(g)}}}function Iae(){var t,n,e,o,f=uu(-30),r,a=1,l=1/0,c=.81;function i(h){var m,g=t.length,p=vS(t,Cae,Oae).visitAfter(u);for(o=h,m=0;m=l)return;(h.data!==n||h.next)&&(v===0&&(v=Id(e),w+=v*v),y===0&&(y=Id(e),w+=y*y),w=0;)e.tick();else if(e.stopped()&&e.restart(),!o)return n.StopPropagation}return this.finish(t,n)},finish(t,n){const e=n.dataflow;for(let l=this._argops,c=0,i=l.length,s;ct.touch(n).run()}function Bae(t,n){const e=Dae(t),o=e.stop,f=e.restart;let r=!1;return e.stopped=()=>r,e.restart=()=>(r=!1,f()),e.stop=()=>(r=!0,o()),VB(e,n,!0).on("end",()=>r=!0)}function VB(t,n,e,o){var f=ki(n.forces),r,a,l,c;for(r=0,a=dT.length;rn(o,e):n)}var qae=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",force:bS});function Hae(t,n){return t.parent===n.parent?1:2}function $ae(t){return t.reduce(Gae,0)/t.length}function Gae(t,n){return t+n.x}function Wae(t){return 1+t.reduce(Yae,0)}function Yae(t,n){return Math.max(t,n.y)}function Xae(t){for(var n;n=t.children;)t=n[0];return t}function Zae(t){for(var n;n=t.children;)t=n[n.length-1];return t}function Jae(){var t=Hae,n=1,e=1,o=!1;function f(r){var a,l=0;r.eachAfter(function(d){var h=d.children;h?(d.x=$ae(h),d.y=Wae(h)):(d.x=a?l+=t(d,a):0,d.y=0,a=d)});var c=Xae(r),i=Zae(r),s=c.x-t(c,i)/2,u=i.x+t(i,c)/2;return r.eachAfter(o?function(d){d.x=(d.x-r.x)*n,d.y=(r.y-d.y)*e}:function(d){d.x=(d.x-s)/(u-s)*n,d.y=(1-(r.y?d.y/r.y:1))*e})}return f.separation=function(r){return arguments.length?(t=r,f):t},f.size=function(r){return arguments.length?(o=!1,n=+r[0],e=+r[1],f):o?null:[n,e]},f.nodeSize=function(r){return arguments.length?(o=!0,n=+r[0],e=+r[1],f):o?[n,e]:null},f}function Kae(t){var n=0,e=t.children,o=e&&e.length;if(!o)n=1;else for(;--o>=0;)n+=e[o].value;t.value=n}function Qae(){return this.eachAfter(Kae)}function eoe(t,n){let e=-1;for(const o of this)t.call(n,o,++e,this);return this}function toe(t,n){for(var e=this,o=[e],f,r,a=-1;e=o.pop();)if(t.call(n,e,++a,this),f=e.children)for(r=f.length-1;r>=0;--r)o.push(f[r]);return this}function noe(t,n){for(var e=this,o=[e],f=[],r,a,l,c=-1;e=o.pop();)if(f.push(e),r=e.children)for(a=0,l=r.length;a=0;)e+=o[f].value;n.value=e})}function aoe(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})}function ooe(t){for(var n=this,e=soe(n,t),o=[n];n!==e;)n=n.parent,o.push(n);for(var f=o.length;t!==e;)o.splice(f,0,t),t=t.parent;return o}function soe(t,n){if(t===n)return t;var e=t.ancestors(),o=n.ancestors(),f=null;for(t=e.pop(),n=o.pop();t===n;)f=t,t=e.pop(),n=o.pop();return f}function loe(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n}function uoe(){return Array.from(this)}function coe(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t}function foe(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n}function*hoe(){var t=this,n,e=[t],o,f,r;do for(n=e.reverse(),e=[];t=n.pop();)if(yield t,o=t.children)for(f=0,r=o.length;f=0;--l)f.push(r=a[l]=new wm(a[l])),r.parent=o,r.depth=o.depth+1;return e.eachBefore(qB)}function doe(){return _S(this).eachBefore(moe)}function poe(t){return t.children}function goe(t){return Array.isArray(t)?t[1]:null}function moe(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function qB(t){var n=0;do t.height=n;while((t=t.parent)&&t.height<++n)}function wm(t){this.data=t,this.depth=this.height=0,this.parent=null}wm.prototype=_S.prototype={constructor:wm,count:Qae,each:eoe,eachAfter:noe,eachBefore:toe,find:roe,sum:ioe,sort:aoe,path:ooe,ancestors:loe,descendants:uoe,leaves:coe,links:foe,copy:doe,[Symbol.iterator]:hoe};function Qb(t){return t==null?null:HB(t)}function HB(t){if(typeof t!="function")throw new Error;return t}function r0(){return 0}function qg(t){return function(){return t}}const voe=1664525,yoe=1013904223,BO=4294967296;function xoe(){let t=1;return()=>(t=(voe*t+yoe)%BO)/BO}function boe(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function _oe(t,n){let e=t.length,o,f;for(;e;)f=n()*e--|0,o=t[e],t[e]=t[f],t[f]=o;return t}function woe(t,n){for(var e=0,o=(t=_oe(Array.from(t),n)).length,f=[],r,a;e0&&e*e>o*o+f*f}function r4(t,n){for(var e=0;e1e-6?(M+Math.sqrt(M*M-4*A*E))/(2*A):E/M);return{x:o+b+T*D,y:f+_+S*D,r:D}}function jO(t,n,e){var o=t.x-n.x,f,r,a=t.y-n.y,l,c,i=o*o+a*a;i?(r=n.r+e.r,r*=r,c=t.r+e.r,c*=c,r>c?(f=(i+c-r)/(2*i),l=Math.sqrt(Math.max(0,c/i-f*f)),e.x=t.x-f*o-l*a,e.y=t.y-f*a+l*o):(f=(i+r-c)/(2*i),l=Math.sqrt(Math.max(0,r/i-f*f)),e.x=n.x+f*o-l*a,e.y=n.y+f*a+l*o)):(e.x=n.x+e.r,e.y=n.y)}function UO(t,n){var e=t.r+n.r-1e-6,o=n.x-t.x,f=n.y-t.y;return e>0&&e*e>o*o+f*f}function VO(t){var n=t._,e=t.next._,o=n.r+e.r,f=(n.x*e.r+e.x*n.r)/o,r=(n.y*e.r+e.y*n.r)/o;return f*f+r*r}function vb(t){this._=t,this.next=null,this.previous=null}function Moe(t,n){if(!(r=(t=boe(t)).length))return 0;var e,o,f,r,a,l,c,i,s,u,d;if(e=t[0],e.x=0,e.y=0,!(r>1))return e.r;if(o=t[1],e.x=-o.r,o.x=e.r,o.y=0,!(r>2))return e.r+o.r;jO(o,e,f=t[2]),e=new vb(e),o=new vb(o),f=new vb(f),e.next=f.previous=o,o.next=e.previous=f,f.next=o.previous=e;e:for(c=3;cDoe(e(w,k,f))),y=v.map(WO),x=new Set(v).add("");for(const w of y)x.has(w)||(x.add(w),v.push(w),y.push(WO(w)),r.push(a4));a=(w,k)=>v[k],l=(w,k)=>y[k]}for(s=0,c=r.length;s=0&&(h=r[v],h.data===a4);--v)h.data=null}if(u.parent=Ooe,u.eachBefore(function(v){v.depth=v.parent.depth+1,--c}).eachBefore(qB),u.parent=null,c>0)throw new Error("cycle");return u}return o.id=function(f){return arguments.length?(t=Qb(f),o):t},o.parentId=function(f){return arguments.length?(n=Qb(f),o):n},o.path=function(f){return arguments.length?(e=Qb(f),o):e},o}function Doe(t){t=`${t}`;let n=t.length;return pT(t,n-1)&&!pT(t,n-2)&&(t=t.slice(0,-1)),t[0]==="/"?t:`/${t}`}function WO(t){let n=t.length;if(n<2)return"";for(;--n>1&&!pT(t,n););return t.slice(0,n)}function pT(t,n){if(t[n]==="/"){let e=0;for(;n>0&&t[--n]==="\\";)++e;if((e&1)===0)return!0}return!1}function Ioe(t,n){return t.parent===n.parent?1:2}function o4(t){var n=t.children;return n?n[0]:t.t}function s4(t){var n=t.children;return n?n[n.length-1]:t.t}function zoe(t,n,e){var o=e/(n.i-t.i);n.c-=o,n.s+=e,t.c+=o,n.z+=e,n.m+=e}function Roe(t){for(var n=0,e=0,o=t.children,f=o.length,r;--f>=0;)r=o[f],r.z+=n,r.m+=n,n+=r.s+(e+=r.c)}function Foe(t,n,e){return t.a.parent===n.parent?t.a:e}function e_(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}e_.prototype=Object.create(wm.prototype);function Noe(t){for(var n=new e_(t,0),e,o=[n],f,r,a,l;e=o.pop();)if(r=e._.children)for(e.children=new Array(l=r.length),a=l-1;a>=0;--a)o.push(f=e.children[a]=new e_(r[a],a)),f.parent=e;return(n.parent=new e_(null,0)).children=[n],n}function Boe(){var t=Ioe,n=1,e=1,o=null;function f(i){var s=Noe(i);if(s.eachAfter(r),s.parent.m=-s.z,s.eachBefore(a),o)i.eachBefore(c);else{var u=i,d=i,h=i;i.eachBefore(function(y){y.xd.x&&(d=y),y.depth>h.depth&&(h=y)});var m=u===d?1:t(u,d)/2,g=m-u.x,p=n/(d.x+m+g),v=e/(h.depth||1);i.eachBefore(function(y){y.x=(y.x+g)*p,y.y=y.depth*v})}return i}function r(i){var s=i.children,u=i.parent.children,d=i.i?u[i.i-1]:null;if(s){Roe(i);var h=(s[0].z+s[s.length-1].z)/2;d?(i.z=d.z+t(i._,d._),i.m=i.z-h):i.z=h}else d&&(i.z=d.z+t(i._,d._));i.parent.A=l(i,d,i.parent.A||u[0])}function a(i){i._.x=i.z+i.parent.m,i.m+=i.parent.m}function l(i,s,u){if(s){for(var d=i,h=i,m=s,g=d.parent.children[0],p=d.m,v=h.m,y=m.m,x=g.m,w;m=s4(m),d=o4(d),m&&d;)g=o4(g),h=s4(h),h.a=i,w=m.z+y-d.z-p+t(m._,d._),w>0&&(zoe(Foe(m,i,u),i,w),p+=w,v+=w),y+=m.m,p+=d.m,x+=g.m,v+=h.m;m&&!s4(h)&&(h.t=m,h.m+=y-v),d&&!o4(g)&&(g.t=d,g.m+=p-x,u=i)}return u}function c(i){i.x*=n,i.y=i.depth*e}return f.separation=function(i){return arguments.length?(t=i,f):t},f.size=function(i){return arguments.length?(o=!1,n=+i[0],e=+i[1],f):o?null:[n,e]},f.nodeSize=function(i){return arguments.length?(o=!0,n=+i[0],e=+i[1],f):o?[n,e]:null},f}function Fw(t,n,e,o,f){for(var r=t.children,a,l=-1,c=r.length,i=t.value&&(f-e)/t.value;++ly&&(y=i),b=p*p*k,x=Math.max(y/b,b/v),x>w){p-=i;break}w=x}a.push(c={value:p,dice:h1?o:1)},e}(YB);function joe(){var t=ZB,n=!1,e=1,o=1,f=[0],r=r0,a=r0,l=r0,c=r0,i=r0;function s(d){return d.x0=d.y0=0,d.x1=e,d.y1=o,d.eachBefore(u),f=[0],n&&d.eachBefore(WB),d}function u(d){var h=f[d.depth],m=d.x0+h,g=d.y0+h,p=d.x1-h,v=d.y1-h;p=d-1){var y=r[u];y.x0=m,y.y0=g,y.x1=p,y.y1=v;return}for(var x=i[u],w=h/2+x,k=u+1,b=d-1;k>>1;i[T]v-g){var A=h?(m*S+p*_)/h:p;s(u,k,_,m,g,A,v),s(k,d,S,A,g,p,v)}else{var M=h?(g*S+v*_)/h:v;s(u,k,_,m,g,p,M),s(k,d,S,m,M,p,v)}}}function Voe(t,n,e,o,f){(t.depth&1?Fw:Gy)(t,n,e,o,f)}var qoe=function t(n){function e(o,f,r,a,l){if((c=o._squarify)&&c.ratio===n)for(var c,i,s,u,d=-1,h,m=c.length,g=o.value;++d1?o:1)},e}(YB);function gT(t,n,e){const o={};return t.each(f=>{const r=f.data;e(r)&&(o[n(r)]=f)}),t.lookup=o,t}function wS(t){_r.call(this,null,t)}wS.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]};const Hoe=t=>t.values;ni(wS,_r,{transform(t,n){n.source||Pr("Nest transform requires an upstream data source.");var e=t.generate,o=t.modified(),f=n.clone(),r=this.value;return(!r||o||n.changed())&&(r&&r.each(a=>{a.children&&nw(a.data)&&f.rem.push(a.data)}),this.value=r=_S({values:ki(t.keys).reduce((a,l)=>(a.key(l),a),$oe()).entries(f.source)},Hoe),e&&r.each(a=>{a.children&&(a=ro(a.data),f.add.push(a),f.source.push(a))}),gT(r,$i,$i)),f.source.root=r,f}});function $oe(){const t=[],n={entries:f=>o(e(f,0),0),key:f=>(t.push(f),n)};function e(f,r){if(r>=t.length)return f;const a=f.length,l=t[r++],c={},i={};let s=-1,u,d,h;for(;++st.length)return f;const a=[];for(const l in f)a.push({key:l,values:o(f[l],r)});return a}return n}function Zh(t){_r.call(this,null,t)}const Goe=(t,n)=>t.parent===n.parent?1:2;ni(Zh,_r,{transform(t,n){(!n.source||!n.source.root)&&Pr(this.constructor.name+" transform requires a backing tree data source.");const e=this.layout(t.method),o=this.fields,f=n.source.root,r=t.as||o;t.field?f.sum(t.field):f.count(),t.sort&&f.sort(q0(t.sort,a=>a.data)),Woe(e,this.params,t),e.separation&&e.separation(t.separation!==!1?Goe:jm);try{this.value=e(f)}catch(a){Pr(a)}return f.each(a=>Yoe(a,o,r)),n.reflow(t.modified()).modifies(r).modifies("leaf")}});function Woe(t,n,e){for(let o,f=0,r=n.length;fr[$i(a)]=1),o.each(a=>{const l=a.data,c=a.parent&&a.parent.data;c&&r[$i(l)]&&r[$i(c)]&&f.add.push(ro({source:c,target:l}))}),this.value=f.add):n.changed(n.MOD)&&(n.visit(n.MOD,a=>r[$i(a)]=1),e.forEach(a=>{(r[$i(a.source)]||r[$i(a.target)])&&f.mod.push(a)})),f}});const XO={binary:Uoe,dice:Gy,slice:Fw,slicedice:Voe,squarify:ZB,resquarify:qoe},xT=["x0","y0","x1","y1","depth","children"];function ES(t){Zh.call(this,t)}ES.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:xT.length,default:xT}]};ni(ES,Zh,{layout(){const t=joe();return t.ratio=n=>{const e=t.tile();e.ratio&&t.tile(e.ratio(n))},t.method=n=>{qi(XO,n)?t.tile(XO[n]):Pr("Unrecognized Treemap layout method: "+n)},t},params:["method","ratio","size","round","padding","paddingInner","paddingOuter","paddingTop","paddingRight","paddingBottom","paddingLeft"],fields:xT});var Xoe=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",nest:wS,pack:kS,partition:TS,stratify:AS,tree:MS,treelinks:SS,treemap:ES});const l4=4278190080;function Zoe(t,n){const e=t.bitmap();return(n||[]).forEach(o=>e.set(t(o.boundary[0]),t(o.boundary[3]))),[e,void 0]}function Joe(t,n,e,o,f){const r=t.width,a=t.height,l=o||f,c=qd(r,a).getContext("2d"),i=qd(r,a).getContext("2d"),s=l&&qd(r,a).getContext("2d");e.forEach(_=>t_(c,_,!1)),t_(i,n,!1),l&&t_(s,n,!0);const u=u4(c,r,a),d=u4(i,r,a),h=l&&u4(s,r,a),m=t.bitmap(),g=l&&t.bitmap();let p,v,y,x,w,k,b,T;for(v=0;v{f.items.forEach(r=>t_(t,r.items,e))}):tc[o].draw(t,{items:e?n.map(Koe):n})}function Koe(t){const n=rw(t,{});return n.stroke&&n.strokeOpacity!==0||n.fill&&n.fillOpacity!==0?{...n,strokeOpacity:1,stroke:"#000",fillOpacity:0}:n}const Mh=5,tu=31,iy=32,wd=new Uint32Array(iy+1),Yc=new Uint32Array(iy+1);Yc[0]=0;wd[0]=~Yc[0];for(let t=1;t<=iy;++t)Yc[t]=Yc[t-1]<<1|1,wd[t]=~Yc[t];function Qoe(t,n){const e=new Uint32Array(~~((t*n+iy)/iy));function o(r,a){e[r]|=a}function f(r,a){e[r]&=a}return{array:e,get:(r,a)=>{const l=a*t+r;return e[l>>>Mh]&1<<(l&tu)},set:(r,a)=>{const l=a*t+r;o(l>>>Mh,1<<(l&tu))},clear:(r,a)=>{const l=a*t+r;f(l>>>Mh,~(1<<(l&tu)))},getRange:(r,a,l,c)=>{let i=c,s,u,d,h;for(;i>=a;--i)if(s=i*t+r,u=i*t+l,d=s>>>Mh,h=u>>>Mh,d===h){if(e[d]&wd[s&tu]&Yc[(u&tu)+1])return!0}else{if(e[d]&wd[s&tu]||e[h]&Yc[(u&tu)+1])return!0;for(let m=d+1;m{let i,s,u,d,h;for(;a<=c;++a)if(i=a*t+r,s=a*t+l,u=i>>>Mh,d=s>>>Mh,u===d)o(u,wd[i&tu]&Yc[(s&tu)+1]);else for(o(u,wd[i&tu]),o(d,Yc[(s&tu)+1]),h=u+1;h{let i,s,u,d,h;for(;a<=c;++a)if(i=a*t+r,s=a*t+l,u=i>>>Mh,d=s>>>Mh,u===d)f(u,Yc[i&tu]|wd[(s&tu)+1]);else for(f(u,Yc[i&tu]),f(d,wd[(s&tu)+1]),h=u+1;hr<0||a<0||c>=n||l>=t}}function ese(t,n,e){const o=Math.max(1,Math.sqrt(t*n/1e6)),f=~~((t+2*e+o)/o),r=~~((n+2*e+o)/o),a=l=>~~((l+e)/o);return a.invert=l=>l*o-e,a.bitmap=()=>Qoe(f,r),a.ratio=o,a.padding=e,a.width=t,a.height=n,a}function tse(t,n,e,o){const f=t.width,r=t.height;return function(a){const l=a.datum.datum.items[o].items,c=l.length,i=a.datum.fontSize,s=af.width(a.datum,a.datum.text);let u=0,d,h,m,g,p,v,y;for(let x=0;x=u&&(u=y,a.x=p,a.y=v);return p=s/2,v=i/2,d=a.x-p,h=a.x+p,m=a.y-v,g=a.y+v,a.align="center",d<0&&h<=f?a.align="left":0<=d&&ff||n-(a=o/2)<0||n+a>r}function zd(t,n,e,o,f,r,a,l){const c=f*r/(o*2),i=t(n-c),s=t(n+c),u=t(e-(r=r/2)),d=t(e+r);return a.outOfBounds(i,u,s,d)||a.getRange(i,u,s,d)||l&&l.getRange(i,u,s,d)}function nse(t,n,e,o){const f=t.width,r=t.height,a=n[0],l=n[1];function c(i,s,u,d,h){const m=t.invert(i),g=t.invert(s);let p=u,v=r,y;if(!g2(m,g,d,h,f,r)&&!zd(t,m,g,h,d,p,a,l)&&!zd(t,m,g,h,d,h,a,null)){for(;v-p>=1;)y=(p+v)/2,zd(t,m,g,h,d,y,a,l)?v=y:p=y;if(p>u)return[m,g,p,!0]}}return function(i){const s=i.datum.datum.items[o].items,u=s.length,d=i.datum.fontSize,h=af.width(i.datum,i.datum.text);let m=e?d:0,g=!1,p=!1,v=0,y,x,w,k,b,T,_,S,A,M,E,D,O,R,z,L,P;for(let N=0;Nx&&(P=y,y=x,x=P),w>k&&(P=w,w=k,k=P),A=t(y),E=t(x),M=~~((A+E)/2),D=t(w),R=t(k),O=~~((D+R)/2),_=M;_>=A;--_)for(S=O;S>=D;--S)L=c(_,S,m,h,d),L&&([i.x,i.y,m,g]=L);for(_=M;_<=E;++_)for(S=O;S<=R;++S)L=c(_,S,m,h,d),L&&([i.x,i.y,m,g]=L);!g&&!e&&(z=Math.abs(x-y+k-w),b=(y+x)/2,T=(w+k)/2,z>=v&&!g2(b,T,h,d,f,r)&&!zd(t,b,T,d,h,d,a,null)&&(v=z,i.x=b,i.y=T,p=!0))}return g||p?(b=h/2,T=d/2,a.setRange(t(i.x-b),t(i.y-T),t(i.x+b),t(i.y+T)),i.align="center",i.baseline="middle",!0):!1}}const rse=[-1,-1,1,1],ise=[-1,1,-1,1];function ase(t,n,e,o){const f=t.width,r=t.height,a=n[0],l=n[1],c=t.bitmap();return function(i){const s=i.datum.datum.items[o].items,u=s.length,d=i.datum.fontSize,h=af.width(i.datum,i.datum.text),m=[];let g=e?d:0,p=!1,v=!1,y=0,x,w,k,b,T,_,S,A,M,E,D,O;for(let R=0;R=1;)D=(M+E)/2,zd(t,T,_,d,h,D,a,l)?E=D:M=D;M>g&&(i.x=T,i.y=_,g=M,p=!0)}}!p&&!e&&(O=Math.abs(w-x+b-k),T=(x+w)/2,_=(k+b)/2,O>=y&&!g2(T,_,h,d,f,r)&&!zd(t,T,_,d,h,d,a,null)&&(y=O,i.x=T,i.y=_,v=!0))}return p||v?(T=h/2,_=d/2,a.setRange(t(i.x-T),t(i.y-_),t(i.x+T),t(i.y+_)),i.align="center",i.baseline="middle",!0):!1}}const ose=["right","center","left"],sse=["bottom","middle","top"];function lse(t,n,e,o){const f=t.width,r=t.height,a=n[0],l=n[1],c=o.length;return function(i){var s;const u=i.boundary,d=i.datum.fontSize;if(u[2]<0||u[5]<0||u[0]>f||u[3]>r)return!1;let h=(s=i.textWidth)!==null&&s!==void 0?s:0,m,g,p,v,y,x,w,k,b,T,_,S,A,M,E;for(let D=0;D>>2&3)-1,p=m===0&&g===0||o[D]<0,v=m&&g?Math.SQRT1_2:1,y=o[D]<0?-1:1,x=u[1+m]+o[D]*m*v,_=u[4+g]+y*d*g/2+o[D]*g*v,k=_-d/2,b=_+d/2,S=t(x),M=t(k),E=t(b),!h)if(ZO(S,S,M,E,a,l,x,x,k,b,u,p))h=af.width(i.datum,i.datum.text);else continue;if(T=x+y*h*m/2,x=T-h/2,w=T+h/2,S=t(x),A=t(w),ZO(S,A,M,E,a,l,x,w,k,b,u,p))return i.x=m?m*y<0?w:x:T,i.y=g?g*y<0?b:k:_,i.align=ose[m*y+1],i.baseline=sse[g*y+1],a.setRange(S,M,A,E),!0}return!1}}function ZO(t,n,e,o,f,r,a,l,c,i,s,u){return!(f.outOfBounds(t,e,n,o)||(u&&r||f).getRange(t,e,n,o))}const c4=0,f4=4,h4=8,d4=0,p4=1,g4=2,use={"top-left":c4+d4,top:c4+p4,"top-right":c4+g4,left:f4+d4,middle:f4+p4,right:f4+g4,"bottom-left":h4+d4,bottom:h4+p4,"bottom-right":h4+g4},cse={naive:tse,"reduced-search":nse,floodfill:ase};function fse(t,n,e,o,f,r,a,l,c,i,s){if(!t.length)return t;const u=Math.max(o.length,f.length),d=hse(o,u),h=dse(f,u),m=pse(t[0].datum),g=m==="group"&&t[0].datum.items[c].marktype,p=g==="area",v=gse(m,g,l,c),y=i===null||i===1/0,x=p&&s==="naive";let w=-1,k=-1;const b=t.map(A=>{const M=y?af.width(A,A.text):void 0;return w=Math.max(w,M),k=Math.max(k,A.fontSize),{datum:A,opacity:0,x:void 0,y:void 0,align:void 0,baseline:void 0,boundary:v(A),textWidth:M}});i=i===null||i===1/0?Math.max(w,k)+Math.max(...o):i;const T=ese(n[0],n[1],i);let _;if(!x){e&&b.sort((E,D)=>e(E.datum,D.datum));let A=!1;for(let E=0;EE.datum);_=r.length||M?Joe(T,M||[],r,A,p):Zoe(T,a&&b)}const S=p?cse[s](T,_,a,c):lse(T,_,h,d);return b.forEach(A=>A.opacity=+S(A)),b}function hse(t,n){const e=new Float64Array(n),o=t.length;for(let f=0;f[r.x,r.x,r.x,r.y,r.y,r.y];return t?t==="line"||t==="area"?r=>f(r.datum):n==="line"?r=>{const a=r.datum.items[o].items;return f(a.length?a[e==="start"?0:a.length-1]:{x:NaN,y:NaN})}:r=>{const a=r.datum.bounds;return[a.x1,(a.x1+a.x2)/2,a.x2,a.y1,(a.y1+a.y2)/2,a.y2]}:f}const bT=["x","y","opacity","align","baseline"],JB=["top-left","left","bottom-left","top","bottom","top-right","right","bottom-right"];function CS(t){_r.call(this,null,t)}CS.Definition={type:"Label",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"sort",type:"compare"},{name:"anchor",type:"string",array:!0,default:JB},{name:"offset",type:"number",array:!0,default:[1]},{name:"padding",type:"number",default:0,null:!0},{name:"lineAnchor",type:"string",values:["start","end"],default:"end"},{name:"markIndex",type:"number",default:0},{name:"avoidBaseMark",type:"boolean",default:!0},{name:"avoidMarks",type:"data",array:!0},{name:"method",type:"string",default:"naive"},{name:"as",type:"string",array:!0,length:bT.length,default:bT}]};ni(CS,_r,{transform(t,n){function e(r){const a=t[r];return ga(a)&&n.modified(a.fields)}const o=t.modified();if(!(o||n.changed(n.ADD_REM)||e("sort")))return;(!t.size||t.size.length!==2)&&Pr("Size parameter should be specified as a [width, height] array.");const f=t.as||bT;return fse(n.materialize(n.SOURCE).source||[],t.size,t.sort,ki(t.offset==null?1:t.offset),ki(t.anchor||JB),t.avoidMarks||[],t.avoidBaseMark!==!1,t.lineAnchor||"end",t.markIndex||0,t.padding===void 0?0:t.padding,t.method||"naive").forEach(r=>{const a=r.datum;a[f[0]]=r.x,a[f[1]]=r.y,a[f[2]]=r.opacity,a[f[3]]=r.align,a[f[4]]=r.baseline}),n.reflow(o).modifies(f)}});var mse=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",label:CS});function KB(t,n){var e=[],o=function(s){return s(l)},f,r,a,l,c,i;if(n==null)e.push(t);else for(f={},r=0,a=t.length;r{Rz(i,t.x,t.y,t.bandwidth||.3).forEach(s=>{const u={};for(let d=0;dt==="poly"?n:t==="quad"?2:1;function LS(t){_r.call(this,null,t)}LS.Definition={type:"Regression",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"string",default:"linear",values:Object.keys(_T)},{name:"order",type:"number",default:3},{name:"extent",type:"number",array:!0,length:2},{name:"params",type:"boolean",default:!1},{name:"as",type:"string",array:!0}]};ni(LS,_r,{transform(t,n){const e=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){const o=n.materialize(n.SOURCE).source,f=KB(o,t.groupby),r=(t.groupby||[]).map(xs),a=t.method||"linear",l=t.order||3,c=vse(a,l),i=t.as||[xs(t.x),xs(t.y)],s=_T[a],u=[];let d=t.extent;qi(_T,a)||Pr("Invalid regression method: "+a),d!=null&&a==="log"&&d[0]<=0&&(n.dataflow.warn("Ignoring extent with values <= 0 for log regression."),d=null),f.forEach(h=>{if(h.length<=c){n.dataflow.warn("Skipping regression with more parameters than data points.");return}const g=s(h,t.x,t.y,l);if(t.params){u.push(ro({keys:h.dims,coef:g.coef,rSquared:g.rSquared}));return}const p=d||Zf(h,t.x),v=y=>{const x={};for(let w=0;wv([y,g.predict(y)])):cw(g.predict,p,25,200).forEach(v)}),this.value&&(e.rem=this.value),this.value=e.add=e.source=u}return e}});var yse=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",loess:OS,regression:LS});const jh=11102230246251565e-32,Ol=134217729,xse=(3+8*jh)*jh;function m4(t,n,e,o,f){let r,a,l,c,i=n[0],s=o[0],u=0,d=0;s>i==s>-i?(r=i,i=n[++u]):(r=s,s=o[++d]);let h=0;if(ui==s>-i?(a=i+r,l=r-(a-i),i=n[++u]):(a=s+r,l=r-(a-s),s=o[++d]),r=a,l!==0&&(f[h++]=l);ui==s>-i?(a=r+i,c=a-r,l=r-(a-c)+(i-c),i=n[++u]):(a=r+s,c=a-r,l=r-(a-c)+(s-c),s=o[++d]),r=a,l!==0&&(f[h++]=l);for(;u=O||-D>=O||(u=t-S,l=t-(S+u)+(u-f),u=e-A,i=e-(A+u)+(u-f),u=n-M,c=n-(M+u)+(u-r),u=o-E,s=o-(E+u)+(u-r),l===0&&c===0&&i===0&&s===0)||(O=kse*a+xse*Math.abs(D),D+=S*s+E*l-(M*i+A*c),D>=O||-D>=O))return D;w=l*E,d=Ol*l,h=d-(d-l),m=l-h,d=Ol*E,g=d-(d-E),p=E-g,k=m*p-(w-h*g-m*g-h*p),b=c*A,d=Ol*c,h=d-(d-c),m=c-h,d=Ol*A,g=d-(d-A),p=A-g,T=m*p-(b-h*g-m*g-h*p),v=k-T,u=k-v,nu[0]=k-(v+u)+(u-T),y=w+v,u=y-w,x=w-(y-u)+(v-u),v=x-b,u=x-v,nu[1]=x-(v+u)+(u-b),_=y+v,u=_-y,nu[2]=y-(_-u)+(v-u),nu[3]=_;const R=m4(4,zg,4,nu,JO);w=S*s,d=Ol*S,h=d-(d-S),m=S-h,d=Ol*s,g=d-(d-s),p=s-g,k=m*p-(w-h*g-m*g-h*p),b=M*i,d=Ol*M,h=d-(d-M),m=M-h,d=Ol*i,g=d-(d-i),p=i-g,T=m*p-(b-h*g-m*g-h*p),v=k-T,u=k-v,nu[0]=k-(v+u)+(u-T),y=w+v,u=y-w,x=w-(y-u)+(v-u),v=x-b,u=x-v,nu[1]=x-(v+u)+(u-b),_=y+v,u=_-y,nu[2]=y-(_-u)+(v-u),nu[3]=_;const z=m4(R,JO,4,nu,KO);w=l*s,d=Ol*l,h=d-(d-l),m=l-h,d=Ol*s,g=d-(d-s),p=s-g,k=m*p-(w-h*g-m*g-h*p),b=c*i,d=Ol*c,h=d-(d-c),m=c-h,d=Ol*i,g=d-(d-i),p=i-g,T=m*p-(b-h*g-m*g-h*p),v=k-T,u=k-v,nu[0]=k-(v+u)+(u-T),y=w+v,u=y-w,x=w-(y-u)+(v-u),v=x-b,u=x-v,nu[1]=x-(v+u)+(u-b),_=y+v,u=_-y,nu[2]=y-(_-u)+(v-u),nu[3]=_;const L=m4(z,KO,4,nu,QO);return QO[L-1]}function yb(t,n,e,o,f,r){const a=(n-r)*(e-f),l=(t-f)*(o-r),c=a-l;if(a===0||l===0||a>0!=l>0)return c;const i=Math.abs(a+l);return Math.abs(c)>=_se*i?c:-Tse(t,n,e,o,f,r,i)}const eL=Math.pow(2,-52),xb=new Uint32Array(512);class m2{static from(n,e=Cse,o=Ose){const f=n.length,r=new Float64Array(f*2);for(let a=0;a>1;if(e>0&&typeof n[0]!="number")throw new Error("Expected coords to contain numbers.");this.coords=n;const o=Math.max(2*e-5,0);this._triangles=new Uint32Array(o*3),this._halfedges=new Int32Array(o*3),this._hashSize=Math.ceil(Math.sqrt(e)),this._hullPrev=new Uint32Array(e),this._hullNext=new Uint32Array(e),this._hullTri=new Uint32Array(e),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(e),this._dists=new Float64Array(e),this.update()}update(){const{coords:n,_hullPrev:e,_hullNext:o,_hullTri:f,_hullHash:r}=this,a=n.length>>1;let l=1/0,c=1/0,i=-1/0,s=-1/0;for(let A=0;Ai&&(i=M),E>s&&(s=E),this._ids[A]=A}const u=(l+i)/2,d=(c+s)/2;let h=1/0,m,g,p;for(let A=0;A0&&(g=A,h=M)}let x=n[2*g],w=n[2*g+1],k=1/0;for(let A=0;AD&&(A[M++]=O,D=this._dists[O])}this.hull=A.subarray(0,M),this.triangles=new Uint32Array(0),this.halfedges=new Uint32Array(0);return}if(yb(v,y,x,w,b,T)<0){const A=g,M=x,E=w;g=p,x=b,w=T,p=A,b=M,T=E}const _=Ese(v,y,x,w,b,T);this._cx=_.x,this._cy=_.y;for(let A=0;A0&&Math.abs(O-M)<=eL&&Math.abs(R-E)<=eL||(M=O,E=R,D===m||D===g||D===p))continue;let z=0;for(let G=0,W=this._hashKey(O,R);G=0;)if(L=P,L===z){L=-1;break}if(L===-1)continue;let N=this._addTriangle(L,D,o[L],-1,-1,f[L]);f[D]=this._legalize(N+2),f[L]=N,S++;let B=o[L];for(;P=o[B],yb(O,R,n[2*B],n[2*B+1],n[2*P],n[2*P+1])<0;)N=this._addTriangle(B,D,P,f[D],-1,f[B]),f[D]=this._legalize(N+2),o[B]=B,S--,B=P;if(L===z)for(;P=e[L],yb(O,R,n[2*P],n[2*P+1],n[2*L],n[2*L+1])<0;)N=this._addTriangle(P,D,L,-1,f[L],f[P]),this._legalize(N+2),f[P]=N,o[L]=L,S--,L=P;this._hullStart=e[D]=L,o[L]=e[B]=D,o[D]=B,r[this._hashKey(O,R)]=D,r[this._hashKey(n[2*L],n[2*L+1])]=L}this.hull=new Uint32Array(S);for(let A=0,M=this._hullStart;A0?3-e:1+e)/4}function v4(t,n,e,o){const f=t-e,r=n-o;return f*f+r*r}function Mse(t,n,e,o,f,r,a,l){const c=t-a,i=n-l,s=e-a,u=o-l,d=f-a,h=r-l,m=c*c+i*i,g=s*s+u*u,p=d*d+h*h;return c*(u*p-g*h)-i*(s*p-g*d)+m*(s*h-u*d)<0}function Sse(t,n,e,o,f,r){const a=e-t,l=o-n,c=f-t,i=r-n,s=a*a+l*l,u=c*c+i*i,d=.5/(a*i-l*c),h=(i*s-l*u)*d,m=(a*u-c*s)*d;return h*h+m*m}function Ese(t,n,e,o,f,r){const a=e-t,l=o-n,c=f-t,i=r-n,s=a*a+l*l,u=c*c+i*i,d=.5/(a*i-l*c),h=t+(i*s-l*u)*d,m=n+(a*u-c*s)*d;return{x:h,y:m}}function Zg(t,n,e,o){if(o-e<=20)for(let f=e+1;f<=o;f++){const r=t[f],a=n[r];let l=f-1;for(;l>=e&&n[t[l]]>a;)t[l+1]=t[l--];t[l+1]=r}else{const f=e+o>>1;let r=e+1,a=o;H1(t,f,r),n[t[e]]>n[t[o]]&&H1(t,e,o),n[t[r]]>n[t[o]]&&H1(t,r,o),n[t[e]]>n[t[r]]&&H1(t,e,r);const l=t[r],c=n[l];for(;;){do r++;while(n[t[r]]c);if(a=a-e?(Zg(t,n,r,o),Zg(t,n,e,a-1)):(Zg(t,n,e,a-1),Zg(t,n,r,o))}}function H1(t,n,e){const o=t[n];t[n]=t[e],t[e]=o}function Cse(t){return t[0]}function Ose(t){return t[1]}const tL=1e-6;class s0{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(n,e){this._+=`M${this._x0=this._x1=+n},${this._y0=this._y1=+e}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(n,e){this._+=`L${this._x1=+n},${this._y1=+e}`}arc(n,e,o){n=+n,e=+e,o=+o;const f=n+o,r=e;if(o<0)throw new Error("negative radius");this._x1===null?this._+=`M${f},${r}`:(Math.abs(this._x1-f)>tL||Math.abs(this._y1-r)>tL)&&(this._+="L"+f+","+r),o&&(this._+=`A${o},${o},0,1,1,${n-o},${e}A${o},${o},0,1,1,${this._x1=f},${this._y1=r}`)}rect(n,e,o,f){this._+=`M${this._x0=this._x1=+n},${this._y0=this._y1=+e}h${+o}v${+f}h${-o}Z`}value(){return this._||null}}class wT{constructor(){this._=[]}moveTo(n,e){this._.push([n,e])}closePath(){this._.push(this._[0].slice())}lineTo(n,e){this._.push([n,e])}value(){return this._.length?this._:null}}class Lse{constructor(n,[e,o,f,r]=[0,0,960,500]){if(!((f=+f)>=(e=+e))||!((r=+r)>=(o=+o)))throw new Error("invalid bounds");this.delaunay=n,this._circumcenters=new Float64Array(n.points.length*2),this.vectors=new Float64Array(n.points.length*2),this.xmax=f,this.xmin=e,this.ymax=r,this.ymin=o,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:n,hull:e,triangles:o},vectors:f}=this,r=this.circumcenters=this._circumcenters.subarray(0,o.length/3*2);for(let h=0,m=0,g=o.length,p,v;h1;)r-=2;for(let a=2;a4)for(let a=0;a0){if(e>=this.ymax)return null;(a=(this.ymax-e)/f)0){if(n>=this.xmax)return null;(a=(this.xmax-n)/o)this.xmax?2:0)|(ethis.ymax?8:0)}}const Pse=2*Math.PI,Rg=Math.pow;function Dse(t){return t[0]}function Ise(t){return t[1]}function zse(t){const{triangles:n,coords:e}=t;for(let o=0;o1e-10)return!1}return!0}function Rse(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class PS{static from(n,e=Dse,o=Ise,f){return new PS("length"in n?Fse(n,e,o,f):Float64Array.from(Nse(n,e,o,f)))}constructor(n){this._delaunator=new m2(n),this.inedges=new Int32Array(n.length/2),this._hullIndex=new Int32Array(n.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const n=this._delaunator,e=this.points;if(n.hull&&n.hull.length>2&&zse(n)){this.collinear=Int32Array.from({length:e.length/2},(d,h)=>h).sort((d,h)=>e[2*d]-e[2*h]||e[2*d+1]-e[2*h+1]);const c=this.collinear[0],i=this.collinear[this.collinear.length-1],s=[e[2*c],e[2*c+1],e[2*i],e[2*i+1]],u=1e-8*Math.hypot(s[3]-s[1],s[2]-s[0]);for(let d=0,h=e.length/2;d0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=f[0],a[f[0]]=1,f.length===2&&(a[f[1]]=0,this.triangles[1]=f[1],this.triangles[2]=f[1]))}voronoi(n){return new Lse(this,n)}*neighbors(n){const{inedges:e,hull:o,_hullIndex:f,halfedges:r,triangles:a,collinear:l}=this;if(l){const u=l.indexOf(n);u>0&&(yield l[u-1]),u=0&&r!==o&&r!==f;)o=r;return r}_step(n,e,o){const{inedges:f,hull:r,_hullIndex:a,halfedges:l,triangles:c,points:i}=this;if(f[n]===-1||!i.length)return(n+1)%(i.length>>1);let s=n,u=Rg(e-i[n*2],2)+Rg(o-i[n*2+1],2);const d=f[n];let h=d;do{let m=c[h];const g=Rg(e-i[m*2],2)+Rg(o-i[m*2+1],2);if(g>5,n_=1<<11;function Vse(){var t=[256,256],n,e,o,f,r,a,l,c=QB,i=[],s=Math.random,u={};u.layout=function(){for(var m=d(qd()),g=Yse((t[0]>>5)*t[1]),p=null,v=i.length,y=-1,x=[],w=i.map(b=>({text:n(b),font:e(b),style:f(b),weight:r(b),rotate:a(b),size:~~(o(b)+1e-14),padding:l(b),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:b})).sort((b,T)=>T.size-b.size);++y>1,k.y=t[1]*(s()+.5)>>1,qse(m,k,w,y),k.hasText&&h(g,k,p)&&(x.push(k),p?$se(p,k):p=[{x:k.x+k.x0,y:k.y+k.y0},{x:k.x+k.x1,y:k.y+k.y1}],k.x-=t[0]>>1,k.y-=t[1]>>1)}return x};function d(m){m.width=m.height=1;var g=Math.sqrt(m.getContext("2d").getImageData(0,0,1,1).data.length>>2);m.width=(kv<<5)/g,m.height=n_/g;var p=m.getContext("2d");return p.fillStyle=p.strokeStyle="red",p.textAlign="center",{context:p,ratio:g}}function h(m,g,p){for(var v=g.x,y=g.y,x=Math.sqrt(t[0]*t[0]+t[1]*t[1]),w=c(t),k=s()<.5?1:-1,b=-k,T,_,S;(T=w(b+=k))&&(_=~~T[0],S=~~T[1],!(Math.min(Math.abs(_),Math.abs(S))>=x));)if(g.x=v+_,g.y=y+S,!(g.x+g.x0<0||g.y+g.y0<0||g.x+g.x1>t[0]||g.y+g.y1>t[1])&&(!p||!Hse(g,m,t[0]))&&(!p||Gse(g,p))){for(var A=g.sprite,M=g.width>>5,E=t[0]>>5,D=g.x-(M<<4),O=D&127,R=32-O,z=g.y1-g.y0,L=(g.y+g.y0)*E+(D>>5),P,N=0;N>>O:0);L+=E}return g.sprite=null,!0}return!1}return u.words=function(m){return arguments.length?(i=m,u):i},u.size=function(m){return arguments.length?(t=[+m[0],+m[1]],u):t},u.font=function(m){return arguments.length?(e=jp(m),u):e},u.fontStyle=function(m){return arguments.length?(f=jp(m),u):f},u.fontWeight=function(m){return arguments.length?(r=jp(m),u):r},u.rotate=function(m){return arguments.length?(a=jp(m),u):a},u.text=function(m){return arguments.length?(n=jp(m),u):n},u.spiral=function(m){return arguments.length?(c=Xse[m]||m,u):c},u.fontSize=function(m){return arguments.length?(o=jp(m),u):o},u.padding=function(m){return arguments.length?(l=jp(m),u):l},u.random=function(m){return arguments.length?(s=m,u):s},u}function qse(t,n,e,o){if(!n.sprite){var f=t.context,r=t.ratio;f.clearRect(0,0,(kv<<5)/r,n_/r);var a=0,l=0,c=0,i=e.length,s,u,d,h,m;for(--o;++o>5<<5,d=~~Math.max(Math.abs(y+x),Math.abs(y-x))}else s=s+31>>5<<5;if(d>c&&(c=d),a+s>=kv<<5&&(a=0,l+=c,c=0),l+d>=n_)break;f.translate((a+(s>>1))/r,(l+(d>>1))/r),n.rotate&&f.rotate(n.rotate*y4),f.fillText(n.text,0,0),n.padding&&(f.lineWidth=2*n.padding,f.strokeText(n.text,0,0)),f.restore(),n.width=s,n.height=d,n.xoff=a,n.yoff=l,n.x1=s>>1,n.y1=d>>1,n.x0=-n.x1,n.y0=-n.y1,n.hasText=!0,a+=s}for(var k=f.getImageData(0,0,(kv<<5)/r,n_/r).data,b=[];--o>=0;)if(n=e[o],!!n.hasText){for(s=n.width,u=s>>5,d=n.y1-n.y0,h=0;h>5),A=k[(l+m)*(kv<<5)+(a+h)<<2]?1<<31-h%32:0;b[S]|=A,T|=A}T?_=m:(n.y0++,d--,m--,l++)}n.y1=n.y0+_,n.sprite=b.slice(0,(n.y1-n.y0)*u)}}}function Hse(t,n,e){e>>=5;for(var o=t.sprite,f=t.width>>5,r=t.x-(f<<4),a=r&127,l=32-a,c=t.y1-t.y0,i=(t.y+t.y0)*e+(r>>5),s,u=0;u>>a:0))&n[i+d])return!0;i+=e}return!1}function $se(t,n){var e=t[0],o=t[1];n.x+n.x0o.x&&(o.x=n.x+n.x1),n.y+n.y1>o.y&&(o.y=n.y+n.y1)}function Gse(t,n){return t.x+t.x1>n[0].x&&t.x+t.x0n[0].y&&t.y+t.y0g(m(p))}f.forEach(m=>{m[a[0]]=NaN,m[a[1]]=NaN,m[a[3]]=0});const i=r.words(f).text(t.text).size(t.size||[500,500]).padding(t.padding||1).spiral(t.spiral||"archimedean").rotate(t.rotate||0).font(t.font||"sans-serif").fontStyle(t.fontStyle||"normal").fontWeight(t.fontWeight||"normal").fontSize(l).random(yc).layout(),s=r.size(),u=s[0]>>1,d=s[1]>>1,h=i.length;for(let m=0,g,p;mnew Uint8Array(t),Qse=t=>new Uint16Array(t),Rv=t=>new Uint32Array(t);function ele(){let t=8,n=[],e=Rv(0),o=bb(0,t),f=bb(0,t);return{data:()=>n,seen:()=>e=tle(e,n.length),add(r){for(let a=0,l=n.length,c=r.length,i;an.length,curr:()=>o,prev:()=>f,reset:r=>f[r]=o[r],all:()=>t<257?255:t<65537?65535:4294967295,set(r,a){o[r]|=a},clear(r,a){o[r]&=~a},resize(r,a){const l=o.length;(r>l||a>t)&&(t=Math.max(a,t),o=bb(r,t,o),f=bb(r,t))}}}function tle(t,n,e){return t.length>=n?t:(e=e||new t.constructor(n),e.set(t),e)}function bb(t,n,e){const o=(n<257?Kse:n<65537?Qse:Rv)(t);return e&&o.set(e),o}function nL(t,n,e){const o=1<0)for(p=0;pt,size:()=>e}}function nle(t,n){return t.sort.call(n,(e,o)=>{const f=t[e],r=t[o];return fr?1:0}),QW(t,n)}function rle(t,n,e,o,f,r,a,l,c){let i=0,s=0,u;for(u=0;in.modified(o.fields));return e?this.reinit(t,n):this.eval(t,n)}else return this.init(t,n)},init(t,n){const e=t.fields,o=t.query,f=this._indices={},r=this._dims=[],a=o.length;let l=0,c,i;for(;l{const r=f.remove(n,e);for(const a in o)o[a].reindex(r)})},update(t,n,e){const o=this._dims,f=t.query,r=n.stamp,a=o.length;let l=0,c,i;for(e.filters=0,i=0;ih)for(p=h,v=Math.min(u,m);pm)for(p=Math.max(u,m),v=d;pu)for(m=u,g=Math.min(i,d);md)for(m=Math.max(i,d),g=s;ml[s]&e?null:a[s];return r.filter(r.MOD,i),f&f-1?(r.filter(r.ADD,s=>{const u=l[s]&e;return!u&&u^c[s]&e?a[s]:null}),r.filter(r.REM,s=>{const u=l[s]&e;return u&&!(u^(u^c[s]&e))?a[s]:null})):(r.filter(r.ADD,i),r.filter(r.REM,s=>(l[s]&e)===f?a[s]:null)),r.filter(r.SOURCE,s=>i(s._index))}});var ile=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",crossfilter:zS,resolvefilter:RS});const ale="RawCode",M0="Literal",ole="Property",sle="Identifier",lle="ArrayExpression",ule="BinaryExpression",tj="CallExpression",cle="ConditionalExpression",fle="LogicalExpression",hle="MemberExpression",dle="ObjectExpression",ple="UnaryExpression";function df(t){this.type=t}df.prototype.visit=function(t){let n,e,o;if(t(this))return 1;for(n=gle(this),e=0,o=n.length;e";lh[S0]="Identifier";lh[pp]="Keyword";lh[Bw]="Null";lh[G0]="Numeric";lh[_u]="Punctuator";lh[Xy]="String";lh[mle]="RegularExpression";var vle="ArrayExpression",yle="BinaryExpression",xle="CallExpression",ble="ConditionalExpression",nj="Identifier",_le="Literal",wle="LogicalExpression",kle="MemberExpression",Tle="ObjectExpression",Ale="Property",Mle="UnaryExpression",rl="Unexpected token %0",Sle="Unexpected number",Ele="Unexpected string",Cle="Unexpected identifier",Ole="Unexpected reserved word",Lle="Unexpected end of input",kT="Invalid regular expression",x4="Invalid regular expression: missing /",rj="Octal literals are not allowed in strict mode.",Ple="Duplicate data property in object literal not allowed in strict mode",_l="ILLEGAL",ay="Disabled.",Dle=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),Ile=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function jw(t,n){if(!t)throw new Error("ASSERT: "+n)}function Ph(t){return t>=48&&t<=57}function FS(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fv(t){return"01234567".indexOf(t)>=0}function zle(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function oy(t){return t===10||t===13||t===8232||t===8233}function Zy(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Dle.test(String.fromCharCode(t))}function v2(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Ile.test(String.fromCharCode(t))}const Rle={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function ij(){for(;Cr1114111||t!=="}")&&Wa({},rl,_l),n<=65535?String.fromCharCode(n):(e=(n-65536>>10)+55296,o=(n-65536&1023)+56320,String.fromCharCode(e,o))}function aj(){var t,n;for(t=Ii.charCodeAt(Cr++),n=String.fromCharCode(t),t===92&&(Ii.charCodeAt(Cr)!==117&&Wa({},rl,_l),++Cr,t=TT("u"),(!t||t==="\\"||!Zy(t.charCodeAt(0)))&&Wa({},rl,_l),n=t);Cr>>=")return Cr+=4,{type:_u,value:a,start:t,end:Cr};if(r=a.substr(0,3),r===">>>"||r==="<<="||r===">>=")return Cr+=3,{type:_u,value:r,start:t,end:Cr};if(f=r.substr(0,2),o===f[1]&&"+-<>&|".indexOf(o)>=0||f==="=>")return Cr+=2,{type:_u,value:f,start:t,end:Cr};if(f==="//"&&Wa({},rl,_l),"<>=!+-*%&|^/".indexOf(o)>=0)return++Cr,{type:_u,value:o,start:t,end:Cr};Wa({},rl,_l)}function jle(t){let n="";for(;Cr=0&&Cr=0&&(e=e.replace(/\\u\{([0-9a-fA-F]+)\}/g,(o,f)=>{if(parseInt(f,16)<=1114111)return"x";Wa({},kT)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(e)}catch{Wa({},kT)}try{return new RegExp(t,n)}catch{return null}}function Hle(){var t,n,e,o,f;for(t=Ii[Cr],jw(t==="/","Regular expression literal must start with a slash"),n=Ii[Cr++],e=!1,o=!1;Cr=0&&Wa({},kT,e),{value:e,literal:n}}function Gle(){var t,n,e,o;return vo=null,ij(),t=Cr,n=Hle(),e=$le(),o=qle(n.value,e.value),{literal:n.literal+e.literal,value:o,regex:{pattern:n.value,flags:e.value},start:t,end:Cr}}function Wle(t){return t.type===S0||t.type===pp||t.type===Nw||t.type===Bw}function oj(){if(ij(),Cr>=Ul)return{type:Yy,start:Cr,end:Cr};const t=Ii.charCodeAt(Cr);return Zy(t)?Ble():t===40||t===41||t===59?b4():t===39||t===34?Vle():t===46?Ph(Ii.charCodeAt(Cr+1))?iL():b4():Ph(t)?iL():b4()}function Au(){const t=vo;return Cr=t.end,vo=oj(),Cr=t.end,t}function sj(){const t=Cr;vo=oj(),Cr=t}function Yle(t){const n=new df(vle);return n.elements=t,n}function aL(t,n,e){const o=new df(t==="||"||t==="&&"?wle:yle);return o.operator=t,o.left=n,o.right=e,o}function Xle(t,n){const e=new df(xle);return e.callee=t,e.arguments=n,e}function Zle(t,n,e){const o=new df(ble);return o.test=t,o.consequent=n,o.alternate=e,o}function NS(t){const n=new df(nj);return n.name=t,n}function Tv(t){const n=new df(_le);return n.value=t.value,n.raw=Ii.slice(t.start,t.end),t.regex&&(n.raw==="//"&&(n.raw="/(?:)/"),n.regex=t.regex),n}function oL(t,n,e){const o=new df(kle);return o.computed=t==="[",o.object=n,o.property=e,o.computed||(e.member=!0),o}function Jle(t){const n=new df(Tle);return n.properties=t,n}function sL(t,n,e){const o=new df(Ale);return o.key=n,o.value=e,o.kind=t,o}function Kle(t,n){const e=new df(Mle);return e.operator=t,e.argument=n,e.prefix=!0,e}function Wa(t,n){var e,o=Array.prototype.slice.call(arguments,2),f=n.replace(/%(\d)/g,(r,a)=>(jw(a":case"<=":case">=":case"instanceof":case"in":n=7;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11;break}return n}function cue(){var t,n,e,o,f,r,a,l,c,i;if(t=vo,c=r_(),o=vo,f=cL(o),f===0)return c;for(o.prec=f,Au(),n=[t,vo],a=r_(),r=[c,o,a];(f=cL(vo))>0;){for(;r.length>2&&f<=r[r.length-2].prec;)a=r.pop(),l=r.pop().value,c=r.pop(),n.pop(),e=aL(l,c,a),r.push(e);o=Au(),o.prec=f,r.push(o),n.push(vo),e=r_(),r.push(e)}for(i=r.length-1,e=r[i],n.pop();i>1;)n.pop(),e=aL(r[i-1].value,r[i-2],e),i-=2;return e}function E0(){var t,n,e;return t=cue(),qo("?")&&(Au(),n=E0(),Vl(":"),e=E0(),t=Zle(t,n,e)),t}function BS(){const t=E0();if(qo(","))throw new Error(ay);return t}function jS(t){Ii=t,Cr=0,Ul=Ii.length,vo=null,sj();const n=BS();if(vo.type!==Yy)throw new Error("Unexpect token after expression.");return n}var lj={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function uj(t){function n(a,l,c,i){let s=t(l[0]);return c&&(s=c+"("+s+")",c.lastIndexOf("new ",0)===0&&(s="("+s+")")),s+"."+a+(i<0?"":i===0?"()":"("+l.slice(1).map(t).join(",")+")")}function e(a,l,c){return i=>n(a,i,l,c)}const o="new Date",f="String",r="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(a){a.length<3&&Pr("Missing arguments to clamp function."),a.length>3&&Pr("Too many arguments to clamp function.");const l=a.map(t);return"Math.max("+l[1]+", Math.min("+l[2]+","+l[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:o,date:e("getDate",o,0),day:e("getDay",o,0),year:e("getFullYear",o,0),month:e("getMonth",o,0),hours:e("getHours",o,0),minutes:e("getMinutes",o,0),seconds:e("getSeconds",o,0),milliseconds:e("getMilliseconds",o,0),time:e("getTime",o,0),timezoneoffset:e("getTimezoneOffset",o,0),utcdate:e("getUTCDate",o,0),utcday:e("getUTCDay",o,0),utcyear:e("getUTCFullYear",o,0),utcmonth:e("getUTCMonth",o,0),utchours:e("getUTCHours",o,0),utcminutes:e("getUTCMinutes",o,0),utcseconds:e("getUTCSeconds",o,0),utcmilliseconds:e("getUTCMilliseconds",o,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",f,0),lower:e("toLowerCase",f,0),substring:e("substring",f),split:e("split",f),trim:e("trim",f,0),regexp:r,test:e("test",r),if:function(a){a.length<3&&Pr("Missing arguments to if function."),a.length>3&&Pr("Too many arguments to if function.");const l=a.map(t);return"("+l[0]+"?"+l[1]+":"+l[2]+")"}}}function fue(t){const n=t&&t.length-1;return n&&(t[0]==='"'&&t[n]==='"'||t[0]==="'"&&t[n]==="'")?t.slice(1,-1):t}function cj(t){t=t||{};const n=t.allowed?uf(t.allowed):{},e=t.forbidden?uf(t.forbidden):{},o=t.constants||lj,f=(t.functions||uj)(u),r=t.globalvar,a=t.fieldvar,l=ga(r)?r:m=>`${r}["${m}"]`;let c={},i={},s=0;function u(m){if(bi(m))return m;const g=d[m.type];return g==null&&Pr("Unsupported type: "+m.type),g(m)}const d={Literal:m=>m.raw,Identifier:m=>{const g=m.name;return s>0?g:qi(e,g)?Pr("Illegal identifier: "+g):qi(o,g)?o[g]:qi(n,g)?g:(c[g]=1,l(g))},MemberExpression:m=>{const g=!m.computed,p=u(m.object);g&&(s+=1);const v=u(m.property);return p===a&&(i[fue(v)]=1),g&&(s-=1),p+(g?"."+v:"["+v+"]")},CallExpression:m=>{m.callee.type!=="Identifier"&&Pr("Illegal callee type: "+m.callee.type);const g=m.callee.name,p=m.arguments,v=qi(f,g)&&f[g];return v||Pr("Unrecognized function: "+g),ga(v)?v(p):v+"("+p.map(u).join(",")+")"},ArrayExpression:m=>"["+m.elements.map(u).join(",")+"]",BinaryExpression:m=>"("+u(m.left)+" "+m.operator+" "+u(m.right)+")",UnaryExpression:m=>"("+m.operator+u(m.argument)+")",ConditionalExpression:m=>"("+u(m.test)+"?"+u(m.consequent)+":"+u(m.alternate)+")",LogicalExpression:m=>"("+u(m.left)+m.operator+u(m.right)+")",ObjectExpression:m=>"{"+m.properties.map(u).join(",")+"}",Property:m=>{s+=1;const g=u(m.key);return s-=1,g+":"+u(m.value)}};function h(m){const g={code:u(m),globals:Object.keys(c),fields:Object.keys(i)};return c={},i={},g}return h.functions=f,h.constants=o,h}const US="intersect",fL="union",hue="vlMulti",due="vlPoint",hL="or",pue="and",Pf="_vgsid_",sy=Lu(Pf),gue="E",mue="R",vue="R-E",yue="R-LE",xue="R-RE",y2="index:unit";function dL(t,n){for(var e=n.fields,o=n.values,f=e.length,r=0,a,l;rpa(n.fields?{values:n.fields.map(o=>(o.getter||(o.getter=Lu(o.field)))(e.datum))}:{[Pf]:sy(e.datum)},n))}function Aue(t,n,e,o){for(var f=this.context.data[t],r=f?f.values.value:[],a={},l={},c={},i,s,u,d,h,m,g,p,v,y,x=r.length,w=0,k,b;w(T[s[S].field]=_,T),{})))}else h=Pf,m=sy(i),g=a[h]||(a[h]={}),p=g[d]||(g[d]=[]),p.push(m),e&&(p=l[d]||(l[d]=[]),p.push({[Pf]:m}));if(n=n||fL,a[Pf]?a[Pf]=w4["".concat(Pf,"_").concat(n)](...Object.values(a[Pf])):Object.keys(a).forEach(T=>{a[T]=Object.keys(a[T]).map(_=>a[T][_]).reduce((_,S)=>_===void 0?S:w4["".concat(c[T],"_").concat(n)](_,S))}),r=Object.keys(l),e&&r.length){const T=o?due:hue;a[T]=n===fL?{[hL]:r.reduce((_,S)=>(_.push(...l[S]),_),[])}:{[pue]:r.map(_=>({[hL]:l[_]}))}}return a}var w4={["".concat(Pf,"_union")]:aY,["".concat(Pf,"_intersect")]:rY,E_union:function(t,n){if(!t.length)return n;for(var e=0,o=n.length;en.indexOf(e)>=0):n},R_union:function(t,n){var e=Rl(n[0]),o=Rl(n[1]);return e>o&&(e=n[1],o=n[0]),t.length?(t[0]>e&&(t[0]=e),t[1]o&&(e=n[1],o=n[0]),t.length?oo&&(t[1]=o),t):[e,o]}};const Mue=":",Sue="@";function VS(t,n,e,o){n[0].type!==M0&&Pr("First argument to selection functions must be a string literal.");const f=n[0].value,r=n.length>=2&&Na(n).value,a="unit",l=Sue+a,c=Mue+f;r===US&&!qi(o,l)&&(o[l]=e.getData(f).indataRef(e,a)),qi(o,c)||(o[c]=e.getData(f).tuplesRef())}function hj(t){const n=this.context.data[t];return n?n.values.value:[]}function Eue(t,n,e){const o=this.context.data[t]["index:"+n],f=o?o.value.get(e):void 0;return f&&f.count}function Cue(t,n){const e=this.context.dataflow,o=this.context.data[t],f=o.input;return e.pulse(f,e.changeset().remove(mc).insert(n)),1}function Oue(t,n,e){if(t){const o=this.context.dataflow,f=t.mark.source;o.pulse(f,o.changeset().encode(t,n))}return e!==void 0?e:t}const Jy=t=>function(n,e){return this.context.dataflow.locale()[t](e)(n)},Lue=Jy("format"),dj=Jy("timeFormat"),Pue=Jy("utcFormat"),Due=Jy("timeParse"),Iue=Jy("utcParse"),_b=new Date(2e3,0,1);function Vw(t,n,e){return!Number.isInteger(t)||!Number.isInteger(n)?"":(_b.setYear(2e3),_b.setMonth(t),_b.setDate(n),dj.call(this,_b,e))}function zue(t){return Vw.call(this,t,1,"%B")}function Rue(t){return Vw.call(this,t,1,"%b")}function Fue(t){return Vw.call(this,0,2+t,"%A")}function Nue(t){return Vw.call(this,0,2+t,"%a")}const Bue=":",jue="@",AT="%",pj="$";function qS(t,n,e,o){n[0].type!==M0&&Pr("First argument to data functions must be a string literal.");const f=n[0].value,r=Bue+f;if(!qi(r,o))try{o[r]=e.getData(f).tuplesRef()}catch{}}function Uue(t,n,e,o){n[0].type!==M0&&Pr("First argument to indata must be a string literal."),n[1].type!==M0&&Pr("Second argument to indata must be a string literal.");const f=n[0].value,r=n[1].value,a=jue+r;qi(a,o)||(o[a]=e.getData(f).indataRef(e,r))}function Su(t,n,e,o){if(n[0].type===M0)pL(e,o,n[0].value);else for(t in e.scales)pL(e,o,t)}function pL(t,n,e){const o=AT+e;if(!qi(n,o))try{n[o]=t.scaleRef(e)}catch{}}function Jh(t,n){let e;return ga(t)?t:bi(t)?(e=n.scales[t])&&e.value:void 0}function Vue(t,n,e){n.__bandwidth=f=>f&&f.bandwidth?f.bandwidth():0,e._bandwidth=Su,e._range=Su,e._scale=Su;const o=f=>"_["+(f.type===M0?oi(AT+f.value):oi(AT)+"+"+t(f))+"]";return{_bandwidth:f=>"this.__bandwidth(".concat(o(f[0]),")"),_range:f=>"".concat(o(f[0]),".range()"),_scale:f=>"".concat(o(f[0]),"(").concat(t(f[1]),")")}}function HS(t,n){return function(e,o,f){if(e){const r=Jh(e,(f||this).context);return r&&r.path[t](o)}else return n(o)}}const que=HS("area",pre),Hue=HS("bounds",yre),$ue=HS("centroid",Tre);function Gue(t){const n=this.context.group;let e=!1;if(n)for(;t;){if(t===n){e=!0;break}t=t.mark.group}return e}function $S(t,n,e){try{t[n].apply(t,["EXPRESSION"].concat([].slice.call(e)))}catch(o){t.warn(o)}return e[e.length-1]}function Wue(){return $S(this.context.dataflow,"warn",arguments)}function Yue(){return $S(this.context.dataflow,"info",arguments)}function Xue(){return $S(this.context.dataflow,"debug",arguments)}function k4(t){const n=t/255;return n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}function MT(t){const n=f_(t),e=k4(n.r),o=k4(n.g),f=k4(n.b);return .2126*e+.7152*o+.0722*f}function Zue(t,n){const e=MT(t),o=MT(n),f=Math.max(e,o),r=Math.min(e,o);return(f+.05)/(r+.05)}function Jue(){const t=[].slice.call(arguments);return t.unshift({}),pa(...t)}function gj(t,n){return t===n||t!==t&&n!==n?!0:Ir(t)?Ir(n)&&t.length===n.length?Kue(t,n):!1:Ei(t)&&Ei(n)?mj(t,n):!1}function Kue(t,n){for(let e=0,o=t.length;emj(t,n)}function Que(t,n,e,o,f,r){const a=this.context.dataflow,l=this.context.data[t],c=l.input,i=a.stamp();let s=l.changes,u,d;if(a._trigger===!1||!(c.value.length||n||o))return 0;if((!s||s.stamp{l.modified=!0,a.pulse(c,s).run()},!0,1)),e&&(u=e===!0?mc:Ir(e)||nw(e)?e:gL(e),s.remove(u)),n&&s.insert(n),o&&(u=gL(o),c.value.some(u)?s.remove(u):s.insert(o)),f)for(d in r)s.modify(f,d,r[d]);return 1}function ece(t){const n=t.touches,e=n[0].clientX-n[1].clientX,o=n[0].clientY-n[1].clientY;return Math.sqrt(e*e+o*o)}function tce(t){const n=t.touches;return Math.atan2(n[0].clientY-n[1].clientY,n[0].clientX-n[1].clientX)}const mL={};function nce(t,n){const e=mL[n]||(mL[n]=Lu(n));return Ir(t)?t.map(e):e(t)}function GS(t){return Ir(t)||ArrayBuffer.isView(t)?t:null}function WS(t){return GS(t)||(bi(t)?t:null)}function rce(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),o=1;o1?n-1:0),o=1;o1?n-1:0),o=1;o1?n-1:0),o=1;or.stop(i(s),t(s))),r}function vce(t,n,e){const o=Jh(t,(e||this).context);return function(f){return o?o.path.context(f)(n):""}}function yce(t){let n=null;return function(e){return e?Jv(e,n=n||pm(t)):t}}const vj=t=>t.data;function yj(t,n){const e=hj.call(n,t);return e.root&&e.root.lookup||{}}function xce(t,n,e){const o=yj(t,this),f=o[n],r=o[e];return f&&r?f.path(r).map(vj):void 0}function bce(t,n){const e=yj(t,this)[n];return e?e.ancestors().map(vj):void 0}const xj=()=>typeof window<"u"&&window||null;function _ce(){const t=xj();return t?t.screen:{}}function wce(){const t=xj();return t?[t.innerWidth,t.innerHeight]:[void 0,void 0]}function kce(){const t=this.context.dataflow,n=t.container&&t.container();return n?[n.clientWidth,n.clientHeight]:[void 0,void 0]}function bj(t,n,e){if(!t)return[];const[o,f]=t,r=new zs().set(o[0],o[1],f[0],f[1]),a=e||this.context.dataflow.scenegraph().root;return oN(a,r,Tce(n))}function Tce(t){let n=null;if(t){const e=ki(t.marktype),o=ki(t.markname);n=f=>(!e.length||e.some(r=>f.marktype===r))&&(!o.length||o.some(r=>f.name===r))}return n}function Ace(t,n,e){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5;const f=t[t.length-1];return f===void 0||Math.sqrt((f[0]-n)**2+(f[1]-e)**2)>o?(t.push([n,e]),[...t]):t}function Mce(t){return(t??[]).reduce((n,e,o)=>{let[f,r]=e;return n+=o==0?"M ".concat(f,",").concat(r," "):o===t.length-1?" Z":"L ".concat(f,",").concat(r," ")},"")}function Sce(t,n,e){const{x:o,y:f,mark:r}=e,a=new zs().set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);for(const[c,i]of n)ca.x2&&(a.x2=c),ia.y2&&(a.y2=i);return a.translate(o,f),bj([[a.x1,a.y1],[a.x2,a.y2]],t,r).filter(c=>Ece(c.x,c.y,n))}function Ece(t,n,e){let o=0;for(let f=0,r=e.length-1;fn!=l>n&&t<(a-c)*(n-i)/(l-i)+c&&o++}return o&1}const ly={random(){return yc()},cumulativeNormal:sw,cumulativeLogNormal:s6,cumulativeUniform:f6,densityNormal:n6,densityLogNormal:o6,densityUniform:c6,quantileNormal:lw,quantileLogNormal:l6,quantileUniform:h6,sampleNormal:ow,sampleLogNormal:a6,sampleUniform:u6,isArray:Ir,isBoolean:hp,isDate:Bd,isDefined(t){return t!==void 0},isNumber:wo,isObject:Ei,isRegExp:hI,isString:bi,isTuple:nw,isValid(t){return t!=null&&t===t},toBoolean:PA,toDate(t){return DA(t)},toNumber:Rl,toString:IA,indexof:ice,join:rce,lastindexof:ace,replace:sce,reverse:lce,slice:oce,flush:cI,lerp:dI,merge:Jue,pad:mI,peek:Na,pluck:nce,span:My,inrange:Gg,truncate:vI,rgb:f_,lab:M_,hcl:S_,hsl:ek,luminance:MT,contrast:Zue,sequence:Ju,format:Lue,utcFormat:Pue,utcParse:Iue,utcOffset:qI,utcSequence:GI,timeFormat:dj,timeParse:Due,timeOffset:VI,timeSequence:$I,timeUnitSpecifier:LI,monthFormat:zue,monthAbbrevFormat:Rue,dayFormat:Fue,dayAbbrevFormat:Nue,quarter:oI,utcquarter:sI,week:DI,utcweek:RI,dayofyear:PI,utcdayofyear:zI,warn:Wue,info:Yue,debug:Xue,extent(t){return Zf(t)},inScope:Gue,intersect:bj,clampRange:lI,pinchDistance:ece,pinchAngle:tce,screen:_ce,containerSize:kce,windowSize:wce,bandspace:uce,setdata:Cue,pathShape:yce,panLinear:nI,panLog:rI,panPow:iI,panSymlog:aI,zoomLinear:MA,zoomLog:SA,zoomPow:g_,zoomSymlog:EA,encode:Oue,modify:Que,lassoAppend:Ace,lassoPath:Mce,intersectLasso:Sce},Cce=["view","item","group","xy","x","y"],Oce="event.vega.",_j="this.",YS={},wj={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:t=>"_[".concat(oi(pj+t),"]"),functions:Lce,constants:lj,visitors:YS},ST=cj(wj);function Lce(t){const n=uj(t);Cce.forEach(e=>n[e]=Oce+e);for(const e in ly)n[e]=_j+e;return pa(n,Vue(t,ly,YS)),n}function Fs(t,n,e){return arguments.length===1?ly[t]:(ly[t]=n,e&&(YS[t]=e),ST&&(ST.functions[t]=_j+t),this)}Fs("bandwidth",cce,Su);Fs("copy",fce,Su);Fs("domain",hce,Su);Fs("range",pce,Su);Fs("invert",dce,Su);Fs("scale",gce,Su);Fs("gradient",mce,Su);Fs("geoArea",que,Su);Fs("geoBounds",Hue,Su);Fs("geoCentroid",$ue,Su);Fs("geoShape",vce,Su);Fs("indata",Eue,Uue);Fs("data",hj,qS);Fs("treePath",xce,qS);Fs("treeAncestors",bce,qS);Fs("vlSelectionTest",bue,VS);Fs("vlSelectionIdTest",kue,VS);Fs("vlSelectionResolve",Aue,VS);Fs("vlSelectionTuples",Tue);function Qf(t,n){const e={};let o;try{t=bi(t)?t:oi(t)+"",o=jS(t)}catch{Pr("Expression parse error: "+t)}o.visit(r=>{if(r.type!==tj)return;const a=r.callee.name,l=wj.visitors[a];l&&l(a,r.arguments,n,e)});const f=ST(o);return f.globals.forEach(r=>{const a=pj+r;!qi(e,a)&&n.getSignal(r)&&(e[a]=n.signalRef(r))}),{$expr:pa({code:f.code},n.options.ast?{ast:o}:null),$fields:f.fields,$params:e}}function Pce(t){const n=this,e=t.operators||[];return t.background&&(n.background=t.background),t.eventConfig&&(n.eventConfig=t.eventConfig),t.locale&&(n.locale=t.locale),e.forEach(o=>n.parseOperator(o)),e.forEach(o=>n.parseOperatorParameters(o)),(t.streams||[]).forEach(o=>n.parseStream(o)),(t.updates||[]).forEach(o=>n.parseUpdate(o)),n.resolve()}const Dce=uf(["rule"]),vL=uf(["group","image","rect"]);function Ice(t,n){let e="";return Dce[n]||(t.x2&&(t.x?(vL[n]&&(e+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),e+="o.width=o.x2-o.x;"):e+="o.x=o.x2-(o.width||0);"),t.xc&&(e+="o.x=o.xc-(o.width||0)/2;"),t.y2&&(t.y?(vL[n]&&(e+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),e+="o.height=o.y2-o.y;"):e+="o.y=o.y2-(o.height||0);"),t.yc&&(e+="o.y=o.yc-(o.height||0)/2;")),e}function XS(t){return(t+"").toLowerCase()}function zce(t){return XS(t)==="operator"}function Rce(t){return XS(t)==="collect"}function $1(t,n,e){e[e.length-1]!==";"&&(e="return("+e+");");const o=Function(...n.concat(e));return t&&t.functions?o.bind(t.functions):o}function Fce(t,n,e,o){return"((u = ".concat(t,") < (v = ").concat(n,") || u == null) && v != null ? ").concat(e,` + : (u > v || v == null) && u != null ? `).concat(o,` + : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? `).concat(e,` + : v !== v && u === u ? `).concat(o," : ")}var Nce={operator:(t,n)=>$1(t,["_"],n.code),parameter:(t,n)=>$1(t,["datum","_"],n.code),event:(t,n)=>$1(t,["event"],n.code),handler:(t,n)=>{const e="var datum=event.item&&event.item.datum;return ".concat(n.code,";");return $1(t,["_","event"],e)},encode:(t,n)=>{const{marktype:e,channels:o}=n;let f="var o=item,datum=o.datum,m=0,$;";for(const r in o){const a="o["+oi(r)+"]";f+="$=".concat(o[r].code,";if(").concat(a,"!==$)").concat(a,"=$,m=1;")}return f+=Ice(o,e),f+="return m;",$1(t,["item","_"],f)},codegen:{get(t){const n="[".concat(t.map(oi).join("]["),"]"),e=Function("_","return _".concat(n,";"));return e.path=n,e},comparator(t,n){let e;const o=(r,a)=>{const l=n[a];let c,i;return r.path?(c="a".concat(r.path),i="b".concat(r.path)):((e=e||{})["f"+a]=r,c="this.f".concat(a,"(a)"),i="this.f".concat(a,"(b)")),Fce(c,i,-l,l)},f=Function("a","b","var u, v; return "+t.map(o).join("")+"0;");return e?f.bind(e):f}}};function Bce(t){const n=this;zce(t.type)||!t.type?n.operator(t,t.update?n.operatorExpression(t.update):null):n.transform(t,t.type)}function jce(t){const n=this;if(t.params){const e=n.get(t.id);e||Pr("Invalid operator id: "+t.id),n.dataflow.connect(e,e.parameters(n.parseParameters(t.params),t.react,t.initonly))}}function Uce(t,n){n=n||{};const e=this;for(const o in t){const f=t[o];n[o]=Ir(f)?f.map(r=>yL(r,e,n)):yL(f,e,n)}return n}function yL(t,n,e){if(!t||!Ei(t))return t;for(let o=0,f=xL.length,r;of&&f.$tupleid?$i:f);return n.fn[e]||(n.fn[e]=CA(o,t.$order,n.expr.codegen))}function Wce(t,n){const e=t.$encode,o={};for(const f in e){const r=e[f];o[f]=Nu(n.encodeExpression(r.$expr),r.$fields),o[f].output=r.$output}return o}function Yce(t,n){return n}function Xce(t,n){const e=t.$subflow;return function(o,f,r){const a=n.fork().parse(e),l=a.get(e.operators[0].id),c=a.signals.parent;return c&&c.set(r),l.detachSubflow=()=>n.detach(a),l}}function Zce(){return $i}function Jce(t){var n=this,e=t.filter!=null?n.eventExpression(t.filter):void 0,o=t.stream!=null?n.get(t.stream):void 0,f;t.source?o=n.events(t.source,t.type,e):t.merge&&(f=t.merge.map(r=>n.get(r)),o=f[0].merge.apply(f[0],f.slice(1))),t.between&&(f=t.between.map(r=>n.get(r)),o=o.between(f[0],f[1])),t.filter&&(o=o.filter(e)),t.throttle!=null&&(o=o.throttle(+t.throttle)),t.debounce!=null&&(o=o.debounce(+t.debounce)),o==null&&Pr("Invalid stream definition: "+JSON.stringify(t)),t.consume&&o.consume(!0),n.stream(t,o)}function Kce(t){var n=this,e=Ei(e=t.source)?e.$ref:e,o=n.get(e),f=null,r=t.update,a=void 0;o||Pr("Source not defined: "+t.source),f=t.target&&t.target.$expr?n.eventExpression(t.target.$expr):n.get(t.target),r&&r.$expr&&(r.$params&&(a=n.parseParameters(r.$params)),r=n.handlerExpression(r.$expr)),n.update(t,o,f,r,a)}const Qce={skip:!0};function efe(t){var n=this,e={};if(t.signals){var o=e.signals={};Object.keys(n.signals).forEach(r=>{const a=n.signals[r];t.signals(r,a)&&(o[r]=a.value)})}if(t.data){var f=e.data={};Object.keys(n.data).forEach(r=>{const a=n.data[r];t.data(r,a)&&(f[r]=a.input.value)})}return n.subcontext&&t.recurse!==!1&&(e.subcontext=n.subcontext.map(r=>r.getState(t))),e}function tfe(t){var n=this,e=n.dataflow,o=t.data,f=t.signals;Object.keys(f||{}).forEach(r=>{e.update(n.signals[r],f[r],Qce)}),Object.keys(o||{}).forEach(r=>{e.pulse(n.data[r].input,e.changeset().remove(mc).insert(o[r]))}),(t.subcontext||[]).forEach((r,a)=>{const l=n.subcontext[a];l&&l.setState(r)})}function kj(t,n,e,o){return new Tj(t,n,e,o)}function Tj(t,n,e,o){this.dataflow=t,this.transforms=n,this.events=t.events.bind(t),this.expr=o||Nce,this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},e&&(this.functions=Object.create(e),this.functions.context=this)}function bL(t){this.dataflow=t.dataflow,this.transforms=t.transforms,this.events=t.events,this.expr=t.expr,this.signals=Object.create(t.signals),this.scales=Object.create(t.scales),this.nodes=Object.create(t.nodes),this.data=Object.create(t.data),this.fn=Object.create(t.fn),t.functions&&(this.functions=Object.create(t.functions),this.functions.context=this)}Tj.prototype=bL.prototype={fork(){const t=new bL(this);return(this.subcontext||(this.subcontext=[])).push(t),t},detach(t){this.subcontext=this.subcontext.filter(e=>e!==t);const n=Object.keys(t.nodes);for(const e of n)t.nodes[e]._targets=null;for(const e of n)t.nodes[e].detach();t.nodes=null},get(t){return this.nodes[t]},set(t,n){return this.nodes[t]=n},add(t,n){const e=this,o=e.dataflow,f=t.value;if(e.set(t.id,n),Rce(t.type)&&f&&(f.$ingest?o.ingest(n,f.$ingest,f.$format):f.$request?o.preload(n,f.$request,f.$format):o.pulse(n,o.changeset().insert(f))),t.root&&(e.root=n),t.parent){let r=e.get(t.parent.$ref);r?(o.connect(r,[n]),n.targets().add(r)):(e.unresolved=e.unresolved||[]).push(()=>{r=e.get(t.parent.$ref),o.connect(r,[n]),n.targets().add(r)})}if(t.signal&&(e.signals[t.signal]=n),t.scale&&(e.scales[t.scale]=n),t.data)for(const r in t.data){const a=e.data[r]||(e.data[r]={});t.data[r].forEach(l=>a[l]=n)}},resolve(){return(this.unresolved||[]).forEach(t=>t()),delete this.unresolved,this},operator(t,n){this.add(t,this.dataflow.add(t.value,n))},transform(t,n){this.add(t,this.dataflow.add(this.transforms[XS(n)]))},stream(t,n){this.set(t.id,n)},update(t,n,e,o,f){this.dataflow.on(n,e,o,f,t.options)},operatorExpression(t){return this.expr.operator(this,t)},parameterExpression(t){return this.expr.parameter(this,t)},eventExpression(t){return this.expr.event(this,t)},handlerExpression(t){return this.expr.handler(this,t)},encodeExpression(t){return this.expr.encode(this,t)},parse:Pce,parseOperator:Bce,parseOperatorParameters:jce,parseParameters:Uce,parseStream:Jce,parseUpdate:Kce,getState:efe,setState:tfe};function nfe(t){const n=t.container();n&&(n.setAttribute("role","graphics-document"),n.setAttribute("aria-roleDescription","visualization"),Aj(n,t.description()))}function Aj(t,n){t&&(n==null?t.removeAttribute("aria-label"):t.setAttribute("aria-label",n))}function rfe(t){t.add(null,n=>(t._background=n.bg,t._resize=1,n.bg),{bg:t._signals.background})}const T4="default";function ife(t){const n=t._signals.cursor||(t._signals.cursor=t.add({user:T4,item:null}));t.on(t.events("view","mousemove"),n,(e,o)=>{const f=n.value,r=f?bi(f)?f:f.user:T4,a=o.item&&o.item.cursor||null;return f&&r===f.user&&a==f.item?f:{user:r,item:a}}),t.add(null,function(e){let o=e.cursor,f=this.value;return bi(o)||(f=o.item,o=o.user),ET(t,o&&o!==T4?o:f||o),f},{cursor:n})}function ET(t,n){const e=t.globalCursor()?typeof document<"u"&&document.body:t.container();if(e)return n==null?e.style.removeProperty("cursor"):e.style.cursor=n}function x2(t,n){var e=t._runtime.data;return qi(e,n)||Pr("Unrecognized data set: "+n),e[n]}function afe(t,n){return arguments.length<2?x2(this,t).values.value:qw.call(this,t,H0().remove(mc).insert(n))}function qw(t,n){xz(n)||Pr("Second argument to changes must be a changeset.");const e=x2(this,t);return e.modified=!0,this.pulse(e.input,n)}function ofe(t,n){return qw.call(this,t,H0().insert(n))}function sfe(t,n){return qw.call(this,t,H0().remove(n))}function Mj(t){var n=t.padding();return Math.max(0,t._viewWidth+n.left+n.right)}function Sj(t){var n=t.padding();return Math.max(0,t._viewHeight+n.top+n.bottom)}function Hw(t){var n=t.padding(),e=t._origin;return[n.left+e[0],n.top+e[1]]}function lfe(t){var n=Hw(t),e=Mj(t),o=Sj(t);t._renderer.background(t.background()),t._renderer.resize(e,o,n),t._handler.origin(n),t._resizeListeners.forEach(f=>{try{f(e,o)}catch(r){t.error(r)}})}function ufe(t,n,e){var o=t._renderer,f=o&&o.canvas(),r,a,l;return f&&(l=Hw(t),a=n.changedTouches?n.changedTouches[0]:n,r=Ow(a,f),r[0]-=l[0],r[1]-=l[1]),n.dataflow=t,n.item=e,n.vega=cfe(t,e,r),n}function cfe(t,n,e){const o=n?n.mark.marktype==="group"?n:n.mark.group:null;function f(a){var l=o,c;if(a){for(c=n;c;c=c.mark.group)if(c.mark.name===a){l=c;break}}return l&&l.mark&&l.mark.interactive?l:{}}function r(a){if(!a)return e;bi(a)&&(a=f(a));const l=e.slice();for(;a;)l[0]-=a.x||0,l[1]-=a.y||0,a=a.mark&&a.mark.group;return l}return{view:$l(t),item:$l(n||{}),group:f,xy:r,x:a=>r(a)[0],y:a=>r(a)[1]}}const _L="view",ffe="timer",hfe="window",dfe={trap:!1};function pfe(t){const n=pa({defaults:{}},t),e=(o,f)=>{f.forEach(r=>{Ir(o[r])&&(o[r]=uf(o[r]))})};return e(n.defaults,["prevent","allow"]),e(n,["view","window","selector"]),n}function Ej(t,n,e,o){t._eventListeners.push({type:e,sources:ki(n),handler:o})}function gfe(t,n){var e=t._eventConfig.defaults,o=e.prevent,f=e.allow;return o===!1||f===!0?!1:o===!0||f===!1?!0:o?o[n]:f?!f[n]:t.preventDefault()}function wb(t,n,e){const o=t._eventConfig&&t._eventConfig[n];return o===!1||Ei(o)&&!o[e]?(t.warn("Blocked ".concat(n," ").concat(e," event listener.")),!1):!0}function mfe(t,n,e){var o=this,f=new aw(e),r=function(i,s){o.runAsync(null,()=>{t===_L&&gfe(o,n)&&i.preventDefault(),f.receive(ufe(o,i,s))})},a;if(t===ffe)wb(o,"timer",n)&&o.timer(r,n);else if(t===_L)wb(o,"view",n)&&o.addEventListener(n,r,dfe);else if(t===hfe?wb(o,"window",n)&&typeof window<"u"&&(a=[window]):typeof document<"u"&&wb(o,"selector",n)&&(a=document.querySelectorAll(t)),!a)o.warn("Can not resolve event source: "+t);else{for(var l=0,c=a.length;l=0;)n[o].stop();for(o=e.length;--o>=0;)for(r=e[o],f=r.sources.length;--f>=0;)r.sources[f].removeEventListener(r.type,r.handler);return t&&t.call(this,this._handler,null,null,null),this}function Ku(t,n,e){const o=document.createElement(t);for(const f in n)o.setAttribute(f,n[f]);return e!=null&&(o.textContent=e),o}const xfe="vega-bind",bfe="vega-bind-name",_fe="vega-bind-radio";function wfe(t,n,e){if(!n)return;const o=e.param;let f=e.state;return f||(f=e.state={elements:null,active:!1,set:null,update:a=>{a!=t.signal(o.signal)&&t.runAsync(null,()=>{f.source=!0,t.signal(o.signal,a)})}},o.debounce&&(f.update=OA(o.debounce,f.update))),(o.input==null&&o.element?kfe:Afe)(f,n,o,t),f.active||(t.on(t._signals[o.signal],null,()=>{f.source?f.source=!1:f.set(t.signal(o.signal))}),f.active=!0),f}function kfe(t,n,e,o){const f=e.event||"input",r=()=>t.update(n.value);o.signal(e.signal,n.value),n.addEventListener(f,r),Ej(o,n,f,r),t.set=a=>{n.value=a,n.dispatchEvent(Tfe(f))}}function Tfe(t){return typeof Event<"u"?new Event(t):{type:t}}function Afe(t,n,e,o){const f=o.signal(e.signal),r=Ku("div",{class:xfe}),a=e.input==="radio"?r:r.appendChild(Ku("label"));a.appendChild(Ku("span",{class:bfe},e.name||e.signal)),n.appendChild(r);let l=Mfe;switch(e.input){case"checkbox":l=Sfe;break;case"select":l=Efe;break;case"radio":l=Cfe;break;case"range":l=Ofe;break}l(t,a,e,f)}function Mfe(t,n,e,o){const f=Ku("input");for(const r in e)r!=="signal"&&r!=="element"&&f.setAttribute(r==="input"?"type":r,e[r]);f.setAttribute("name",e.signal),f.value=o,n.appendChild(f),f.addEventListener("input",()=>t.update(f.value)),t.elements=[f],t.set=r=>f.value=r}function Sfe(t,n,e,o){const f={type:"checkbox",name:e.signal};o&&(f.checked=!0);const r=Ku("input",f);n.appendChild(r),r.addEventListener("change",()=>t.update(r.checked)),t.elements=[r],t.set=a=>r.checked=!!a||null}function Efe(t,n,e,o){const f=Ku("select",{name:e.signal}),r=e.labels||[];e.options.forEach((a,l)=>{const c={value:a};b2(a,o)&&(c.selected=!0),f.appendChild(Ku("option",c,(r[l]||a)+""))}),n.appendChild(f),f.addEventListener("change",()=>{t.update(e.options[f.selectedIndex])}),t.elements=[f],t.set=a=>{for(let l=0,c=e.options.length;l{const c={type:"radio",name:e.signal,value:a};b2(a,o)&&(c.checked=!0);const i=Ku("input",c);i.addEventListener("change",()=>t.update(a));const s=Ku("label",{},(r[l]||a)+"");return s.prepend(i),f.appendChild(s),i}),t.set=a=>{const l=t.elements,c=l.length;for(let i=0;i{c.textContent=l.value,t.update(+l.value)};l.addEventListener("input",i),l.addEventListener("change",i),t.elements=[l],t.set=s=>{l.value=s,c.textContent=s}}function b2(t,n){return t===n||t+""==n+""}function Cj(t,n,e,o,f,r){return n=n||new o(t.loader()),n.initialize(e,Mj(t),Sj(t),Hw(t),f,r).background(t.background())}function ZS(t,n){return n?function(){try{n.apply(this,arguments)}catch(e){t.error(e)}}:null}function Lfe(t,n,e,o){const f=new o(t.loader(),ZS(t,t.tooltip())).scene(t.scenegraph().root).initialize(e,Hw(t),t);return n&&n.handlers().forEach(r=>{f.on(r.type,r.handler)}),f}function Pfe(t,n){const e=this,o=e._renderType,f=e._eventConfig.bind,r=Lw(o);t=e._el=t?A4(e,t,!0):null,nfe(e),r||e.error("Unrecognized renderer type: "+o);const a=r.handler||qy,l=t?r.renderer:r.headless;return e._renderer=l?Cj(e,e._renderer,t,l):null,e._handler=Lfe(e,e._handler,t,a),e._redraw=!0,t&&f!=="none"&&(n=n?e._elBind=A4(e,n,!0):t.appendChild(Ku("form",{class:"vega-bindings"})),e._bind.forEach(c=>{c.param.element&&f!=="container"&&(c.element=A4(e,c.param.element,!!c.param.input))}),e._bind.forEach(c=>{wfe(e,c.element||n,c)})),e}function A4(t,n,e){if(typeof n=="string")if(typeof document<"u"){if(n=document.querySelector(n),!n)return t.error("Signal bind element not found: "+n),null}else return t.error("DOM document instance not found."),null;if(n&&e)try{n.textContent=""}catch(o){n=null,t.error(o)}return n}const G1=t=>+t||0,Dfe=t=>({top:t,bottom:t,left:t,right:t});function AL(t){return Ei(t)?{top:G1(t.top),bottom:G1(t.bottom),left:G1(t.left),right:G1(t.right)}:Dfe(G1(t))}async function JS(t,n,e,o){const f=Lw(n),r=f&&f.headless;return r||Pr("Unrecognized renderer type: "+n),await t.runAsync(),Cj(t,null,null,r,e,o).renderAsync(t._scenegraph.root)}async function Ife(t,n){t!==Ld.Canvas&&t!==Ld.SVG&&t!==Ld.PNG&&Pr("Unrecognized image type: "+t);const e=await JS(this,t,n);return t===Ld.SVG?zfe(e.svg(),"image/svg+xml"):e.canvas().toDataURL("image/png")}function zfe(t,n){const e=new Blob([t],{type:n});return window.URL.createObjectURL(e)}async function Rfe(t,n){return(await JS(this,Ld.Canvas,t,n)).canvas()}async function Ffe(t){return(await JS(this,Ld.SVG,t)).svg()}function Nfe(t,n,e){return kj(t,um,ly,e).parse(n)}function Bfe(t){var n=this._runtime.scales;return qi(n,t)||Pr("Unrecognized scale or projection: "+t),n[t].value}var Oj="width",Lj="height",KS="padding",ML={skip:!0};function Pj(t,n){var e=t.autosize(),o=t.padding();return n-(e&&e.contains===KS?o.left+o.right:0)}function Dj(t,n){var e=t.autosize(),o=t.padding();return n-(e&&e.contains===KS?o.top+o.bottom:0)}function jfe(t){var n=t._signals,e=n[Oj],o=n[Lj],f=n[KS];function r(){t._autosize=t._resize=1}t._resizeWidth=t.add(null,l=>{t._width=l.size,t._viewWidth=Pj(t,l.size),r()},{size:e}),t._resizeHeight=t.add(null,l=>{t._height=l.size,t._viewHeight=Dj(t,l.size),r()},{size:o});const a=t.add(null,r,{pad:f});t._resizeWidth.rank=e.rank+1,t._resizeHeight.rank=o.rank+1,a.rank=f.rank+1}function Ufe(t,n,e,o,f,r){this.runAfter(a=>{let l=0;a._autosize=0,a.width()!==e&&(l=1,a.signal(Oj,e,ML),a._resizeWidth.skip(!0)),a.height()!==o&&(l=1,a.signal(Lj,o,ML),a._resizeHeight.skip(!0)),a._viewWidth!==t&&(a._resize=1,a._viewWidth=t),a._viewHeight!==n&&(a._resize=1,a._viewHeight=n),(a._origin[0]!==f[0]||a._origin[1]!==f[1])&&(a._resize=1,a._origin=f),l&&a.run("enter"),r&&a.runAfter(c=>c.resize())},!1,1)}function Vfe(t){return this._runtime.getState(t||{data:qfe,signals:Hfe,recurse:!0})}function qfe(t,n){return n.modified&&Ir(n.input.value)&&t.indexOf("_:vega:_")}function Hfe(t,n){return!(t==="parent"||n instanceof um.proxy)}function $fe(t){return this.runAsync(null,n=>{n._trigger=!1,n._runtime.setState(t)},n=>{n._trigger=!0}),this}function Gfe(t,n){function e(o){t({timestamp:Date.now(),elapsed:o})}this._timers.push(Aae(e,n))}function Wfe(t,n,e,o){const f=t.element();f&&f.setAttribute("title",Yfe(o))}function Yfe(t){return t==null?"":Ir(t)?Ij(t):Ei(t)&&!Bd(t)?Xfe(t):t+""}function Xfe(t){return Object.keys(t).map(n=>{const e=t[n];return n+": "+(Ir(e)?Ij(e):zj(e))}).join(` +`)}function Ij(t){return"["+t.map(zj).join(", ")+"]"}function zj(t){return Ir(t)?"[\u2026]":Ei(t)&&!Bd(t)?"{\u2026}":t}function Rj(t,n){const e=this;if(n=n||{},Kg.call(e),n.loader&&e.loader(n.loader),n.logger&&e.logger(n.logger),n.logLevel!=null&&e.logLevel(n.logLevel),n.locale||t.locale){const r=pa({},t.locale,n.locale);e.locale(uz(r.number,r.time))}e._el=null,e._elBind=null,e._renderType=n.renderer||Ld.Canvas,e._scenegraph=new PM;const o=e._scenegraph.root;e._renderer=null,e._tooltip=n.tooltip||Wfe,e._redraw=!0,e._handler=new qy().scene(o),e._globalCursor=!1,e._preventDefault=!1,e._timers=[],e._eventListeners=[],e._resizeListeners=[],e._eventConfig=pfe(t.eventConfig),e.globalCursor(e._eventConfig.globalCursor);const f=Nfe(e,t,n.expr);e._runtime=f,e._signals=f.signals,e._bind=(t.bindings||[]).map(r=>({state:null,param:pa({},r)})),f.root&&f.root.set(o),o.source=f.data.root.input,e.pulse(f.data.root.input,e.changeset().insert(o.items)),e._width=e.width(),e._height=e.height(),e._viewWidth=Pj(e,e._width),e._viewHeight=Dj(e,e._height),e._origin=[0,0],e._resize=0,e._autosize=1,jfe(e),rfe(e),ife(e),e.description(t.description),n.hover&&e.hover(),n.container&&e.initialize(n.container,n.bind)}function kb(t,n){return qi(t._signals,n)?t._signals[n]:Pr("Unrecognized signal name: "+oi(n))}function Fj(t,n){const e=(t._targets||[]).filter(o=>o._update&&o._update.handler===n);return e.length?e[0]:null}function SL(t,n,e,o){let f=Fj(e,o);return f||(f=ZS(t,()=>o(n,e.value)),f.handler=o,t.on(e,null,f)),t}function EL(t,n,e){const o=Fj(n,e);return o&&n._targets.remove(o),t}ni(Rj,Kg,{async evaluate(t,n,e){if(await Kg.prototype.evaluate.call(this,t,n),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,lfe(this)),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(o){this.error(o)}return e&&Ub(this,e),this},dirty(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)},description(t){if(arguments.length){const n=t!=null?t+"":null;return n!==this._desc&&Aj(this._el,this._desc=n),this}return this._desc},container(){return this._el},scenegraph(){return this._scenegraph},origin(){return this._origin.slice()},signal(t,n,e){const o=kb(this,t);return arguments.length===1?o.value:this.update(o,n,e)},width(t){return arguments.length?this.signal("width",t):this.signal("width")},height(t){return arguments.length?this.signal("height",t):this.signal("height")},padding(t){return arguments.length?this.signal("padding",AL(t)):AL(this.signal("padding"))},autosize(t){return arguments.length?this.signal("autosize",t):this.signal("autosize")},background(t){return arguments.length?this.signal("background",t):this.signal("background")},renderer(t){return arguments.length?(Lw(t)||Pr("Unrecognized renderer type: "+t),t!==this._renderType&&(this._renderType=t,this._resetRenderer()),this):this._renderType},tooltip(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,this._resetRenderer()),this):this._tooltip},loader(t){return arguments.length?(t!==this._loader&&(Kg.prototype.loader.call(this,t),this._resetRenderer()),this):this._loader},resize(){return this._autosize=1,this.touch(kb(this,"autosize"))},_resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},_resizeView:Ufe,addEventListener(t,n,e){let o=n;return e&&e.trap===!1||(o=ZS(this,n),o.raw=n),this._handler.on(t,o),this},removeEventListener(t,n){for(var e=this._handler.handlers(t),o=e.length,f,r;--o>=0;)if(r=e[o].type,f=e[o].handler,t===r&&(n===f||n===f.raw)){this._handler.off(r,f);break}return this},addResizeListener(t){const n=this._resizeListeners;return n.indexOf(t)<0&&n.push(t),this},removeResizeListener(t){var n=this._resizeListeners,e=n.indexOf(t);return e>=0&&n.splice(e,1),this},addSignalListener(t,n){return SL(this,t,kb(this,t),n)},removeSignalListener(t,n){return EL(this,kb(this,t),n)},addDataListener(t,n){return SL(this,t,x2(this,t).values,n)},removeDataListener(t,n){return EL(this,x2(this,t).values,n)},globalCursor(t){if(arguments.length){if(this._globalCursor!==!!t){const n=ET(this,null);this._globalCursor=!!t,n&&ET(this,n)}return this}else return this._globalCursor},preventDefault(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},timer:Gfe,events:mfe,finalize:yfe,hover:vfe,data:afe,change:qw,insert:ofe,remove:sfe,scale:Bfe,initialize:Pfe,toImageURL:Ife,toCanvas:Rfe,toSVG:Ffe,getState:Vfe,setState:$fe});const Zfe="view",_2="[",w2="]",Nj="{",Bj="}",Jfe=":",jj=",",Kfe="@",Qfe=">",ehe=/[[\]{}]/,the={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};let Uj,Vj;function gp(t,n,e){return Uj=n||Zfe,Vj=e||the,qj(t.trim()).map(CT)}function nhe(t){return Vj[t]}function Nv(t,n,e,o,f){const r=t.length;let a=0,l;for(;n=0?--a:o&&o.indexOf(l)>=0&&++a}return n}function qj(t){const n=[],e=t.length;let o=0,f=0;for(;f' after between selector: "+t;o=o.map(CT);const f=CT(t.slice(1).trim());return f.between?{between:o,stream:f}:(f.between=o,f)}function ihe(t){const n={source:Uj},e=[];let o=[0,0],f=0,r=0,a=t.length,l=0,c,i;if(t[a-1]===Bj){if(l=t.lastIndexOf(Nj),l>=0){try{o=ahe(t.substring(l+1,a-1))}catch{throw"Invalid throttle specification: "+t}t=t.slice(0,l).trim(),a=t.length}else throw"Unmatched right brace: "+t;l=0}if(!a)throw t;if(t[0]===Kfe&&(f=++l),c=Nv(t,l,Jfe),c1?(n.type=e[1],f?n.markname=e[0].slice(1):nhe(e[0])?n.marktype=e[0]:n.source=e[0]):n.type=e[0],n.type.slice(-1)==="!"&&(n.consume=!0,n.type=n.type.slice(0,-1)),i!=null&&(n.filter=i),o[0]&&(n.throttle=o[0]),o[1]&&(n.debounce=o[1]),n}function ahe(t){const n=t.split(jj);if(!t.length||n.length>2)throw t;return n.map(e=>{const o=+e;if(o!==o)throw t;return o})}function ohe(t){return Ei(t)?t:{type:t||"pad"}}const W1=t=>+t||0,she=t=>({top:t,bottom:t,left:t,right:t});function lhe(t){return Ei(t)?t.signal?t:{top:W1(t.top),bottom:W1(t.bottom),left:W1(t.left),right:W1(t.right)}:she(W1(t))}const il=t=>Ei(t)&&!Ir(t)?pa({},t):{value:t};function CL(t,n,e,o){return e!=null?(Ei(e)&&!Ir(e)||Ir(e)&&e.length&&Ei(e[0])?t.update[n]=e:t[o||"enter"][n]={value:e},1):0}function kl(t,n,e){for(const o in n)CL(t,o,n[o]);for(const o in e)CL(t,o,e[o],"update")}function Zm(t,n,e){for(const o in n)e&&qi(e,o)||(t[o]=pa(t[o]||{},n[o]));return t}function Hg(t,n){return n&&(n.enter&&n.enter[t]||n.update&&n.update[t])}const QS="mark",eE="frame",tE="scope",uhe="axis",che="axis-domain",fhe="axis-grid",hhe="axis-label",dhe="axis-tick",phe="axis-title",ghe="legend",mhe="legend-band",vhe="legend-entry",yhe="legend-gradient",Hj="legend-label",xhe="legend-symbol",bhe="legend-title",_he="title",whe="title-text",khe="title-subtitle";function The(t,n,e,o,f){const r={},a={};let l,c,i,s;c="lineBreak",n==="text"&&f[c]!=null&&!Hg(c,t)&&M4(r,c,f[c]),(e=="legend"||String(e).startsWith("axis"))&&(e=null),s=e===eE?f.group:e===QS?pa({},f.mark,f[n]):null;for(c in s)i=Hg(c,t)||(c==="fill"||c==="stroke")&&(Hg("fill",t)||Hg("stroke",t)),i||M4(r,c,s[c]);ki(o).forEach(u=>{const d=f.style&&f.style[u];for(const h in d)Hg(h,t)||M4(r,h,d[h])}),t=pa({},t);for(c in r)s=r[c],s.signal?(l=l||{})[c]=s:a[c]=s;return t.enter=pa(a,t.enter),l&&(t.update=pa(l,t.update)),t}function M4(t,n,e){t[n]=e&&e.signal?{signal:e.signal}:{value:e}}const $j=t=>bi(t)?oi(t):t.signal?`(${t.signal})`:Gj(t);function $w(t){if(t.gradient!=null)return Mhe(t);let n=t.signal?`(${t.signal})`:t.color?Ahe(t.color):t.field!=null?Gj(t.field):t.value!==void 0?oi(t.value):void 0;return t.scale!=null&&(n=She(t,n)),n===void 0&&(n=null),t.exponent!=null&&(n=`pow(${n},${i_(t.exponent)})`),t.mult!=null&&(n+=`*${i_(t.mult)}`),t.offset!=null&&(n+=`+${i_(t.offset)}`),t.round&&(n=`round(${n})`),n}const Tb=(t,n,e,o)=>`(${t}(${[n,e,o].map($w).join(",")})+'')`;function Ahe(t){return t.c?Tb("hcl",t.h,t.c,t.l):t.h||t.s?Tb("hsl",t.h,t.s,t.l):t.l||t.a?Tb("lab",t.l,t.a,t.b):t.r||t.g||t.b?Tb("rgb",t.r,t.g,t.b):null}function Mhe(t){const n=[t.start,t.stop,t.count].map(e=>e==null?null:oi(e));for(;n.length&&Na(n)==null;)n.pop();return n.unshift($j(t.gradient)),`gradient(${n.join(",")})`}function i_(t){return Ei(t)?"("+$w(t)+")":t}function Gj(t){return Wj(Ei(t)?t:{datum:t})}function Wj(t){let n,e,o;if(t.signal)n="datum",o=t.signal;else if(t.group||t.parent){for(e=Math.max(1,t.level||1),n="item";e-- >0;)n+=".mark.group";t.parent?(o=t.parent,n+=".datum"):o=t.group}else t.datum?(n="datum",o=t.datum):Pr("Invalid field reference: "+oi(t));return t.signal||(o=bi(o)?ih(o).map(oi).join("]["):Wj(o)),n+"["+o+"]"}function She(t,n){const e=$j(t.scale);return t.range!=null?n=`lerp(_range(${e}), ${+t.range})`:(n!==void 0&&(n=`_scale(${e}, ${n})`),t.band&&(n=(n?n+"+":"")+`_bandwidth(${e})`+(+t.band==1?"":"*"+i_(t.band)),t.extra&&(n=`(datum.extra ? _scale(${e}, datum.extra.value) : ${n})`)),n==null&&(n="0")),n}function Ehe(t){let n="";return t.forEach(e=>{const o=$w(e);n+=e.test?`(${e.test})?${o}:`:o}),Na(n)===":"&&(n+="null"),n}function Yj(t,n,e,o,f,r){const a={};r=r||{},r.encoders={$encode:a},t=The(t,n,e,o,f.config);for(const l in t)a[l]=Che(t[l],n,r,f);return r}function Che(t,n,e,o){const f={},r={};for(const a in t)t[a]!=null&&(f[a]=Lhe(Ohe(t[a]),o,e,r));return{$expr:{marktype:n,channels:f},$fields:Object.keys(r),$output:Object.keys(t)}}function Ohe(t){return Ir(t)?Ehe(t):$w(t)}function Lhe(t,n,e,o){const f=Qf(t,n);return f.$fields.forEach(r=>o[r]=1),pa(e,f.$params),f.$expr}const Phe="outer",Dhe=["value","update","init","react","bind"];function OL(t,n){Pr(t+' for "outer" push: '+oi(n))}function Xj(t,n){const e=t.name;if(t.push===Phe)n.signals[e]||OL("No prior signal definition",e),Dhe.forEach(o=>{t[o]!==void 0&&OL("Invalid property ",o)});else{const o=n.addSignal(e,t.value);t.react===!1&&(o.react=!1),t.bind&&n.addBinding(e,t.bind)}}function OT(t,n,e,o){this.id=-1,this.type=t,this.value=n,this.params=e,o&&(this.parent=o)}function Gw(t,n,e,o){return new OT(t,n,e,o)}function k2(t,n){return Gw("operator",t,n)}function Hi(t){const n={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(n),n}function uy(t,n){return n?{$field:t,$name:n}:{$field:t}}const LT=uy("key");function LL(t,n){return{$compare:t,$order:n}}function Ihe(t,n){const e={$key:t};return n&&(e.$flat=!0),e}const zhe="ascending",Rhe="descending";function Fhe(t){return Ei(t)?(t.order===Rhe?"-":"+")+Ww(t.op,t.field):""}function Ww(t,n){return(t&&t.signal?"$"+t.signal:t||"")+(t&&n?"_":"")+(n&&n.signal?"$"+n.signal:n||"")}const nE="scope",PT="view";function Ys(t){return t&&t.signal}function Nhe(t){return t&&t.expr}function a_(t){if(Ys(t))return!0;if(Ei(t)){for(const n in t)if(a_(t[n]))return!0}return!1}function Wc(t,n){return t??n}function p0(t){return t&&t.signal||t}const PL="timer";function cy(t,n){return(t.merge?jhe:t.stream?Uhe:t.type?Vhe:Pr("Invalid stream specification: "+oi(t)))(t,n)}function Bhe(t){return t===nE?PT:t||PT}function jhe(t,n){const e=t.merge.map(f=>cy(f,n)),o=rE({merge:e},t,n);return n.addStream(o).id}function Uhe(t,n){const e=cy(t.stream,n),o=rE({stream:e},t,n);return n.addStream(o).id}function Vhe(t,n){let e;t.type===PL?(e=n.event(PL,t.throttle),t={between:t.between,filter:t.filter}):e=n.event(Bhe(t.source),t.type);const o=rE({stream:e},t,n);return Object.keys(o).length===1?e:n.addStream(o).id}function rE(t,n,e){let o=n.between;return o&&(o.length!==2&&Pr('Stream "between" parameter must have 2 entries: '+oi(n)),t.between=[cy(o[0],e),cy(o[1],e)]),o=n.filter?[].concat(n.filter):[],(n.marktype||n.markname||n.markrole)&&o.push(qhe(n.marktype,n.markname,n.markrole)),n.source===nE&&o.push("inScope(event.item)"),o.length&&(t.filter=Qf("("+o.join(")&&(")+")",e).$expr),(o=n.throttle)!=null&&(t.throttle=+o),(o=n.debounce)!=null&&(t.debounce=+o),n.consume&&(t.consume=!0),t}function qhe(t,n,e){const o="event.item";return o+(t&&t!=="*"?"&&"+o+".mark.marktype==='"+t+"'":"")+(e?"&&"+o+".mark.role==='"+e+"'":"")+(n?"&&"+o+".mark.name==='"+n+"'":"")}const Hhe={code:"_.$value",ast:{type:"Identifier",value:"value"}};function $he(t,n,e){const o=t.encode,f={target:e};let r=t.events,a=t.update,l=[];r||Pr("Signal update missing events specification."),bi(r)&&(r=gp(r,n.isSubscope()?nE:PT)),r=ki(r).filter(c=>c.signal||c.scale?(l.push(c),0):1),l.length>1&&(l=[Whe(l)]),r.length&&l.push(r.length>1?{merge:r}:r[0]),o!=null&&(a&&Pr("Signal encode and update are mutually exclusive."),a="encode(item(),"+oi(o)+")"),f.update=bi(a)?Qf(a,n):a.expr!=null?Qf(a.expr,n):a.value!=null?a.value:a.signal!=null?{$expr:Hhe,$params:{$value:n.signalRef(a.signal)}}:Pr("Invalid signal update specification."),t.force&&(f.options={force:!0}),l.forEach(c=>n.addUpdate(pa(Ghe(c,n),f)))}function Ghe(t,n){return{source:t.signal?n.signalRef(t.signal):t.scale?n.scaleRef(t.scale):cy(t,n)}}function Whe(t){return{signal:"["+t.map(n=>n.scale?'scale("'+n.scale+'")':n.signal)+"]"}}function Yhe(t,n){const e=n.getSignal(t.name);let o=t.update;t.init&&(o?Pr("Signals can not include both init and update expressions."):(o=t.init,e.initonly=!0)),o&&(o=Qf(o,n),e.update=o.$expr,e.params=o.$params),t.on&&t.on.forEach(f=>$he(f,n,e.id))}const ko=t=>(n,e,o)=>Gw(t,e,n||void 0,o),Zj=ko("aggregate"),Xhe=ko("axisticks"),Jj=ko("bound"),pf=ko("collect"),DL=ko("compare"),Zhe=ko("datajoin"),Kj=ko("encode"),Jhe=ko("expression"),Khe=ko("facet"),Qhe=ko("field"),ede=ko("key"),tde=ko("legendentries"),nde=ko("load"),rde=ko("mark"),ide=ko("multiextent"),ade=ko("multivalues"),ode=ko("overlap"),sde=ko("params"),Qj=ko("prefacet"),lde=ko("projection"),ude=ko("proxy"),cde=ko("relay"),eU=ko("render"),fde=ko("scale"),W0=ko("sieve"),hde=ko("sortitems"),tU=ko("viewlayout"),dde=ko("values");let pde=0;const nU={min:"min",max:"max",count:"sum"};function gde(t,n){const e=t.type||"linear";KR(e)||Pr("Unrecognized scale type: "+oi(e)),n.addScale(t.name,{type:e,domain:void 0})}function mde(t,n){const e=n.getScale(t.name).params;let o;e.domain=rU(t.domain,t,n),t.range!=null&&(e.range=aU(t,n,e)),t.interpolate!=null&&Mde(t.interpolate,e),t.nice!=null&&(e.nice=Ade(t.nice)),t.bins!=null&&(e.bins=Tde(t.bins,n));for(o in t)qi(e,o)||o==="name"||(e[o]=hc(t[o],n))}function hc(t,n){return Ei(t)?t.signal?n.signalRef(t.signal):Pr("Unsupported object: "+oi(t)):t}function o_(t,n){return t.signal?n.signalRef(t.signal):t.map(e=>hc(e,n))}function Yw(t){Pr("Can not find data set: "+oi(t))}function rU(t,n,e){if(!t){(n.domainMin!=null||n.domainMax!=null)&&Pr("No scale domain defined for domainMin/domainMax to override.");return}return t.signal?e.signalRef(t.signal):(Ir(t)?vde:t.fields?xde:yde)(t,n,e)}function vde(t,n,e){return t.map(o=>hc(o,e))}function yde(t,n,e){const o=e.getData(t.data);return o||Yw(t.data),dm(n.type)?o.valuesRef(e,t.field,iU(t.sort,!1)):tF(n.type)?o.domainRef(e,t.field):o.extentRef(e,t.field)}function xde(t,n,e){const o=t.data,f=t.fields.reduce((r,a)=>(a=bi(a)?{data:o,field:a}:Ir(a)||a.signal?bde(a,e):a,r.push(a),r),[]);return(dm(n.type)?_de:tF(n.type)?wde:kde)(t,e,f)}function bde(t,n){const e="_:vega:_"+pde++,o=pf({});if(Ir(t))o.value={$ingest:t};else if(t.signal){const f="setdata("+oi(e)+","+t.signal+")";o.params.input=n.signalRef(f)}return n.addDataPipeline(e,[o,W0({})]),{data:e,field:"data"}}function _de(t,n,e){const o=iU(t.sort,!0);let f,r;const a=e.map(i=>{const s=n.getData(i.data);return s||Yw(i.data),s.countsRef(n,i.field,o)}),l={groupby:LT,pulse:a};o&&(f=o.op||"count",r=o.field?Ww(f,o.field):"count",l.ops=[nU[f]],l.fields=[n.fieldRef(r)],l.as=[r]),f=n.add(Zj(l));const c=n.add(pf({pulse:Hi(f)}));return r=n.add(dde({field:LT,sort:n.sortRef(o),pulse:Hi(c)})),Hi(r)}function iU(t,n){return t&&(!t.field&&!t.op?Ei(t)?t.field="key":t={field:"key"}:!t.field&&t.op!=="count"?Pr("No field provided for sort aggregate op: "+t.op):n&&t.field&&t.op&&!nU[t.op]&&Pr("Multiple domain scales can not be sorted using "+t.op)),t}function wde(t,n,e){const o=e.map(f=>{const r=n.getData(f.data);return r||Yw(f.data),r.domainRef(n,f.field)});return Hi(n.add(ade({values:o})))}function kde(t,n,e){const o=e.map(f=>{const r=n.getData(f.data);return r||Yw(f.data),r.extentRef(n,f.field)});return Hi(n.add(ide({extents:o})))}function Tde(t,n){return t.signal||Ir(t)?o_(t,n):n.objectProperty(t)}function Ade(t){return Ei(t)?{interval:hc(t.interval),step:hc(t.step)}:hc(t)}function Mde(t,n){n.interpolate=hc(t.type||t),t.gamma!=null&&(n.interpolateGamma=hc(t.gamma))}function aU(t,n,e){const o=n.config.range;let f=t.range;if(f.signal)return n.signalRef(f.signal);if(bi(f)){if(o&&qi(o,f))return t=pa({},t,{range:o[f]}),aU(t,n,e);f==="width"?f=[0,{signal:"width"}]:f==="height"?f=dm(t.type)?[0,{signal:"height"}]:[{signal:"height"},0]:Pr("Unrecognized scale range value: "+oi(f))}else if(f.scheme){e.scheme=Ir(f.scheme)?o_(f.scheme,n):hc(f.scheme,n),f.extent&&(e.schemeExtent=o_(f.extent,n)),f.count&&(e.schemeCount=hc(f.count,n));return}else if(f.step){e.rangeStep=hc(f.step,n);return}else{if(dm(t.type)&&!Ir(f))return rU(f,t,n);Ir(f)||Pr("Unsupported range type: "+oi(f))}return f.map(r=>(Ir(r)?o_:hc)(r,n))}function Sde(t,n){const e=n.config.projection||{},o={};for(const f in t)f!=="name"&&(o[f]=DT(t[f],f,n));for(const f in e)o[f]==null&&(o[f]=DT(e[f],f,n));n.addProjection(t.name,o)}function DT(t,n,e){return Ir(t)?t.map(o=>DT(o,n,e)):Ei(t)?t.signal?e.signalRef(t.signal):n==="fit"?t:Pr("Unsupported parameter object: "+oi(t)):t}const gf="top",Jm="left",Km="right",rp="bottom",oU="center",Ede="vertical",Cde="start",Ode="middle",Lde="end",IT="index",iE="label",Pde="offset",km="perc",Dde="perc2",pc="value",Ky="guide-label",aE="guide-title",Ide="group-title",zde="group-subtitle",IL="symbol",s_="gradient",zT="discrete",RT="size",Rde="shape",Fde="fill",Nde="stroke",Bde="strokeWidth",jde="strokeDash",Ude="opacity",oE=[RT,Rde,Fde,Nde,Bde,jde,Ude],Qy={name:1,style:1,interactive:1},Ua={value:0},gc={value:1},Xw="group",sU="rect",sE="rule",Vde="symbol",Y0="text";function fy(t){return t.type=Xw,t.interactive=t.interactive||!1,t}function Bu(t,n){const e=(o,f)=>Wc(t[o],Wc(n[o],f));return e.isVertical=o=>Ede===Wc(t.direction,n.direction||(o?n.symbolDirection:n.gradientDirection)),e.gradientLength=()=>Wc(t.gradientLength,n.gradientLength||n.gradientWidth),e.gradientThickness=()=>Wc(t.gradientThickness,n.gradientThickness||n.gradientHeight),e.entryColumns=()=>Wc(t.columns,Wc(n.columns,+e.isVertical(!0))),e}function lU(t,n){const e=n&&(n.update&&n.update[t]||n.enter&&n.enter[t]);return e&&e.signal?e:e?e.value:null}function qde(t,n,e){const o=n.config.style[e];return o&&o[t]}function Zw(t,n,e){return`item.anchor === '${Cde}' ? ${t} : item.anchor === '${Lde}' ? ${n} : ${e}`}const lE=Zw(oi(Jm),oi(Km),oi(oU));function Hde(t){const n=t("tickBand");let e=t("tickOffset"),o,f;return n?n.signal?(o={signal:`(${n.signal}) === 'extent' ? 1 : 0.5`},f={signal:`(${n.signal}) === 'extent'`},Ei(e)||(e={signal:`(${n.signal}) === 'extent' ? 0 : ${e}`})):n==="extent"?(o=1,f=!0,e=0):(o=.5,f=!1):(o=t("bandPosition"),f=t("tickExtra")),{extra:f,band:o,offset:e}}function uU(t,n){return n?t?Ei(t)?Object.assign({},t,{offset:uU(t.offset,n)}):{value:t,offset:n}:n:t}function nc(t,n){return n?(t.name=n.name,t.style=n.style||t.style,t.interactive=!!n.interactive,t.encode=Zm(t.encode,n,Qy)):t.interactive=!1,t}function $de(t,n,e,o){const f=Bu(t,e),r=f.isVertical(),a=f.gradientThickness(),l=f.gradientLength();let c,i,s,u,d;r?(i=[0,1],s=[0,0],u=a,d=l):(i=[0,0],s=[1,0],u=l,d=a);const h={enter:c={opacity:Ua,x:Ua,y:Ua,width:il(u),height:il(d)},update:pa({},c,{opacity:gc,fill:{gradient:n,start:i,stop:s}}),exit:{opacity:Ua}};return kl(h,{stroke:f("gradientStrokeColor"),strokeWidth:f("gradientStrokeWidth")},{opacity:f("gradientOpacity")}),nc({type:sU,role:yhe,encode:h},o)}function Gde(t,n,e,o,f){const r=Bu(t,e),a=r.isVertical(),l=r.gradientThickness(),c=r.gradientLength();let i,s,u,d,h="";a?(i="y",u="y2",s="x",d="width",h="1-"):(i="x",u="x2",s="y",d="height");const m={opacity:Ua,fill:{scale:n,field:pc}};m[i]={signal:h+"datum."+km,mult:c},m[s]=Ua,m[u]={signal:h+"datum."+Dde,mult:c},m[d]=il(l);const g={enter:m,update:pa({},m,{opacity:gc}),exit:{opacity:Ua}};return kl(g,{stroke:r("gradientStrokeColor"),strokeWidth:r("gradientStrokeWidth")},{opacity:r("gradientOpacity")}),nc({type:sU,role:mhe,key:pc,from:f,encode:g},o)}const Wde=`datum.${km}<=0?"${Jm}":datum.${km}>=1?"${Km}":"${oU}"`,Yde=`datum.${km}<=0?"${rp}":datum.${km}>=1?"${gf}":"${Ode}"`;function zL(t,n,e,o){const f=Bu(t,n),r=f.isVertical(),a=il(f.gradientThickness()),l=f.gradientLength();let c=f("labelOverlap"),i,s,u,d,h="";const m={enter:i={opacity:Ua},update:s={opacity:gc,text:{field:iE}},exit:{opacity:Ua}};return kl(m,{fill:f("labelColor"),fillOpacity:f("labelOpacity"),font:f("labelFont"),fontSize:f("labelFontSize"),fontStyle:f("labelFontStyle"),fontWeight:f("labelFontWeight"),limit:Wc(t.labelLimit,n.gradientLabelLimit)}),r?(i.align={value:"left"},i.baseline=s.baseline={signal:Yde},u="y",d="x",h="1-"):(i.align=s.align={signal:Wde},i.baseline={value:"top"},u="x",d="y"),i[u]=s[u]={signal:h+"datum."+km,mult:l},i[d]=s[d]=a,a.offset=Wc(t.labelOffset,n.gradientLabelOffset)||0,c=c?{separation:f("labelSeparation"),method:c,order:"datum."+IT}:void 0,nc({type:Y0,role:Hj,style:Ky,key:pc,from:o,encode:m,overlap:c},e)}function Xde(t,n,e,o,f){const r=Bu(t,n),a=e.entries,l=!!(a&&a.interactive),c=a?a.name:void 0,i=r("clipHeight"),s=r("symbolOffset"),u={data:"value"},d=`(${f}) ? datum.${Pde} : datum.${RT}`,h=i?il(i):{field:RT},m=`datum.${IT}`,g=`max(1, ${f})`;let p,v,y,x,w;h.mult=.5,p={enter:v={opacity:Ua,x:{signal:d,mult:.5,offset:s},y:h},update:y={opacity:gc,x:v.x,y:v.y},exit:{opacity:Ua}};let k=null,b=null;t.fill||(k=n.symbolBaseFillColor,b=n.symbolBaseStrokeColor),kl(p,{fill:r("symbolFillColor",k),shape:r("symbolType"),size:r("symbolSize"),stroke:r("symbolStrokeColor",b),strokeDash:r("symbolDash"),strokeDashOffset:r("symbolDashOffset"),strokeWidth:r("symbolStrokeWidth")},{opacity:r("symbolOpacity")}),oE.forEach(A=>{t[A]&&(y[A]=v[A]={scale:t[A],field:pc})});const T=nc({type:Vde,role:xhe,key:pc,from:u,clip:i?!0:void 0,encode:p},e.symbols),_=il(s);_.offset=r("labelOffset"),p={enter:v={opacity:Ua,x:{signal:d,offset:_},y:h},update:y={opacity:gc,text:{field:iE},x:v.x,y:v.y},exit:{opacity:Ua}},kl(p,{align:r("labelAlign"),baseline:r("labelBaseline"),fill:r("labelColor"),fillOpacity:r("labelOpacity"),font:r("labelFont"),fontSize:r("labelFontSize"),fontStyle:r("labelFontStyle"),fontWeight:r("labelFontWeight"),limit:r("labelLimit")});const S=nc({type:Y0,role:Hj,style:Ky,key:pc,from:u,encode:p},e.labels);return p={enter:{noBound:{value:!i},width:Ua,height:i?il(i):Ua,opacity:Ua},exit:{opacity:Ua},update:y={opacity:gc,row:{signal:null},column:{signal:null}}},r.isVertical(!0)?(x=`ceil(item.mark.items.length / ${g})`,y.row.signal=`${m}%${x}`,y.column.signal=`floor(${m} / ${x})`,w={field:["row",m]}):(y.row.signal=`floor(${m} / ${g})`,y.column.signal=`${m} % ${g}`,w={field:m}),y.column.signal=`(${f})?${y.column.signal}:${m}`,o={facet:{data:o,name:"value",groupby:IT}},fy({role:tE,from:o,encode:Zm(p,a,Qy),marks:[T,S],name:c,interactive:l,sort:w})}function Zde(t,n){const e=Bu(t,n);return{align:e("gridAlign"),columns:e.entryColumns(),center:{row:!0,column:!1},padding:{row:e("rowPadding"),column:e("columnPadding")}}}const uE='item.orient === "left"',cE='item.orient === "right"',Jw=`(${uE} || ${cE})`,Jde=`datum.vgrad && ${Jw}`,Kde=Zw('"top"','"bottom"','"middle"'),Qde=Zw('"right"','"left"','"center"'),epe=`datum.vgrad && ${cE} ? (${Qde}) : (${Jw} && !(datum.vgrad && ${uE})) ? "left" : ${lE}`,tpe=`item._anchor || (${Jw} ? "middle" : "start")`,npe=`${Jde} ? (${uE} ? -90 : 90) : 0`,rpe=`${Jw} ? (datum.vgrad ? (${cE} ? "bottom" : "top") : ${Kde}) : "top"`;function ipe(t,n,e,o){const f=Bu(t,n),r={enter:{opacity:Ua},update:{opacity:gc,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:Ua}};return kl(r,{orient:f("titleOrient"),_anchor:f("titleAnchor"),anchor:{signal:tpe},angle:{signal:npe},align:{signal:epe},baseline:{signal:rpe},text:t.title,fill:f("titleColor"),fillOpacity:f("titleOpacity"),font:f("titleFont"),fontSize:f("titleFontSize"),fontStyle:f("titleFontStyle"),fontWeight:f("titleFontWeight"),limit:f("titleLimit"),lineHeight:f("titleLineHeight")},{align:f("titleAlign"),baseline:f("titleBaseline")}),nc({type:Y0,role:bhe,style:aE,from:o,encode:r},e)}function ape(t,n){let e;return Ei(t)&&(t.signal?e=t.signal:t.path?e="pathShape("+RL(t.path)+")":t.sphere&&(e="geoShape("+RL(t.sphere)+', {type: "Sphere"})')),e?n.signalRef(e):!!t}function RL(t){return Ei(t)&&t.signal?t.signal:oi(t)}function cU(t){const n=t.role||"";return!n.indexOf("axis")||!n.indexOf("legend")||!n.indexOf("title")?n:t.type===Xw?tE:n||QS}function ope(t){return{marktype:t.type,name:t.name||void 0,role:t.role||cU(t),zindex:+t.zindex||void 0,aria:t.aria,description:t.description}}function spe(t,n){return t&&t.signal?n.signalRef(t.signal):t!==!1}function fE(t,n){const e=wz(t.type);e||Pr("Unrecognized transform type: "+oi(t.type));const o=Gw(e.type.toLowerCase(),null,fU(e,t,n));return t.signal&&n.addSignal(t.signal,n.proxy(o)),o.metadata=e.metadata||{},o}function fU(t,n,e){const o={},f=t.params.length;for(let r=0;rFL(t,r,e)):FL(t,f,e)}function FL(t,n,e){const o=t.type;if(Ys(n))return BL(o)?Pr("Expression references can not be signals."):S4(o)?e.fieldRef(n):jL(o)?e.compareRef(n):e.signalRef(n.signal);{const f=t.expr||S4(o);return f&&fpe(n)?e.exprRef(n.expr,n.as):f&&hpe(n)?uy(n.field,n.as):BL(o)?Qf(n,e):dpe(o)?Hi(e.getData(n).values):S4(o)?uy(n):jL(o)?e.compareRef(n):n}}function upe(t,n,e){return bi(n.from)||Pr('Lookup "from" parameter must be a string literal.'),e.getData(n.from).lookupRef(e,n.key)}function cpe(t,n,e){const o=n[t.name];return t.array?(Ir(o)||Pr("Expected an array of sub-parameters. Instead: "+oi(o)),o.map(f=>NL(t,f,e))):NL(t,o,e)}function NL(t,n,e){const o=t.params.length;let f;for(let a=0;at&&t.expr,hpe=t=>t&&t.field,dpe=t=>t==="data",BL=t=>t==="expr",S4=t=>t==="field",jL=t=>t==="compare";function ppe(t,n,e){let o,f,r,a,l;return t?(o=t.facet)&&(n||Pr("Only group marks can be faceted."),o.field!=null?a=l=l_(o,e):(t.data?l=Hi(e.getData(t.data).aggregate):(r=fE(pa({type:"aggregate",groupby:ki(o.groupby)},o.aggregate),e),r.params.key=e.keyRef(o.groupby),r.params.pulse=l_(o,e),a=l=Hi(e.add(r))),f=e.keyRef(o.groupby,!0))):a=Hi(e.add(pf(null,[{}]))),a||(a=l_(t,e)),{key:f,pulse:a,parent:l}}function l_(t,n){return t.$ref?t:t.data&&t.data.$ref?t.data:Hi(n.getData(t.data).output)}function C0(t,n,e,o,f){this.scope=t,this.input=n,this.output=e,this.values=o,this.aggregate=f,this.index={}}C0.fromEntries=function(t,n){const e=n.length,o=n[e-1],f=n[e-2];let r=n[0],a=null,l=1;for(r&&r.type==="load"&&(r=n[1]),t.add(n[0]);lu??"null").join(",")+"),0)",s=Qf(i,n);c.update=s.$expr,c.params=s.$params}function Kw(t,n){const e=cU(t),o=t.type===Xw,f=t.from&&t.from.facet,r=t.overlap;let a=t.layout||e===tE||e===eE,l,c,i,s,u,d,h;const m=e===QS||a||f,g=ppe(t.from,o,n);c=n.add(Zhe({key:g.key||(t.key?uy(t.key):void 0),pulse:g.pulse,clean:!o}));const p=Hi(c);c=i=n.add(pf({pulse:p})),c=n.add(rde({markdef:ope(t),interactive:spe(t.interactive,n),clip:ape(t.clip,n),context:{$context:!0},groups:n.lookup(),parent:n.signals.parent?n.signalRef("parent"):null,index:n.markpath(),pulse:Hi(c)}));const v=Hi(c);c=s=n.add(Kj(Yj(t.encode,t.type,e,t.style,n,{mod:!1,pulse:v}))),c.params.parent=n.encode(),t.transform&&t.transform.forEach(b=>{const T=fE(b,n),_=T.metadata;(_.generates||_.changes)&&Pr("Mark transforms should not generate new data."),_.nomod||(s.params.mod=!0),T.params.pulse=Hi(c),n.add(c=T)}),t.sort&&(c=n.add(hde({sort:n.compareRef(t.sort),pulse:Hi(c)})));const y=Hi(c);(f||a)&&(a=n.add(tU({layout:n.objectProperty(t.layout),legends:n.legends,mark:v,pulse:y})),d=Hi(a));const x=n.add(Jj({mark:v,pulse:d||y}));h=Hi(x),o&&(m&&(l=n.operators,l.pop(),a&&l.pop()),n.pushState(y,d||h,p),f?gpe(t,n,g):m?mpe(t,n,g):n.parse(t),n.popState(),m&&(a&&l.push(a),l.push(x))),r&&(h=vpe(r,h,n));const w=n.add(eU({pulse:h})),k=n.add(W0({pulse:Hi(w)},void 0,n.parent()));t.name!=null&&(u=t.name,n.addData(u,new C0(n,i,w,k)),t.on&&t.on.forEach(b=>{(b.insert||b.remove||b.toggle)&&Pr("Marks only support modify triggers."),dU(b,n,u)}))}function vpe(t,n,e){const o=t.method,f=t.bound,r=t.separation,a={separation:Ys(r)?e.signalRef(r.signal):r,method:Ys(o)?e.signalRef(o.signal):o,pulse:n};if(t.order&&(a.sort=e.compareRef({field:t.order})),f){const l=f.tolerance;a.boundTolerance=Ys(l)?e.signalRef(l.signal):+l,a.boundScale=e.scaleRef(f.scale),a.boundOrient=f.orient}return Hi(e.add(ode(a)))}function ype(t,n){const e=n.config.legend,o=t.encode||{},f=Bu(t,e),r=o.legend||{},a=r.name||void 0,l=r.interactive,c=r.style,i={};let s=0,u,d,h;oE.forEach(x=>t[x]?(i[x]=t[x],s=s||t[x]):0),s||Pr("Missing valid scale for legend.");const m=xpe(t,n.scaleType(s)),g={title:t.title!=null,scales:i,type:m,vgrad:m!=="symbol"&&f.isVertical()},p=Hi(n.add(pf(null,[g]))),v={enter:{x:{value:0},y:{value:0}}},y=Hi(n.add(tde(d={type:m,scale:n.scaleRef(s),count:n.objectProperty(f("tickCount")),limit:n.property(f("symbolLimit")),values:n.objectProperty(t.values),minstep:n.property(t.tickMinStep),formatType:n.property(t.formatType),formatSpecifier:n.property(t.format)})));return m===s_?(h=[$de(t,s,e,o.gradient),zL(t,e,o.labels,y)],d.count=d.count||n.signalRef(`max(2,2*floor((${p0(f.gradientLength())})/100))`)):m===zT?h=[Gde(t,s,e,o.gradient,y),zL(t,e,o.labels,y)]:(u=Zde(t,e),h=[Xde(t,e,o,y,p0(u.columns))],d.size=wpe(t,n,h[0].marks)),h=[fy({role:vhe,from:p,encode:v,marks:h,layout:u,interactive:l})],g.title&&h.push(ipe(t,e,o.title,p)),Kw(fy({role:ghe,from:p,encode:Zm(_pe(f,t,e),r,Qy),marks:h,aria:f("aria"),description:f("description"),zindex:f("zindex"),name:a,interactive:l,style:c}),n)}function xpe(t,n){let e=t.type||IL;return!t.type&&bpe(t)===1&&(t.fill||t.stroke)&&(e=sM(n)?s_:Sk(n)?zT:IL),e!==s_?e:Sk(n)?zT:s_}function bpe(t){return oE.reduce((n,e)=>n+(t[e]?1:0),0)}function _pe(t,n,e){const o={enter:{},update:{}};return kl(o,{orient:t("orient"),offset:t("offset"),padding:t("padding"),titlePadding:t("titlePadding"),cornerRadius:t("cornerRadius"),fill:t("fillColor"),stroke:t("strokeColor"),strokeWidth:e.strokeWidth,strokeDash:e.strokeDash,x:t("legendX"),y:t("legendY"),format:n.format,formatType:n.formatType}),o}function wpe(t,n,e){const o=p0(VL("size",t,e)),f=p0(VL("strokeWidth",t,e)),r=p0(kpe(e[1].encode,n,Ky));return Qf(`max(ceil(sqrt(${o})+${f}),${r})`,n)}function VL(t,n,e){return n[t]?`scale("${n[t]}",datum)`:lU(t,e[0].encode)}function kpe(t,n,e){return lU("fontSize",t)||qde("fontSize",n,e)}const Tpe=`item.orient==="${Jm}"?-90:item.orient==="${Km}"?90:0`;function Ape(t,n){t=bi(t)?{text:t}:t;const e=Bu(t,n.config.title),o=t.encode||{},f=o.group||{},r=f.name||void 0,a=f.interactive,l=f.style,c=[],i={},s=Hi(n.add(pf(null,[i])));return c.push(Epe(t,e,Mpe(t),s)),t.subtitle&&c.push(Cpe(t,e,o.subtitle,s)),Kw(fy({role:_he,from:s,encode:Spe(e,f),marks:c,aria:e("aria"),description:e("description"),zindex:e("zindex"),name:r,interactive:a,style:l}),n)}function Mpe(t){const n=t.encode;return n&&n.title||pa({name:t.name,interactive:t.interactive,style:t.style},n)}function Spe(t,n){const e={enter:{},update:{}};return kl(e,{orient:t("orient"),anchor:t("anchor"),align:{signal:lE},angle:{signal:Tpe},limit:t("limit"),frame:t("frame"),offset:t("offset")||0,padding:t("subtitlePadding")}),Zm(e,n,Qy)}function Epe(t,n,e,o){const f={value:0},r=t.text,a={enter:{opacity:f},update:{opacity:{value:1}},exit:{opacity:f}};return kl(a,{text:r,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:n("dx"),dy:n("dy"),fill:n("color"),font:n("font"),fontSize:n("fontSize"),fontStyle:n("fontStyle"),fontWeight:n("fontWeight"),lineHeight:n("lineHeight")},{align:n("align"),angle:n("angle"),baseline:n("baseline")}),nc({type:Y0,role:whe,style:Ide,from:o,encode:a},e)}function Cpe(t,n,e,o){const f={value:0},r=t.subtitle,a={enter:{opacity:f},update:{opacity:{value:1}},exit:{opacity:f}};return kl(a,{text:r,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:n("dx"),dy:n("dy"),fill:n("subtitleColor"),font:n("subtitleFont"),fontSize:n("subtitleFontSize"),fontStyle:n("subtitleFontStyle"),fontWeight:n("subtitleFontWeight"),lineHeight:n("subtitleLineHeight")},{align:n("align"),angle:n("angle"),baseline:n("baseline")}),nc({type:Y0,role:khe,style:zde,from:o,encode:a},e)}function Ope(t,n){const e=[];t.transform&&t.transform.forEach(o=>{e.push(fE(o,n))}),t.on&&t.on.forEach(o=>{dU(o,n,t.name)}),n.addDataPipeline(t.name,Lpe(t,n,e))}function Lpe(t,n,e){const o=[];let f=null,r=!1,a=!1,l,c,i,s,u;for(t.values?Ys(t.values)||a_(t.format)?(o.push(qL(n,t)),o.push(f=Up())):o.push(f=Up({$ingest:t.values,$format:t.format})):t.url?a_(t.url)||a_(t.format)?(o.push(qL(n,t)),o.push(f=Up())):o.push(f=Up({$request:t.url,$format:t.format})):t.source&&(f=l=ki(t.source).map(d=>Hi(n.getData(d).output)),o.push(null)),c=0,i=e.length;ct===rp||t===gf,Qw=(t,n,e)=>Ys(t)?zpe(t.signal,n,e):t===Jm||t===gf?n:e,al=(t,n,e)=>Ys(t)?Dpe(t.signal,n,e):pU(t)?n:e,of=(t,n,e)=>Ys(t)?Ipe(t.signal,n,e):pU(t)?e:n,gU=(t,n,e)=>Ys(t)?Rpe(t.signal,n,e):t===gf?{value:n}:{value:e},Ppe=(t,n,e)=>Ys(t)?Fpe(t.signal,n,e):t===Km?{value:n}:{value:e},Dpe=(t,n,e)=>mU(`${t} === '${gf}' || ${t} === '${rp}'`,n,e),Ipe=(t,n,e)=>mU(`${t} !== '${gf}' && ${t} !== '${rp}'`,n,e),zpe=(t,n,e)=>hE(`${t} === '${Jm}' || ${t} === '${gf}'`,n,e),Rpe=(t,n,e)=>hE(`${t} === '${gf}'`,n,e),Fpe=(t,n,e)=>hE(`${t} === '${Km}'`,n,e),mU=(t,n,e)=>(n=n!=null?il(n):n,e=e!=null?il(e):e,HL(n)&&HL(e)?(n=n?n.signal||oi(n.value):null,e=e?e.signal||oi(e.value):null,{signal:`${t} ? (${n}) : (${e})`}):[pa({test:t},n)].concat(e||[])),HL=t=>t==null||Object.keys(t).length===1,hE=(t,n,e)=>({signal:`${t} ? (${Jg(n)}) : (${Jg(e)})`}),Npe=(t,n,e,o,f)=>({signal:(o!=null?`${t} === '${Jm}' ? (${Jg(o)}) : `:"")+(e!=null?`${t} === '${rp}' ? (${Jg(e)}) : `:"")+(f!=null?`${t} === '${Km}' ? (${Jg(f)}) : `:"")+(n!=null?`${t} === '${gf}' ? (${Jg(n)}) : `:"")+"(null)"}),Jg=t=>Ys(t)?t.signal:t==null?null:oi(t),Bpe=(t,n)=>n===0?0:Ys(t)?{signal:`(${t.signal}) * ${n}`}:{value:t*n},tm=(t,n)=>{const e=t.signal;return e&&e.endsWith("(null)")?{signal:e.slice(0,-6)+n.signal}:t};function Fg(t,n,e,o){let f;if(n&&qi(n,t))return n[t];if(qi(e,t))return e[t];if(t.startsWith("title")){switch(t){case"titleColor":f="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":f=t[5].toLowerCase()+t.slice(6)}return o[aE][f]}else if(t.startsWith("label")){switch(t){case"labelColor":f="fill";break;case"labelFont":case"labelFontSize":f=t[5].toLowerCase()+t.slice(6)}return o[Ky][f]}return null}function $L(t){const n={};for(const e of t)if(!!e)for(const o in e)n[o]=1;return Object.keys(n)}function jpe(t,n){var e=n.config,o=e.style,f=e.axis,r=n.scaleType(t.scale)==="band"&&e.axisBand,a=t.orient,l,c,i;if(Ys(a)){const u=$L([e.axisX,e.axisY]),d=$L([e.axisTop,e.axisBottom,e.axisLeft,e.axisRight]);l={};for(i of u)l[i]=al(a,Fg(i,e.axisX,f,o),Fg(i,e.axisY,f,o));c={};for(i of d)c[i]=Npe(a.signal,Fg(i,e.axisTop,f,o),Fg(i,e.axisBottom,f,o),Fg(i,e.axisLeft,f,o),Fg(i,e.axisRight,f,o))}else l=a===gf||a===rp?e.axisX:e.axisY,c=e["axis"+a[0].toUpperCase()+a.slice(1)];return l||c||r?pa({},f,l,c,r):f}function Upe(t,n,e,o){const f=Bu(t,n),r=t.orient;let a,l;const c={enter:a={opacity:Ua},update:l={opacity:gc},exit:{opacity:Ua}};kl(c,{stroke:f("domainColor"),strokeCap:f("domainCap"),strokeDash:f("domainDash"),strokeDashOffset:f("domainDashOffset"),strokeWidth:f("domainWidth"),strokeOpacity:f("domainOpacity")});const i=GL(t,0),s=GL(t,1);return a.x=l.x=al(r,i,Ua),a.x2=l.x2=al(r,s),a.y=l.y=of(r,i,Ua),a.y2=l.y2=of(r,s),nc({type:sE,role:che,from:o,encode:c},e)}function GL(t,n){return{scale:t.scale,range:n}}function Vpe(t,n,e,o,f){const r=Bu(t,n),a=t.orient,l=t.gridScale,c=Qw(a,1,-1),i=qpe(t.offset,c);let s,u,d;const h={enter:s={opacity:Ua},update:d={opacity:gc},exit:u={opacity:Ua}};kl(h,{stroke:r("gridColor"),strokeCap:r("gridCap"),strokeDash:r("gridDash"),strokeDashOffset:r("gridDashOffset"),strokeOpacity:r("gridOpacity"),strokeWidth:r("gridWidth")});const m={scale:t.scale,field:pc,band:f.band,extra:f.extra,offset:f.offset,round:r("tickRound")},g=al(a,{signal:"height"},{signal:"width"}),p=l?{scale:l,range:0,mult:c,offset:i}:{value:0,offset:i},v=l?{scale:l,range:1,mult:c,offset:i}:pa(g,{mult:c,offset:i});return s.x=d.x=al(a,m,p),s.y=d.y=of(a,m,p),s.x2=d.x2=of(a,v),s.y2=d.y2=al(a,v),u.x=al(a,m),u.y=of(a,m),nc({type:sE,role:fhe,key:pc,from:o,encode:h},e)}function qpe(t,n){if(n!==1)if(!Ei(t))t=Ys(n)?{signal:`(${n.signal}) * (${t||0})`}:n*(t||0);else{let e=t=pa({},t);for(;e.mult!=null;)if(Ei(e.mult))e=e.mult=pa({},e.mult);else return e.mult=Ys(n)?{signal:`(${e.mult}) * (${n.signal})`}:e.mult*n,t;e.mult=n}return t}function Hpe(t,n,e,o,f,r){const a=Bu(t,n),l=t.orient,c=Qw(l,-1,1);let i,s,u;const d={enter:i={opacity:Ua},update:u={opacity:gc},exit:s={opacity:Ua}};kl(d,{stroke:a("tickColor"),strokeCap:a("tickCap"),strokeDash:a("tickDash"),strokeDashOffset:a("tickDashOffset"),strokeOpacity:a("tickOpacity"),strokeWidth:a("tickWidth")});const h=il(f);h.mult=c;const m={scale:t.scale,field:pc,band:r.band,extra:r.extra,offset:r.offset,round:a("tickRound")};return u.y=i.y=al(l,Ua,m),u.y2=i.y2=al(l,h),s.x=al(l,m),u.x=i.x=of(l,Ua,m),u.x2=i.x2=of(l,h),s.y=of(l,m),nc({type:sE,role:dhe,key:pc,from:o,encode:d},e)}function E4(t,n,e,o,f){return{signal:'flush(range("'+t+'"), scale("'+t+'", datum.value), '+n+","+e+","+o+","+f+")"}}function $pe(t,n,e,o,f,r){const a=Bu(t,n),l=t.orient,c=t.scale,i=Qw(l,-1,1),s=p0(a("labelFlush")),u=p0(a("labelFlushOffset")),d=a("labelAlign"),h=a("labelBaseline");let m=s===0||!!s,g;const p=il(f);p.mult=i,p.offset=il(a("labelPadding")||0),p.offset.mult=i;const v={scale:c,field:pc,band:.5,offset:uU(r.offset,a("labelOffset"))},y=al(l,m?E4(c,s,'"left"','"right"','"center"'):{value:"center"},Ppe(l,"left","right")),x=al(l,gU(l,"bottom","top"),m?E4(c,s,'"top"','"bottom"','"middle"'):{value:"middle"}),w=E4(c,s,`-(${u})`,u,0);m=m&&u;const k={opacity:Ua,x:al(l,v,p),y:of(l,v,p)},b={enter:k,update:g={opacity:gc,text:{field:iE},x:k.x,y:k.y,align:y,baseline:x},exit:{opacity:Ua,x:k.x,y:k.y}};kl(b,{dx:!d&&m?al(l,w):null,dy:!h&&m?of(l,w):null}),kl(b,{angle:a("labelAngle"),fill:a("labelColor"),fillOpacity:a("labelOpacity"),font:a("labelFont"),fontSize:a("labelFontSize"),fontWeight:a("labelFontWeight"),fontStyle:a("labelFontStyle"),limit:a("labelLimit"),lineHeight:a("labelLineHeight")},{align:d,baseline:h});const T=a("labelBound");let _=a("labelOverlap");return _=_||T?{separation:a("labelSeparation"),method:_,order:"datum.index",bound:T?{scale:c,orient:l,tolerance:T}:null}:void 0,g.align!==y&&(g.align=tm(g.align,y)),g.baseline!==x&&(g.baseline=tm(g.baseline,x)),nc({type:Y0,role:hhe,style:Ky,key:pc,from:o,encode:b,overlap:_},e)}function Gpe(t,n,e,o){const f=Bu(t,n),r=t.orient,a=Qw(r,-1,1);let l,c;const i={enter:l={opacity:Ua,anchor:il(f("titleAnchor",null)),align:{signal:lE}},update:c=pa({},l,{opacity:gc,text:il(t.title)}),exit:{opacity:Ua}},s={signal:`lerp(range("${t.scale}"), ${Zw(0,1,.5)})`};return c.x=al(r,s),c.y=of(r,s),l.angle=al(r,Ua,Bpe(a,90)),l.baseline=al(r,gU(r,rp,gf),{value:rp}),c.angle=l.angle,c.baseline=l.baseline,kl(i,{fill:f("titleColor"),fillOpacity:f("titleOpacity"),font:f("titleFont"),fontSize:f("titleFontSize"),fontStyle:f("titleFontStyle"),fontWeight:f("titleFontWeight"),limit:f("titleLimit"),lineHeight:f("titleLineHeight")},{align:f("titleAlign"),angle:f("titleAngle"),baseline:f("titleBaseline")}),Wpe(f,r,i,e),i.update.align=tm(i.update.align,l.align),i.update.angle=tm(i.update.angle,l.angle),i.update.baseline=tm(i.update.baseline,l.baseline),nc({type:Y0,role:phe,style:aE,from:o,encode:i},e)}function Wpe(t,n,e,o){const f=(l,c)=>l!=null?(e.update[c]=tm(il(l),e.update[c]),!1):!Hg(c,o),r=f(t("titleX"),"x"),a=f(t("titleY"),"y");e.enter.auto=a===r?il(a):al(n,il(a),il(r))}function Ype(t,n){const e=jpe(t,n),o=t.encode||{},f=o.axis||{},r=f.name||void 0,a=f.interactive,l=f.style,c=Bu(t,e),i=Hde(c),s={scale:t.scale,ticks:!!c("ticks"),labels:!!c("labels"),grid:!!c("grid"),domain:!!c("domain"),title:t.title!=null},u=Hi(n.add(pf({},[s]))),d=Hi(n.add(Xhe({scale:n.scaleRef(t.scale),extra:n.property(i.extra),count:n.objectProperty(t.tickCount),values:n.objectProperty(t.values),minstep:n.property(t.tickMinStep),formatType:n.property(t.formatType),formatSpecifier:n.property(t.format)}))),h=[];let m;return s.grid&&h.push(Vpe(t,e,o.grid,d,i)),s.ticks&&(m=c("tickSize"),h.push(Hpe(t,e,o.ticks,d,m,i))),s.labels&&(m=s.ticks?m:0,h.push($pe(t,e,o.labels,d,m,i))),s.domain&&h.push(Upe(t,e,o.domain,u)),s.title&&h.push(Gpe(t,e,o.title,u)),Kw(fy({role:uhe,from:u,encode:Zm(Xpe(c,t),f,Qy),marks:h,aria:c("aria"),description:c("description"),zindex:c("zindex"),name:r,interactive:a,style:l}),n)}function Xpe(t,n){const e={enter:{},update:{}};return kl(e,{orient:t("orient"),offset:t("offset")||0,position:Wc(n.position,0),titlePadding:t("titlePadding"),minExtent:t("minExtent"),maxExtent:t("maxExtent"),range:{signal:`abs(span(range("${n.scale}")))`},translate:t("translate"),format:n.format,formatType:n.formatType}),e}function vU(t,n,e){const o=ki(t.signals),f=ki(t.scales);return e||o.forEach(r=>Xj(r,n)),ki(t.projections).forEach(r=>Sde(r,n)),f.forEach(r=>gde(r,n)),ki(t.data).forEach(r=>Ope(r,n)),f.forEach(r=>mde(r,n)),(e||o).forEach(r=>Yhe(r,n)),ki(t.axes).forEach(r=>Ype(r,n)),ki(t.marks).forEach(r=>Kw(r,n)),ki(t.legends).forEach(r=>ype(r,n)),t.title&&Ape(t.title,n),n.parseLambdas(),n}const Zpe=t=>Zm({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},t);function Jpe(t,n){const e=n.config,o=Hi(n.root=n.add(k2())),f=Kpe(t,e);f.forEach(i=>Xj(i,n)),n.description=t.description||e.description,n.eventConfig=e.events,n.legends=n.objectProperty(e.legend&&e.legend.layout),n.locale=e.locale;const r=n.add(pf()),a=n.add(Kj(Yj(Zpe(t.encode),Xw,eE,t.style,n,{pulse:Hi(r)}))),l=n.add(tU({layout:n.objectProperty(t.layout),legends:n.legends,autosize:n.signalRef("autosize"),mark:o,pulse:Hi(a)}));n.operators.pop(),n.pushState(Hi(a),Hi(l),null),vU(t,n,f),n.operators.push(l);let c=n.add(Jj({mark:o,pulse:Hi(l)}));return c=n.add(eU({pulse:Hi(c)})),c=n.add(W0({pulse:Hi(c)})),n.addData("root",new C0(n,r,r,c)),n}function X1(t,n){return n&&n.signal?{name:t,update:n.signal}:{name:t,value:n}}function Kpe(t,n){const e=a=>Wc(t[a],n[a]),o=[X1("background",e("background")),X1("autosize",ohe(e("autosize"))),X1("padding",lhe(e("padding"))),X1("width",e("width")||0),X1("height",e("height")||0)],f=o.reduce((a,l)=>(a[l.name]=l,a),{}),r={};return ki(t.signals).forEach(a=>{qi(f,a.name)?a=pa(f[a.name],a):o.push(a),r[a.name]=a}),ki(n.signals).forEach(a=>{!qi(r,a.name)&&!qi(f,a.name)&&o.push(a)}),o}function yU(t,n){this.config=t||{},this.options=n||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function WL(t){this.config=t.config,this.options=t.options,this.legends=t.legends,this.field=Object.create(t.field),this.signals=Object.create(t.signals),this.lambdas=Object.create(t.lambdas),this.scales=Object.create(t.scales),this.events=Object.create(t.events),this.data=Object.create(t.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++t._nextsub[0],this._nextsub=t._nextsub,this._parent=t._parent.slice(),this._encode=t._encode.slice(),this._lookup=t._lookup.slice(),this._markpath=t._markpath}yU.prototype=WL.prototype={parse(t){return vU(t,this)},fork(){return new WL(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach(n=>{n.$ref=t.id}),t.refs=null),t},proxy(t){const n=t instanceof OT?Hi(t):t;return this.add(ude({value:n}))},addStream(t){return this.streams.push(t),t.id=this.id(),t},addUpdate(t){return this.updates.push(t),t},finish(){let t,n;this.root&&(this.root.root=!0);for(t in this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function e(o,f,r){let a,l;o&&(a=o.data||(o.data={}),l=a[f]||(a[f]=[]),l.push(r))}for(t in this.data){n=this.data[t],e(n.input,t,"input"),e(n.output,t,"output"),e(n.values,t,"values");for(const o in n.index)e(n.index[o],t,"index:"+o)}return this},pushState(t,n,e){this._encode.push(Hi(this.add(W0({pulse:t})))),this._parent.push(n),this._lookup.push(e?Hi(this.proxy(e)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return Na(this._parent)},encode(){return Na(this._encode)},lookup(){return Na(this._lookup)},markpath(){const t=this._markpath;return++t[t.length-1]},fieldRef(t,n){if(bi(t))return uy(t,n);t.signal||Pr("Unsupported field reference: "+oi(t));const e=t.signal;let o=this.field[e];if(!o){const f={name:this.signalRef(e)};n&&(f.as=n),this.field[e]=o=Hi(this.add(Qhe(f)))}return o},compareRef(t){let n=!1;const e=r=>Ys(r)?(n=!0,this.signalRef(r.signal)):Nhe(r)?(n=!0,this.exprRef(r.expr)):r,o=ki(t.field).map(e),f=ki(t.order).map(e);return n?Hi(this.add(DL({fields:o,orders:f}))):LL(o,f)},keyRef(t,n){let e=!1;const o=r=>Ys(r)?(e=!0,Hi(f[r.signal])):r,f=this.signals;return t=ki(t).map(o),e?Hi(this.add(ede({fields:t,flat:n}))):Ihe(t,n)},sortRef(t){if(!t)return t;const n=Ww(t.op,t.field),e=t.order||zhe;return e.signal?Hi(this.add(DL({fields:n,orders:this.signalRef(e.signal)}))):LL(n,e)},event(t,n){const e=t+":"+n;if(!this.events[e]){const o=this.id();this.streams.push({id:o,source:t,type:n}),this.events[e]=o}return this.events[e]},hasOwnSignal(t){return qi(this.signals,t)},addSignal(t,n){this.hasOwnSignal(t)&&Pr("Duplicate signal name: "+oi(t));const e=n instanceof OT?n:this.add(k2(n));return this.signals[t]=e},getSignal(t){return this.signals[t]||Pr("Unrecognized signal name: "+oi(t)),this.signals[t]},signalRef(t){return this.signals[t]?Hi(this.signals[t]):(qi(this.lambdas,t)||(this.lambdas[t]=this.add(k2(null))),Hi(this.lambdas[t]))},parseLambdas(){const t=Object.keys(this.lambdas);for(let n=0,e=t.length;n0?",":"")+(Ei(f)?f.signal||dE(f):oi(f))}return e+"]"}function e0e(t){let n="{",e=0,o,f;for(o in t)f=t[o],n+=(++e>1?",":"")+oi(o)+":"+(Ei(f)?f.signal||dE(f):oi(f));return n+"}"}function t0e(){const t="sans-serif",o="#4c78a8",f="#000",r="#888",a="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:o},area:{fill:o},image:null,line:{stroke:o,strokeWidth:2},path:{stroke:o},rect:{fill:o},rule:{stroke:f},shape:{stroke:o},symbol:{fill:o,size:64},text:{fill:f,font:t,fontSize:11},trail:{fill:o,size:2},style:{"guide-label":{fill:f,font:t,fontSize:10},"guide-title":{fill:f,font:t,fontSize:11,fontWeight:"bold"},"group-title":{fill:f,font:t,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:f,font:t,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:a}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:r,grid:!1,gridWidth:1,gridColor:a,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:r,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:a,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:r,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}function n0e(t,n,e){return Ei(t)||Pr("Input Vega specification must be an object."),n=Um(t0e(),n,t.config),Jpe(t,new yU(n,e)).toRuntime()}var r0e="5.22.1";pa(um,IJ,Pne,cre,Xie,qae,mse,Xoe,yse,Use,Jse,ile);var i0e=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",version:r0e,Dataflow:Kg,EventStream:aw,MultiPulse:JA,Operator:Co,Parameters:iw,Pulse:Vd,Transform:_r,changeset:H0,definition:wz,ingest:ro,isTuple:nw,transform:kz,transforms:um,tupleid:$i,interpolate:lM,interpolateColors:bw,interpolateRange:nF,quantizeInterpolator:rF,scale:Xa,scheme:uM,projection:oS,View:Rj,defaultLocale:GA,formatLocale:x_,locale:uz,resetDefaultLocale:IX,timeFormatLocale:Wv,expressionFunction:Fs,parse:n0e,runtimeContext:kj,codegenExpression:cj,parseExpression:jS,parseSelector:gp,Debug:JD,Error:kA,Info:ZD,None:XD,Warn:TA,accessor:Nu,accessorFields:Bl,accessorName:xs,array:ki,ascending:K2,clampRange:lI,compare:CA,constant:$l,debounce:OA,error:Pr,extend:pa,extent:Zf,extentIndex:uI,falsy:md,fastmap:qm,field:Lu,flush:cI,hasOwnProperty:qi,id:Ay,identity:Hl,inherits:ni,inrange:Gg,isArray:Ir,isBoolean:hp,isDate:Bd,isFunction:ga,isIterable:fI,isNumber:wo,isObject:Ei,isRegExp:hI,isString:bi,key:LA,lerp:dI,logger:AA,lruCache:pI,merge:gI,mergeConfig:Um,one:jm,pad:mI,panLinear:nI,panLog:rI,panPow:iI,panSymlog:aI,peek:Na,quarter:oI,repeat:av,span:My,splitAccessPath:ih,stringValue:oi,toBoolean:PA,toDate:DA,toNumber:Rl,toSet:uf,toString:IA,truncate:vI,truthy:mc,utcquarter:sI,visitArray:xd,writeConfig:Vm,zero:Td,zoomLinear:MA,zoomLog:SA,zoomPow:g_,zoomSymlog:EA,bandwidthNRD:t6,bin:Az,bootstrapCI:Mz,cumulativeLogNormal:s6,cumulativeNormal:sw,cumulativeUniform:f6,densityLogNormal:o6,densityNormal:n6,densityUniform:c6,dotbin:Sz,quantileLogNormal:l6,quantileNormal:lw,quantileUniform:h6,quantiles:QA,quartiles:e6,get random(){return yc},randomInteger:NZ,randomKDE:i6,randomLCG:FZ,randomLogNormal:Cz,randomMixture:Oz,randomNormal:r6,randomUniform:Lz,regressionExp:Dz,regressionLinear:d6,regressionLoess:Rz,regressionLog:Pz,regressionPoly:zz,regressionPow:Iz,regressionQuad:p6,sampleCurve:cw,sampleLogNormal:a6,sampleNormal:ow,sampleUniform:u6,setRandom:zZ,DATE:Du,DAY:Il,DAYOFYEAR:Jf,HOURS:Qu,MILLISECONDS:cf,MINUTES:ec,MONTH:jl,QUARTER:Pu,SECONDS:vc,TIME_UNITS:UA,WEEK:Gs,YEAR:wl,dayofyear:PI,timeBin:XI,timeFloor:BI,timeInterval:Hm,timeOffset:VI,timeSequence:$I,timeUnitSpecifier:LI,timeUnits:VA,utcFloor:jI,utcInterval:$m,utcOffset:qI,utcSequence:GI,utcdayofyear:zI,utcweek:RI,week:DI,format:jb,formats:XA,inferType:fz,inferTypes:hz,loader:ew,read:gz,responseType:pz,typeParsers:_k,path:Nm,Bounds:zs,CanvasHandler:qy,CanvasRenderer:F_,Gradient:mF,GroupItem:kw,Handler:tp,Item:ww,Marks:tc,RenderType:Ld,Renderer:oh,ResourceLoader:mM,SVGHandler:IM,SVGRenderer:jM,SVGStringRenderer:UM,Scenegraph:PM,boundClip:cN,boundContext:By,boundItem:Ik,boundMark:zF,boundStroke:Xh,domChild:Tu,domClear:Xc,domCreate:Cd,domFind:DM,font:Ew,fontFamily:Vy,fontSize:ah,intersect:oN,intersectBoxLine:Wg,intersectPath:vM,intersectPoint:yM,intersectRule:TF,lineHeight:Qd,markup:BM,multiLineOffset:CM,pathCurves:dM,pathEqual:fN,pathParse:pm,pathRectangle:xF,pathRender:Jv,pathSymbols:yF,pathTrail:bF,point:Ow,renderModule:Lw,resetSVGClipId:wF,resetSVGDefIds:Yte,sceneEqual:VM,sceneFromJSON:FF,scenePickVisit:L_,sceneToJSON:RF,sceneVisit:ff,sceneZOrder:xM,serializeXML:KF,textMetrics:af});function a0e(t,n,e){let o;n.x2&&(n.x?(e&&t.x>t.x2&&(o=t.x,t.x=t.x2,t.x2=o),t.width=t.x2-t.x):t.x=t.x2-(t.width||0)),n.xc&&(t.x=t.xc-(t.width||0)/2),n.y2&&(n.y?(e&&t.y>t.y2&&(o=t.y,t.y=t.y2,t.y2=o),t.height=t.y2-t.y):t.y=t.y2-(t.height||0)),n.yc&&(t.y=t.yc-(t.height||0)/2)}var o0e={NaN:NaN,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,PI:Math.PI,SQRT1_2:Math.SQRT1_2,SQRT2:Math.SQRT2,MIN_VALUE:Number.MIN_VALUE,MAX_VALUE:Number.MAX_VALUE},s0e={"*":(t,n)=>t*n,"+":(t,n)=>t+n,"-":(t,n)=>t-n,"/":(t,n)=>t/n,"%":(t,n)=>t%n,">":(t,n)=>t>n,"<":(t,n)=>tt<=n,">=":(t,n)=>t>=n,"==":(t,n)=>t==n,"!=":(t,n)=>t!=n,"===":(t,n)=>t===n,"!==":(t,n)=>t!==n,"&":(t,n)=>t&n,"|":(t,n)=>t|n,"^":(t,n)=>t^n,"<<":(t,n)=>t<>":(t,n)=>t>>n,">>>":(t,n)=>t>>>n},l0e={"+":t=>+t,"-":t=>-t,"~":t=>~t,"!":t=>!t};const u0e=Array.prototype.slice,Vp=(t,n,e)=>{const o=e?e(n[0]):n[0];return o[t].apply(o,u0e.call(n,1))},c0e=(t,n,e,o,f,r,a)=>new Date(t,n||0,e??1,o||0,f||0,r||0,a||0);var f0e={isNaN:Number.isNaN,isFinite:Number.isFinite,abs:Math.abs,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:Math.atan2,ceil:Math.ceil,cos:Math.cos,exp:Math.exp,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,pow:Math.pow,random:Math.random,round:Math.round,sin:Math.sin,sqrt:Math.sqrt,tan:Math.tan,clamp:(t,n,e)=>Math.max(n,Math.min(e,t)),now:Date.now,utc:Date.UTC,datetime:c0e,date:t=>new Date(t).getDate(),day:t=>new Date(t).getDay(),year:t=>new Date(t).getFullYear(),month:t=>new Date(t).getMonth(),hours:t=>new Date(t).getHours(),minutes:t=>new Date(t).getMinutes(),seconds:t=>new Date(t).getSeconds(),milliseconds:t=>new Date(t).getMilliseconds(),time:t=>new Date(t).getTime(),timezoneoffset:t=>new Date(t).getTimezoneOffset(),utcdate:t=>new Date(t).getUTCDate(),utcday:t=>new Date(t).getUTCDay(),utcyear:t=>new Date(t).getUTCFullYear(),utcmonth:t=>new Date(t).getUTCMonth(),utchours:t=>new Date(t).getUTCHours(),utcminutes:t=>new Date(t).getUTCMinutes(),utcseconds:t=>new Date(t).getUTCSeconds(),utcmilliseconds:t=>new Date(t).getUTCMilliseconds(),length:t=>t.length,join:function(){return Vp("join",arguments)},indexof:function(){return Vp("indexOf",arguments)},lastindexof:function(){return Vp("lastIndexOf",arguments)},slice:function(){return Vp("slice",arguments)},reverse:t=>t.slice().reverse(),parseFloat,parseInt,upper:t=>String(t).toUpperCase(),lower:t=>String(t).toLowerCase(),substring:function(){return Vp("substring",arguments,String)},split:function(){return Vp("split",arguments,String)},replace:function(){return Vp("replace",arguments,String)},trim:t=>String(t).trim(),regexp:RegExp,test:(t,n)=>RegExp(t).test(n)};const h0e=["view","item","group","xy","x","y"],d0e={Literal:(t,n)=>n.value,Identifier:(t,n)=>{const e=n.name;return t.memberDepth>0?e:e==="datum"?t.datum:e==="event"?t.event:e==="item"?t.item:o0e[e]||t.params["$"+e]},MemberExpression:(t,n)=>{const e=!n.computed,o=t(n.object);e&&(t.memberDepth+=1);const f=t(n.property);return e&&(t.memberDepth-=1),o[f]},CallExpression:(t,n)=>{const e=n.arguments;let o=n.callee.name;return o.startsWith("_")&&(o=o.slice(1)),o==="if"?t(e[0])?t(e[1]):t(e[2]):(t.fn[o]||f0e[o]).apply(t.fn,e.map(t))},ArrayExpression:(t,n)=>n.elements.map(t),BinaryExpression:(t,n)=>s0e[n.operator](t(n.left),t(n.right)),UnaryExpression:(t,n)=>l0e[n.operator](t(n.argument)),ConditionalExpression:(t,n)=>t(n.test)?t(n.consequent):t(n.alternate),LogicalExpression:(t,n)=>n.operator==="&&"?t(n.left)&&t(n.right):t(n.left)||t(n.right),ObjectExpression:(t,n)=>n.properties.reduce((e,o)=>{t.memberDepth+=1;const f=t(o.key);return t.memberDepth-=1,e[f]=t(o.value),e},{})};function Z1(t,n,e,o,f,r){const a=l=>d0e[l.type](a,l);return a.memberDepth=0,a.fn=Object.create(n),a.params=e,a.datum=o,a.event=f,a.item=r,h0e.forEach(l=>a.fn[l]=(...c)=>f.vega[l](...c)),a(t)}var p0e={operator(t,n){const e=n.ast,o=t.functions;return f=>Z1(e,o,f)},parameter(t,n){const e=n.ast,o=t.functions;return(f,r)=>Z1(e,o,r,f)},event(t,n){const e=n.ast,o=t.functions;return f=>Z1(e,o,void 0,void 0,f)},handler(t,n){const e=n.ast,o=t.functions;return(f,r)=>{const a=r.item&&r.item.datum;return Z1(e,o,f,a,r)}},encode(t,n){const{marktype:e,channels:o}=n,f=t.functions,r=e==="group"||e==="image"||e==="rect";return(a,l)=>{const c=a.datum;let i=0,s;for(const u in o)s=Z1(o[u].ast,f,l,c,void 0,a),a[u]!==s&&(a[u]=s,i=1);return e!=="rule"&&a0e(a,o,r),i}}};const g0e="vega-lite",m0e='Dominik Moritz, Kanit "Ham" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',v0e="5.5.0",y0e=["Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)","Dominik Moritz (https://www.domoritz.de)","Arvind Satyanarayan (https://arvindsatya.com)","Jeffrey Heer (https://jheer.org)"],x0e="https://vega.github.io/vega-lite/",b0e="Vega-Lite is a concise high-level language for interactive visualization.",_0e=["vega","chart","visualization"],w0e="build/vega-lite.js",k0e="build/vega-lite.min.js",T0e="build/vega-lite.min.js",A0e="build/src/index",M0e="build/src/index.d.ts",S0e={vl2png:"./bin/vl2png",vl2svg:"./bin/vl2svg",vl2pdf:"./bin/vl2pdf",vl2vg:"./bin/vl2vg"},E0e=["bin","build","src","vega-lite*","tsconfig.json"],C0e={changelog:"conventional-changelog -p angular -r 2",prebuild:"yarn clean:build",build:"yarn build:only","build:only":"tsc -p tsconfig.build.json && rollup -c","prebuild:examples":"yarn build:only","build:examples":"yarn data && TZ=America/Los_Angeles scripts/build-examples.sh","prebuild:examples-full":"yarn build:only","build:examples-full":"TZ=America/Los_Angeles scripts/build-examples.sh 1","build:example":"TZ=America/Los_Angeles scripts/build-example.sh","build:toc":"yarn build:jekyll && scripts/generate-toc","build:site":"rollup -c site/rollup.config.js","build:jekyll":"pushd site && bundle exec jekyll build -q && popd","build:versions":"scripts/update-version.sh",clean:"yarn clean:build && del-cli 'site/data/*' 'examples/compiled/*.png' && find site/examples ! -name 'index.md' ! -name 'data' -type f -delete","clean:build":"del-cli 'build/*' !build/vega-lite-schema.json","predeploy:site":"yarn presite","deploy:site":"gh-pages -d site",data:"rsync -r node_modules/vega-datasets/data/* site/data",schema:"mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t TopLevelSpec --no-type-check --no-ref-encode > build/vega-lite-schema.json && yarn renameschema && cp build/vega-lite-schema.json site/_data/",renameschema:"scripts/rename-schema.sh",presite:"yarn data && yarn schema && yarn build:site && yarn build:versions && scripts/create-example-pages.sh",site:"yarn site:only","site:only":"pushd site && bundle exec jekyll serve -I -l && popd",prettierbase:"prettier '**/*.{md,css,yml}'",eslintbase:"eslint .",format:"yarn eslintbase --fix && yarn prettierbase --write",lint:"yarn eslintbase && yarn prettierbase --check",jest:"NODE_OPTIONS=--experimental-vm-modules npx jest",test:"yarn jest test/ && yarn lint && yarn schema && yarn jest examples/ && yarn test:runtime","test:cover":"yarn jest --collectCoverage test/","test:inspect":"node --inspect-brk --experimental-vm-modules ./node_modules/.bin/jest --runInBand test","test:runtime":"NODE_OPTIONS=--experimental-vm-modules TZ=America/Los_Angeles npx jest test-runtime/ --config test-runtime/jest-config.json","test:runtime:generate":"yarn build:only && del-cli test-runtime/resources && VL_GENERATE_TESTS=true yarn test:runtime",watch:"tsc -p tsconfig.build.json -w","watch:site":"yarn build:site -w","watch:test":"yarn jest --watch test/","watch:test:runtime":"NODE_OPTIONS=--experimental-vm-modules TZ=America/Los_Angeles npx jest --watch test-runtime/ --config test-runtime/jest-config.json",release:"yarn run prebuild && yarn build && yarn shipit",shipit:"auto shipit"},O0e={type:"git",url:"https://github.com/vega/vega-lite.git"},L0e="BSD-3-Clause",P0e={url:"https://github.com/vega/vega-lite/issues"},D0e={"@auto-it/conventional-commits":"^10.37.6","@auto-it/first-time-contributor":"^10.37.6","@babel/core":"^7.19.1","@babel/preset-env":"^7.19.1","@babel/preset-typescript":"^7.18.6","@rollup/plugin-alias":"^4.0.0","@rollup/plugin-babel":"^6.0.0","@rollup/plugin-commonjs":"^23.0.0","@rollup/plugin-json":"^4.1.0","@types/jest":"^27.4.1","@rollup/plugin-node-resolve":"^14.1.0","@types/chai":"^4.3.3","@types/d3":"^7.4.0","@types/mkdirp":"^1.0.2","@types/pako":"^2.0.0","@typescript-eslint/eslint-plugin":"^5.38.0","@typescript-eslint/parser":"^5.38.0",ajv:"^8.11.0","ajv-formats":"^2.1.1",auto:"^10.37.6",chai:"^4.3.6",cheerio:"^1.0.0-rc.12","conventional-changelog-cli":"^2.2.2",d3:"^7.6.1","del-cli":"^5.0.0",eslint:"^8.23.1","eslint-config-prettier":"^8.5.0","eslint-plugin-jest":"^27.0.4","eslint-plugin-prettier":"^4.2.1","gh-pages":"^4.0.0",jest:"^27.5.1","highlight.js":"^11.6.0","jest-dev-server":"^6.1.1",mkdirp:"^1.0.4",pako:"^2.0.4",prettier:"^2.7.1",puppeteer:"^15.0.0",rollup:"^2.79.1","rollup-plugin-bundle-size":"^1.0.3","rollup-plugin-sourcemaps":"^0.6.3","rollup-plugin-terser":"^7.0.2",serve:"^14.0.1",terser:"^5.15.0","ts-jest":"^29.0.1","ts-json-schema-generator":"^1.1.1","vega-cli":"^5.22.1",typescript:"~4.8.3","vega-datasets":"~2.5.1","vega-embed":"^6.21.0","vega-tooltip":"^0.28.0","yaml-front-matter":"^4.1.1"},I0e={"@types/clone":"~2.1.1",clone:"~2.1.2","fast-deep-equal":"~3.1.3","fast-json-stable-stringify":"~2.1.0","json-stringify-pretty-compact":"~3.0.0",tslib:"~2.4.0","vega-event-selector":"~3.0.0","vega-expression":"~5.0.0","vega-util":"~1.17.0",yargs:"~17.6.0"},z0e={vega:"^5.22.0"},R0e={node:">=12"};var F0e={name:g0e,author:m0e,version:v0e,collaborators:y0e,homepage:x0e,description:b0e,keywords:_0e,main:w0e,unpkg:k0e,jsdelivr:T0e,module:A0e,types:M0e,bin:S0e,files:E0e,scripts:C0e,repository:O0e,license:L0e,bugs:P0e,devDependencies:D0e,dependencies:I0e,peerDependencies:z0e,engines:R0e},xU={exports:{}};(function(t){var n=function(){function e(d,h){return h!=null&&d instanceof h}var o;try{o=Map}catch{o=function(){}}var f;try{f=Set}catch{f=function(){}}var r;try{r=Promise}catch{r=function(){}}function a(d,h,m,g,p){typeof h=="object"&&(m=h.depth,g=h.prototype,p=h.includeNonEnumerable,h=h.circular);var v=[],y=[],x=typeof Buffer<"u";typeof h>"u"&&(h=!0),typeof m>"u"&&(m=1/0);function w(k,b){if(k===null)return null;if(b===0)return k;var T,_;if(typeof k!="object")return k;if(e(k,o))T=new o;else if(e(k,f))T=new f;else if(e(k,r))T=new r(function(L,P){k.then(function(N){L(w(N,b-1))},function(N){P(w(N,b-1))})});else if(a.__isArray(k))T=[];else if(a.__isRegExp(k))T=new RegExp(k.source,u(k)),k.lastIndex&&(T.lastIndex=k.lastIndex);else if(a.__isDate(k))T=new Date(k.getTime());else{if(x&&Buffer.isBuffer(k))return Buffer.allocUnsafe?T=Buffer.allocUnsafe(k.length):T=new Buffer(k.length),k.copy(T),T;e(k,Error)?T=Object.create(k):typeof g>"u"?(_=Object.getPrototypeOf(k),T=Object.create(_)):(T=Object.create(g),_=g)}if(h){var S=v.indexOf(k);if(S!=-1)return y[S];v.push(k),y.push(T)}e(k,o)&&k.forEach(function(L,P){var N=w(P,b-1),B=w(L,b-1);T.set(N,B)}),e(k,f)&&k.forEach(function(L){var P=w(L,b-1);T.add(P)});for(var A in k){var M;_&&(M=Object.getOwnPropertyDescriptor(_,A)),!(M&&M.set==null)&&(T[A]=w(k[A],b-1))}if(Object.getOwnPropertySymbols)for(var E=Object.getOwnPropertySymbols(k),A=0;Anm(e,n))}:gE(t)?{or:t.or.map(e=>nm(e,n))}:n(t)}const Ff=bU,ha=N0e;function _U(t){throw new Error(t)}function Tm(t,n){const e={};for(const o of n)qi(t,o)&&(e[o]=t[o]);return e}function Eu(t,n){const e=Object.assign({},t);for(const o of n)delete e[o];return e}Set.prototype.toJSON=function(){return`Set(${[...this].map(t=>pE(t)).join(",")})`};const No=pE;function Ba(t){if(wo(t))return t;const n=bi(t)?t:pE(t);if(n.length<250)return n;let e=0;for(let o=0;ol===0?a:`[${a}]`),r=f.map((a,l)=>f.slice(0,l+1).join(""));for(const a of r)n.add(a)}return n}function bE(t,n){return t===void 0||n===void 0?!0:xE(NT(t),NT(n))}function _o(t){return Xr(t).length===0}const Xr=Object.keys,ql=Object.values,ip=Object.entries;function hy(t){return t===!0||t===!1}function Xo(t){const n=t.replace(/\W/g,"_");return(t.match(/^\d+/)?"_":"")+n}function Bv(t,n){return vE(t)?`!(${Bv(t.not,n)})`:mE(t)?`(${t.and.map(e=>Bv(e,n)).join(") && (")})`:gE(t)?`(${t.or.map(e=>Bv(e,n)).join(") || (")})`:n(t)}function T2(t,n){if(n.length===0)return!0;const e=n.shift();return e in t&&T2(t[e],n)&&delete t[e],_o(t)}function ex(t){return t.charAt(0).toUpperCase()+t.substr(1)}function _E(t,n="datum"){const e=ih(t),o=[];for(let f=1;f<=e.length;f++){const r=`[${e.slice(0,f).map(oi).join("][")}]`;o.push(`${n}${r}`)}return o.join(" && ")}function TU(t,n="datum"){return`${n}[${oi(ih(t).join("."))}]`}function U0e(t){return t.replace(/(\[|\]|\.|'|")/g,"\\$1")}function bc(t){return`${ih(t).map(U0e).join("\\.")}`}function L0(t,n,e){return t.replace(new RegExp(n.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),e)}function wE(t){return`${ih(t).join(".")}`}function Am(t){return t?ih(t).length:0}function Rs(...t){for(const n of t)if(n!==void 0)return n}let AU=42;function MU(t){const n=++AU;return t?String(t)+n:n}function V0e(){AU=42}function SU(t){return EU(t)?t:`__${t}`}function EU(t){return t.startsWith("__")}function dy(t){if(t!==void 0)return(t%360+360)%360}function e3(t){return wo(t)?!0:!isNaN(t)&&!isNaN(parseFloat(t))}var tx=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fl3(t[n])?Xo(`_${n}_${ip(t[n])}`):Xo(`_${n}_${t[n]}`)).join("")}function Bo(t){return t===!0||J0(t)&&!t.binned}function xl(t){return t==="binned"||J0(t)&&t.binned===!0}function J0(t){return Ei(t)}function l3(t){return t?.param}function YL(t){switch(t){case Uh:case Vh:case ed:case zu:case hh:case dh:case xp:case td:case vp:case yp:case Ru:return 6;case bp:return 4;default:return 10}}function ax(t){return!!t?.expr}function ku(t){const n=Xr(t||{}),e={};for(const o of n)e[o]=Xu(t[o]);return e}var pge=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{var f;return e.field.push(hi(o,n)),e.order.push((f=o.sort)!==null&&f!==void 0?f:"ascending"),e},{field:[],order:[]})}function WU(t,n){const e=[...t];return n.forEach(o=>{for(const f of e)if(Ff(f,o))return;e.push(o)}),e}function YU(t,n){return Ff(t,n)||!n?t:t?[...ki(t),...ki(n)].join(", "):n}function XU(t,n){const e=t.value,o=n.value;if(e==null||o===null)return{explicit:t.explicit,value:null};if((kd(e)||Vi(e))&&(kd(o)||Vi(o)))return{explicit:t.explicit,value:YU(e,o)};if(kd(e)||Vi(e))return{explicit:t.explicit,value:e};if(kd(o)||Vi(o))return{explicit:t.explicit,value:o};if(!kd(e)&&!Vi(e)&&!kd(o)&&!Vi(o))return{explicit:t.explicit,value:WU(e,o)};throw new Error("It should never reach here")}function LE(t){return`Invalid specification ${No(t)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}const wge='Autosize "fit" only works for single views and layered views.';function JL(t){return`${t=="width"?"Width":"Height"} "container" only works for single views and layered views.`}function KL(t){const n=t=="width"?"Width":"Height",e=t=="width"?"x":"y";return`${n} "container" only works well with autosize "fit" or "fit-${e}".`}function QL(t){return t?`Dropping "fit-${t}" because spec has discrete ${Fu(t)}.`:'Dropping "fit" because spec has discrete size.'}function PE(t){return`Unknown field for ${t}. Cannot calculate view size.`}function eP(t){return`Cannot project a selection on encoding channel "${t}", which has no field.`}function kge(t,n){return`Cannot project a selection on encoding channel "${t}" as it uses an aggregate function ("${n}").`}function Tge(t){return`The "nearest" transform is not supported for ${t} marks.`}function ZU(t){return`Selection not supported for ${t} yet.`}function Age(t){return`Cannot find a selection named "${t}".`}const Mge="Scale bindings are currently only supported for scales with unbinned, continuous domains.",Sge="Legend bindings are only supported for selections over an individual field or encoding channel.";function Ege(t){return`Lookups can only be performed on selection parameters. "${t}" is a variable parameter.`}function Cge(t){return`Cannot define and lookup the "${t}" selection in the same view. Try moving the lookup into a second, layered view?`}const Oge="The same selection must be used to override scale domains in a layered view.",Lge='Interval selections should be initialized using "x" and/or "y" keys.';function Pge(t){return`Unknown repeated value "${t}".`}function tP(t){return`The "columns" property cannot be used when "${t}" has nested row/column.`}const Dge="Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function Ige(t){return`Unrecognized parse "${t}".`}function nP(t,n,e){return`An ancestor parsed field "${t}" as ${e} but a child wants to parse the field as ${n}.`}const zge="Attempt to add the same child twice.";function Rge(t){return`Ignoring an invalid transform: ${No(t)}.`}const Fge='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function rP(t){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${t} are dropped.`}function Nge(t){const{parentProjection:n,projection:e}=t;return`Layer's shared projection ${No(n)} is overridden by a child projection ${No(e)}.`}const Bge="Arc marks uses theta channel rather than angle, replacing angle with theta.";function jge(t){return`${t}Offset dropped because ${t} is continuous`}function Uge(t){return`There is no ${t} encoding. Replacing ${t}Offset encoding as ${t}.`}function Vge(t,n,e){return`Channel ${t} is a ${n}. Converted to {value: ${No(e)}}.`}function JU(t){return`Invalid field type "${t}".`}function qge(t,n){return`Invalid field type "${t}" for aggregate: "${n}", using "quantitative" instead.`}function Hge(t){return`Invalid aggregation operator "${t}".`}function KU(t,n){const{fill:e,stroke:o}=n;return`Dropping color ${t} as the plot also has ${e&&o?"fill and stroke":e?"fill":"stroke"}.`}function $ge(t){return`Position range does not support relative band size for ${t}.`}function jT(t,n){return`Dropping ${No(t)} from channel "${n}" since it does not contain any data field, datum, value, or signal.`}const Gge="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function u3(t,n,e){return`${t} dropped as it is incompatible with "${n}"${e?` when ${e}`:""}.`}function Wge(t){return`${t} encoding has no scale, so specified scale is ignored.`}function Yge(t){return`${t}-encoding is dropped as ${t} is not a valid encoding channel.`}function Xge(t){return`${t} encoding should be discrete (ordinal / nominal / binned).`}function Zge(t){return`${t} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function Jge(t){return`Facet encoding dropped as ${t.join(" and ")} ${t.length>1?"are":"is"} also specified.`}function O4(t,n){return`Using discrete channel "${t}" to encode "${n}" field can be misleading as it does not encode ${n==="ordinal"?"order":"magnitude"}.`}function Kge(t){return`The ${t} for range marks cannot be an expression`}function Qge(t,n){return`Line mark is for continuous lines and thus cannot be used with ${t&&n?"x2 and y2":t?"x2":"y2"}. We will use the rule mark (line segments) instead.`}function eme(t,n){return`Specified orient "${t}" overridden with "${n}".`}function tme(t){return`Cannot use the scale property "${t}" with non-color channel.`}function nme(t){return`Cannot use the relative band size with ${t} scale.`}function rme(t){return`Using unaggregated domain with raw field has no effect (${No(t)}).`}function ime(t){return`Unaggregated domain not applicable for "${t}" since it produces values outside the origin domain of the source data.`}function ame(t){return`Unaggregated domain is currently unsupported for log scale (${No(t)}).`}function ome(t){return`Cannot apply size to non-oriented mark "${t}".`}function sme(t,n,e){return`Channel "${t}" does not work with "${n}" scale. We are using "${e}" scale instead.`}function lme(t,n){return`FieldDef does not work with "${t}" scale. We are using "${n}" scale instead.`}function QU(t,n,e){return`${e}-scale's "${n}" is dropped as it does not work with ${t} scale.`}function eV(t){return`The step for "${t}" is dropped because the ${t==="width"?"x":"y"} is continuous.`}function ume(t,n,e,o){return`Conflicting ${n.toString()} property "${t.toString()}" (${No(e)} and ${No(o)}). Using ${No(e)}.`}function cme(t,n,e,o){return`Conflicting ${n.toString()} property "${t.toString()}" (${No(e)} and ${No(o)}). Using the union of the two domains.`}function fme(t){return`Setting the scale to be independent for "${t}" means we also have to set the guide (axis or legend) to be independent.`}function hme(t){return`Dropping sort property ${No(t)} as unioned domains only support boolean or op "count", "min", and "max".`}const iP="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",dme="Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.",pme="Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.",gme="Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.";function mme(t){return`Cannot stack "${t}" if there is already "${t}2".`}function vme(t){return`Cannot stack non-linear scale (${t}).`}function yme(t){return`Stacking is applied even though the aggregate function is non-summative ("${t}").`}function M2(t,n){return`Invalid ${t}: ${No(n)}.`}function xme(t){return`Dropping day from datetime ${No(t)} as day cannot be combined with other units.`}function bme(t,n){return`${n?"extent ":""}${n&&t?"and ":""}${t?"center ":""}${n&&t?"are ":"is "}not needed when data are aggregated.`}function _me(t,n,e){return`${t} is not usually used with ${n} for ${e}.`}function wme(t,n){return`Continuous axis should not have customized aggregation function ${t}; ${n} already agregates the axis.`}function aP(t){return`1D error band does not support ${t}.`}function tV(t){return`Channel ${t} is required for "binned" bin.`}function kme(t){return`Channel ${t} should not be used with "binned" bin.`}function Tme(t){return`Domain for ${t} is required for threshold scale.`}globalThis&&globalThis.__classPrivateFieldSet;globalThis&&globalThis.__classPrivateFieldGet;const nV=AA(TA);let Mm=nV;function Ame(t){return Mm=t,Mm}function Mme(){return Mm=nV,Mm}function Kr(...t){Mm.warn(...t)}function Sme(...t){Mm.debug(...t)}function K0(t){if(t&&Ei(t)){for(const n of IE)if(n in t)return!0}return!1}const rV=["january","february","march","april","may","june","july","august","september","october","november","december"],Eme=rV.map(t=>t.substr(0,3)),iV=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Cme=iV.map(t=>t.substr(0,3));function Ome(t){if(e3(t)&&(t=+t),wo(t))return t>4&&Kr(M2("quarter",t)),t-1;throw new Error(M2("quarter",t))}function Lme(t){if(e3(t)&&(t=+t),wo(t))return t-1;{const n=t.toLowerCase(),e=rV.indexOf(n);if(e!==-1)return e;const o=n.substr(0,3),f=Eme.indexOf(o);if(f!==-1)return f;throw new Error(M2("month",t))}}function Pme(t){if(e3(t)&&(t=+t),wo(t))return t%7;{const n=t.toLowerCase(),e=iV.indexOf(n);if(e!==-1)return e;const o=n.substr(0,3),f=Cme.indexOf(o);if(f!==-1)return f;throw new Error(M2("day",t))}}function DE(t,n){const e=[];if(n&&t.day!==void 0&&Xr(t).length>1&&(Kr(xme(t)),t=ha(t),delete t.day),t.year!==void 0?e.push(t.year):e.push(2012),t.month!==void 0){const o=n?Lme(t.month):t.month;e.push(o)}else if(t.quarter!==void 0){const o=n?Ome(t.quarter):t.quarter;e.push(wo(o)?o*3:`${o}*3`)}else e.push(0);if(t.date!==void 0)e.push(t.date);else if(t.day!==void 0){const o=n?Pme(t.day):t.day;e.push(wo(o)?o+1:`${o}+1`)}else e.push(1);for(const o of["hours","minutes","seconds","milliseconds"]){const f=t[o];e.push(typeof f>"u"?0:f)}return e}function py(t){const e=DE(t,!0).join(", ");return t.utc?`utc(${e})`:`datetime(${e})`}function Dme(t){const e=DE(t,!1).join(", ");return t.utc?`utc(${e})`:`datetime(${e})`}function Ime(t){const n=DE(t,!0);return t.utc?+new Date(Date.UTC(...n)):+new Date(...n)}var zme=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);foV(t,n))}function oV(t,n){const e=t.indexOf(n);return!(e<0||e>0&&n==="seconds"&&t.charAt(e-1)==="i"||t.length>e+3&&n==="day"&&t.charAt(e+3)==="o"||e>0&&n==="year"&&t.charAt(e-1)==="f")}function Bme(t,n,{end:e}={end:!1}){const o=_E(n),f=zE(t)?"utc":"";function r(c){return c==="quarter"?`(${f}quarter(${o})-1)`:`${f}${c}(${o})`}let a;const l={};for(const c of IE)oV(t,c)&&(l[c]=r(c),a=c);return e&&(l[a]+="+1"),Dme(l)}function sV(t){if(!t)return;const n=RE(t);return`timeUnitSpecifier(${No(n)}, ${No(Nme)})`}function jme(t,n,e){if(!t)return;const o=sV(t);return`${e||zE(t)?"utc":"time"}Format(${n}, ${o})`}function Gl(t){if(!t)return;let n;return bi(t)?n={unit:t}:Ei(t)&&(n=Object.assign(Object.assign({},t),t.unit?{unit:t.unit}:{})),zE(n.unit)&&(n.utc=!0,n.unit=Fme(n.unit)),n}function Ume(t){const n=Gl(t),{utc:e}=n,o=zme(n,["utc"]);return o.unit?(e?"utc":"")+Xr(o).map(f=>Xo(`${f==="unit"?"":`_${f}_`}${o[f]}`)).join(""):(e?"utc":"")+"timeunit"+Xr(o).map(f=>Xo(`_${f}_${o[f]}`)).join("")}function Vme(t){return t?.param}function FE(t){return!!t?.field&&t.equal!==void 0}function NE(t){return!!t?.field&&t.lt!==void 0}function BE(t){return!!t?.field&&t.lte!==void 0}function jE(t){return!!t?.field&&t.gt!==void 0}function UE(t){return!!t?.field&&t.gte!==void 0}function VE(t){if(t?.field){if(Ir(t.range)&&t.range.length===2)return!0;if(Vi(t.range))return!0}return!1}function qE(t){return!!t?.field&&(Ir(t.oneOf)||Ir(t.in))}function qme(t){return!!t?.field&&t.valid!==void 0}function lV(t){return qE(t)||FE(t)||VE(t)||NE(t)||jE(t)||BE(t)||UE(t)}function Cf(t,n){return x3(t,{timeUnit:n,wrapTime:!0})}function Hme(t,n){return t.map(e=>Cf(e,n))}function uV(t,n=!0){var e;const{field:o}=t,f=(e=Gl(t.timeUnit))===null||e===void 0?void 0:e.unit,r=f?`time(${Bme(f,o)})`:hi(t,{expr:"datum"});if(FE(t))return`${r}===${Cf(t.equal,f)}`;if(NE(t)){const a=t.lt;return`${r}<${Cf(a,f)}`}else if(jE(t)){const a=t.gt;return`${r}>${Cf(a,f)}`}else if(BE(t)){const a=t.lte;return`${r}<=${Cf(a,f)}`}else if(UE(t)){const a=t.gte;return`${r}>=${Cf(a,f)}`}else{if(qE(t))return`indexof([${Hme(t.oneOf,f).join(",")}], ${r}) !== -1`;if(qme(t))return HE(r,t.valid);if(VE(t)){const{range:a}=t,l=Vi(a)?{signal:`${a.signal}[0]`}:a[0],c=Vi(a)?{signal:`${a.signal}[1]`}:a[1];if(l!==null&&c!==null&&n)return"inrange("+r+", ["+Cf(l,f)+", "+Cf(c,f)+"])";const i=[];return l!==null&&i.push(`${r} >= ${Cf(l,f)}`),c!==null&&i.push(`${r} <= ${Cf(c,f)}`),i.length>0?i.join(" && "):"true"}}throw new Error(`Invalid field predicate: ${No(t)}`)}function HE(t,n=!0){return n?`isValid(${t}) && isFinite(+${t})`:`!isValid(${t}) || !isFinite(+${t})`}function $me(t){var n;return lV(t)&&t.timeUnit?Object.assign(Object.assign({},t),{timeUnit:(n=Gl(t.timeUnit))===null||n===void 0?void 0:n.unit}):t}const ox={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function Gme(t){return t==="quantitative"||t==="temporal"}function cV(t){return t==="ordinal"||t==="nominal"}const I0=ox.quantitative,$E=ox.ordinal,Sm=ox.temporal,GE=ox.nominal,t1=ox.geojson;function Wme(t){if(t)switch(t=t.toLowerCase(),t){case"q":case I0:return"quantitative";case"t":case Sm:return"temporal";case"o":case $E:return"ordinal";case"n":case GE:return"nominal";case t1:return"geojson"}}var Yme=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{switch(n.fieldTitle){case"plain":return t.field;case"functional":return B1e(t);default:return N1e(t,n)}};let RV=zV;function FV(t){RV=t}function j1e(){FV(zV)}function im(t,n,{allowDisabling:e,includeDefault:o=!0}){var f,r;const a=(f=n8(t))===null||f===void 0?void 0:f.title;if(!ti(t))return a??t.title;const l=t,c=o?r8(l,n):void 0;return e?Rs(a,l.title,c):(r=a??l.title)!==null&&r!==void 0?r:c}function n8(t){if(Om(t)&&t.axis)return t.axis;if(DV(t)&&t.legend)return t.legend;if(e8(t)&&t.header)return t.header}function r8(t,n){return RV(t,n)}function O2(t){var n;if(IV(t)){const{format:e,formatType:o}=t;return{format:e,formatType:o}}else{const e=(n=n8(t))!==null&&n!==void 0?n:{},{format:o,formatType:f}=e;return{format:o,formatType:f}}}function U1e(t,n){var e;switch(n){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(t8(t)&&Ir(t.sort))return"ordinal";const{aggregate:o,bin:f,timeUnit:r}=t;if(r)return"temporal";if(f||o&&!wp(o)&&!Wh(o))return"quantitative";if(Q0(t)&&((e=t.scale)===null||e===void 0?void 0:e.type))switch(UT[t.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}function th(t){if(ti(t))return t;if(v3(t))return t.condition}function Ws(t){if(la(t))return t;if(ux(t))return t.condition}function NV(t,n,e,o={}){if(bi(t)||wo(t)||hp(t)){const f=bi(t)?"string":wo(t)?"number":"boolean";return Kr(Vge(n,f,t)),{value:t}}return la(t)?L2(t,n,e,o):ux(t)?Object.assign(Object.assign({},t),{condition:L2(t.condition,n,e,o)}):t}function L2(t,n,e,o){if(IV(t)){const{format:f,formatType:r}=t,a=HT(t,["format","formatType"]);if(R0(r)&&!e.customFormatTypes)return Kr(rP(n)),L2(a,n,e,o)}else{const f=Om(t)?"axis":DV(t)?"legend":e8(t)?"header":null;if(f&&t[f]){const r=t[f],{format:a,formatType:l}=r,c=HT(r,["format","formatType"]);if(R0(l)&&!e.customFormatTypes)return Kr(rP(n)),L2(Object.assign(Object.assign({},t),{[f]:c}),n,e,o)}}return ti(t)?i8(t,n,o):V1e(t)}function V1e(t){let n=t.type;if(n)return t;const{datum:e}=t;return n=wo(e)?"quantitative":bi(e)?"nominal":K0(e)?"temporal":void 0,Object.assign(Object.assign({},t),{type:n})}function i8(t,n,{compositeMark:e=!1}={}){const{aggregate:o,timeUnit:f,bin:r,field:a}=t,l=Object.assign({},t);if(!e&&o&&!CE(o)&&!wp(o)&&!Wh(o)&&(Kr(Hge(o)),delete l.aggregate),f&&(l.timeUnit=Gl(f)),a&&(l.field=`${a}`),Bo(r)&&(l.bin=y3(r,n)),xl(r)&&!sl(n)&&Kr(kme(n)),wc(l)){const{type:c}=l,i=Wme(c);c!==i&&(l.type=i),c!=="quantitative"&&jU(o)&&(Kr(qge(c,o)),l.type="quantitative")}else if(!DU(n)){const c=U1e(l,n);l.type=c}if(wc(l)){const{compatible:c,warning:i}=q1e(l,n)||{};c===!1&&Kr(i)}if(t8(l)&&bi(l.sort)){const{sort:c}=l;if(uP(c))return Object.assign(Object.assign({},l),{sort:{encoding:c}});const i=c.substr(1);if(c.charAt(0)==="-"&&uP(i))return Object.assign(Object.assign({},l),{sort:{encoding:i,order:"descending"}})}if(e8(l)){const{header:c}=l;if(c){const{orient:i}=c,s=HT(c,["orient"]);if(i)return Object.assign(Object.assign({},l),{header:Object.assign(Object.assign({},s),{labelOrient:c.labelOrient||i,titleOrient:c.titleOrient||i})})}}return l}function y3(t,n){return hp(t)?{maxbins:YL(n)}:t==="binned"?{binned:!0}:!t.maxbins&&!t.step?Object.assign(Object.assign({},t),{maxbins:YL(n)}):t}const Ng={compatible:!0};function q1e(t,n){const e=t.type;if(e==="geojson"&&n!=="shape")return{compatible:!1,warning:`Channel ${n} should not be used with a geojson data.`};switch(n){case Uh:case Vh:case t3:return C2(t)?Ng:{compatible:!1,warning:Xge(n)};case cs:case ol:case mp:case Qm:case zu:case hh:case dh:case nx:case ix:case n3:case P0:case r3:case i3:case X0:case Tc:case vf:case a3:return Ng;case fh:case _c:case ch:case yf:return e!==I0?{compatible:!1,warning:`Channel ${n} should be used with a quantitative field only, not ${t.type} field.`}:Ng;case td:case vp:case yp:case xp:case ed:case Qh:case Kh:case mf:case uh:return e==="nominal"&&!t.sort?{compatible:!1,warning:`Channel ${n} should not be used with an unsorted discrete field.`}:Ng;case Ru:case bp:return!C2(t)&&!R1e(t)?{compatible:!1,warning:Zge(n)}:Ng;case rx:return t.type==="nominal"&&!("sort"in t)?{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}:Ng}}function Lm(t){const{formatType:n}=O2(t);return n==="time"||!n&&H1e(t)}function H1e(t){return t&&(t.type==="temporal"||ti(t)&&!!t.timeUnit)}function x3(t,{timeUnit:n,type:e,wrapTime:o,undefinedIfExprNotRequired:f}){var r;const a=n&&((r=Gl(n))===null||r===void 0?void 0:r.unit);let l=a||e==="temporal",c;return ax(t)?c=t.expr:Vi(t)?c=t.signal:K0(t)?(l=!0,c=py(t)):(bi(t)||wo(t))&&l&&(c=`datetime(${No(t)})`,Rme(a)&&(wo(t)&&t<1e4||bi(t)&&isNaN(Date.parse(t)))&&(c=py({[a]:t}))),c?o&&l?`time(${c})`:c:f?void 0:No(t)}function BV(t,n){const{type:e}=t;return n.map(o=>{const f=x3(o,{timeUnit:ti(t)?t.timeUnit:void 0,type:e,undefinedIfExprNotRequired:!0});return f!==void 0?{signal:f}:o})}function cx(t,n){return Bo(t.bin)?_p(n)&&["ordinal","nominal"].includes(t.type):(console.warn("Only call this method for binned field defs."),!1)}const fP={labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"}};function fx(t){return t?.condition}const jV=["domain","grid","labels","ticks","title"],$1e={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},UV={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},G1e=Object.assign(Object.assign({},UV),{style:1,labelExpr:1,encoding:1});function hP(t){return!!G1e[t]}const W1e={axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1},VV=Xr(W1e);function nd(t){return"mark"in t}class b3{constructor(n,e){this.name=n,this.run=e}hasMatchingType(n){return nd(n)?k1e(n.mark)===this.name:!1}}var Y1e=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f!!o.field):ti(e)||v3(e):!1}function qV(t,n){const e=t&&t[n];return e?Ir(e)?O0(e,o=>!!o.field):ti(e)||mh(e)||ux(e):!1}function GT(t,n){if(sl(n)){const e=t[n];if((ti(e)||mh(e))&&cV(e.type)){const o=IU(n);return qV(t,o)}}return!1}function a8(t){return O0(W0e,n=>{if(m0(t,n)){const e=t[n];if(Ir(e))return O0(e,o=>!!o.aggregate);{const o=th(e);return o&&!!o.aggregate}}return!1})}function HV(t,n){const e=[],o=[],f=[],r=[],a={};return o8(t,(l,c)=>{if(ti(l)){const{field:i,aggregate:s,bin:u,timeUnit:d}=l,h=Y1e(l,["field","aggregate","bin","timeUnit"]);if(s||d||u){const m=n8(l),g=m?.title;let p=hi(l,{forAs:!0});const v=Object.assign(Object.assign(Object.assign({},g?[]:{title:im(l,n,{allowDisabling:!0})}),h),{field:p});if(s){let y;if(wp(s)?(y="argmax",p=hi({op:"argmax",field:s.argmax},{forAs:!0}),v.field=`${p}.${i}`):Wh(s)?(y="argmin",p=hi({op:"argmin",field:s.argmin},{forAs:!0}),v.field=`${p}.${i}`):s!=="boxplot"&&s!=="errorbar"&&s!=="errorband"&&(y=s),y){const x={op:y,as:p};i&&(x.field=i),r.push(x)}}else if(e.push(p),wc(l)&&Bo(u)){if(o.push({bin:u,field:i,as:p}),e.push(hi(l,{binSuffix:"end"})),cx(l,c)&&e.push(hi(l,{binSuffix:"range"})),sl(c)){const y={field:`${p}_end`};a[`${c}2`]=y}v.bin="binned",DU(c)||(v.type=I0)}else if(d){f.push({timeUnit:d,field:i,as:p});const y=wc(l)&&l.type!==Sm&&"time";y&&(c===nx||c===P0?v.formatType=y:rge(c)?v.legend=Object.assign({formatType:y},v.legend):sl(c)&&(v.axis=Object.assign({formatType:y},v.axis)))}a[c]=v}else e.push(i),a[c]=t[c]}else a[c]=t[c]}),{bins:o,timeUnits:f,aggregate:r,groupby:e,encoding:a}}function X1e(t,n,e){const o=age(n,e);if(o){if(o==="binned"){const f=t[n===mf?cs:ol];return!!(ti(f)&&ti(t[n])&&xl(f.bin))}}else return!1;return!0}function Z1e(t,n,e,o){const f={};for(const r of Xr(t))PU(r)||Kr(Yge(r));for(let r of Q0e){if(!t[r])continue;const a=t[r];if(e1(r)){const l=zU(r),c=f[l];if(ti(c)){if(Gme(c.type)&&ti(a)){Kr(jge(l));continue}}else r=l,Kr(Uge(l))}if(r==="angle"&&n==="arc"&&!t.theta&&(Kr(Bge),r=Tc),!X1e(t,r,n)){Kr(u3(r,n));continue}if(r===ed&&n==="line"){const l=th(t[r]);if(l?.aggregate){Kr(Gge);continue}}if(r===zu&&(e?"fill"in t:"stroke"in t)){Kr(KU("encoding",{fill:"fill"in t,stroke:"stroke"in t}));continue}if(r===ix||r===rx&&!Ir(a)&&!hf(a)||r===P0&&Ir(a))a&&(f[r]=ki(a).reduce((l,c)=>(ti(c)?l.push(i8(c,r)):Kr(jT(c,r)),l),[]));else{if(r===P0&&a===null)f[r]=null;else if(!ti(a)&&!mh(a)&&!hf(a)&&!m3(a)&&!Vi(a)){Kr(jT(a,r));continue}f[r]=NV(a,r,o)}}return f}function _3(t,n){const e={};for(const o of Xr(t)){const f=NV(t[o],o,n,{compositeMark:!0});e[o]=f}return e}function J1e(t){const n=[];for(const e of Xr(t))if(m0(t,e)){const o=t[e],f=ki(o);for(const r of f)ti(r)?n.push(r):v3(r)&&n.push(r.condition)}return n}function o8(t,n,e){if(!!t)for(const o of Xr(t)){const f=t[o];if(Ir(f))for(const r of f)n.call(e,r,o);else n.call(e,f,o)}}function K1e(t,n,e,o){return t?Xr(t).reduce((f,r)=>{const a=t[r];return Ir(a)?a.reduce((l,c)=>n.call(o,l,c,r),f):n.call(o,f,a,r)},e):e}function $V(t,n){return Xr(n).reduce((e,o)=>{switch(o){case cs:case ol:case r3:case a3:case i3:case mf:case uh:case mp:case Qm:case Tc:case Qh:case vf:case Kh:case ch:case fh:case yf:case _c:case nx:case Ru:case X0:case P0:return e;case rx:if(t==="line"||t==="trail")return e;case ix:case n3:{const f=n[o];if(Ir(f)||ti(f))for(const r of ki(f))r.aggregate||e.push(hi(r,{}));return e}case ed:if(t==="trail")return e;case zu:case hh:case dh:case td:case vp:case yp:case bp:case xp:{const f=th(n[o]);return f&&!f.aggregate&&e.push(hi(f,{})),e}}},[])}var GV=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{const c=o?` of ${s8(n)}`:"";return{field:a+n.field,type:n.type,title:Vi(l)?{signal:`${l}"${escape(c)}"`}:l+c}}),r=J1e(e).map(I1e);return{tooltip:[...f,...Nf(r,Ba)]}}function s8(t){const{title:n,field:e}=t;return Rs(n,e)}function l8(t,n,e,o,f){const{scale:r,axis:a}=e;return({partName:l,mark:c,positionPrefix:i,endPositionPrefix:s=void 0,extraEncoding:u={}})=>{const d=s8(e);return WV(t,l,f,{mark:c,encoding:Object.assign(Object.assign(Object.assign({[n]:Object.assign(Object.assign(Object.assign({field:`${i}_${e.field}`,type:e.type},d!==void 0?{title:d}:{}),r!==void 0?{scale:r}:{}),a!==void 0?{axis:a}:{})},bi(s)?{[`${n}2`]:{field:`${s}_${e.field}`}}:{}),o),u)})}}function WV(t,n,e,o){const{clip:f,color:r,opacity:a}=t,l=t.type;return t[n]||t[n]===void 0&&e[n]?[Object.assign(Object.assign({},o),{mark:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},e[n]),f?{clip:f}:{}),r?{color:r}:{}),a?{opacity:a}:{}),eh(o.mark)?o.mark:{type:o.mark}),{style:`${l}-${String(n)}`}),hp(t[n])?{}:t[n])})]:[]}function YV(t,n,e){const{encoding:o}=t,f=n==="vertical"?"y":"x",r=o[f],a=o[`${f}2`],l=o[`${f}Error`],c=o[`${f}Error2`];return{continuousAxisChannelDef:Ab(r,e),continuousAxisChannelDef2:Ab(a,e),continuousAxisChannelDefError:Ab(l,e),continuousAxisChannelDefError2:Ab(c,e),continuousAxis:f}}function Ab(t,n){if(t?.aggregate){const{aggregate:e}=t,o=GV(t,["aggregate"]);return e!==n&&Kr(wme(e,n)),o}else return t}function XV(t,n){const{mark:e,encoding:o}=t,{x:f,y:r}=o;if(eh(e)&&e.orient)return e.orient;if(Bf(f)){if(Bf(r)){const a=ti(f)&&f.aggregate,l=ti(r)&&r.aggregate;if(!a&&l===n)return"vertical";if(!l&&a===n)return"horizontal";if(a===n&&l===n)throw new Error("Both x and y cannot have aggregate");return Lm(r)&&!Lm(f)?"horizontal":"vertical"}return"horizontal"}else{if(Bf(r))return"vertical";throw new Error(`Need a valid continuous axis for ${n}s`)}}var c_=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fl8(i,y,v,ue,n.boxplot),D=E(M),O=E(k),R=E(Object.assign(Object.assign({},M),A?{size:A}:{})),z=WT([{fieldPrefix:h==="min-max"?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:h==="min-max"?"lower_whisker_":"min_",titlePrefix:"Min"}],v,k),L={type:"tick",color:"black",opacity:1,orient:b,invalid:d,aria:!1},P=h==="min-max"?z:WT([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],v,k),N=[...D({partName:"rule",mark:{type:"rule",invalid:d,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:P}),...D({partName:"rule",mark:{type:"rule",invalid:d,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:P}),...D({partName:"ticks",mark:L,positionPrefix:"lower_whisker",extraEncoding:P}),...D({partName:"ticks",mark:L,positionPrefix:"upper_whisker",extraEncoding:P})],B=[...h!=="tukey"?N:[],...O({partName:"box",mark:Object.assign(Object.assign({type:"bar"},u?{size:u}:{}),{orient:T,invalid:d,ariaRoleDescription:"box"}),positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:z}),...R({partName:"median",mark:Object.assign(Object.assign(Object.assign({type:"tick",invalid:d},Ei(n.boxplot.median)&&n.boxplot.median.color?{color:n.boxplot.median.color}:{}),u?{size:u}:{}),{orient:b,aria:!1}),positionPrefix:"mid_box",extraEncoding:z})];if(h==="min-max")return Object.assign(Object.assign({},c),{transform:((o=c.transform)!==null&&o!==void 0?o:[]).concat(p),layer:B});const G=`datum["lower_box_${v.field}"]`,W=`datum["upper_box_${v.field}"]`,K=`(${W} - ${G})`,te=`${G} - ${s} * ${K}`,Y=`${W} + ${s} * ${K}`,Z=`datum["${v.field}"]`,re={joinaggregate:KV(v.field),groupby:x},U={transform:[{filter:`(${te} <= ${Z}) && (${Z} <= ${Y})`},{aggregate:[{op:"min",field:v.field,as:`lower_whisker_${v.field}`},{op:"max",field:v.field,as:`upper_whisker_${v.field}`},{op:"min",field:`lower_box_${v.field}`,as:`lower_box_${v.field}`},{op:"max",field:`upper_box_${v.field}`,as:`upper_box_${v.field}`},...w],groupby:x}],layer:N},q=c_(M,["tooltip"]),{scale:$,axis:ne}=v,H=s8(v),Q=Eu(ne,["title"]),ee=WV(i,"outliers",n.boxplot,{transform:[{filter:`(${Z} < ${te}) || (${Z} > ${Y})`}],mark:"point",encoding:Object.assign(Object.assign(Object.assign({[y]:Object.assign(Object.assign(Object.assign({field:v.field,type:v.type},H!==void 0?{title:H}:{}),$!==void 0?{scale:$}:{}),_o(Q)?{}:{axis:Q})},q),S?{color:S}:{}),_?{tooltip:_}:{})})[0];let ie;const ae=[...m,...g,re];return ee?ie={transform:ae,layer:[ee,U]}:(ie=U,ie.transform.unshift(...ae)),Object.assign(Object.assign({},c),{layer:[ie,{transform:p,layer:B}]})}function KV(t){return[{op:"q1",field:t,as:`lower_box_${t}`},{op:"q3",field:t,as:`upper_box_${t}`}]}function nve(t,n,e){const o=XV(t,P2),{continuousAxisChannelDef:f,continuousAxis:r}=YV(t,o,P2),a=f.field,l=ZV(n),c=[...KV(a),{op:"median",field:a,as:`mid_box_${a}`},{op:"min",field:a,as:(l==="min-max"?"lower_whisker_":"min_")+a},{op:"max",field:a,as:(l==="min-max"?"upper_whisker_":"max_")+a}],i=l==="min-max"||l==="tukey"?[]:[{calculate:`datum["upper_box_${a}"] - datum["lower_box_${a}"]`,as:`iqr_${a}`},{calculate:`min(datum["upper_box_${a}"] + datum["iqr_${a}"] * ${n}, datum["max_${a}"])`,as:`upper_whisker_${a}`},{calculate:`max(datum["lower_box_${a}"] - datum["iqr_${a}"] * ${n}, datum["min_${a}"])`,as:`lower_whisker_${a}`}],s=t.encoding,u=r;s[u];const d=c_(s,[typeof u=="symbol"?u:u+""]),{customTooltipWithoutAggregatedField:h,filteredEncoding:m}=Q1e(d),{bins:g,timeUnits:p,aggregate:v,groupby:y,encoding:x}=HV(m,e),w=o==="vertical"?"horizontal":"vertical",k=o,b=[...g,...p,{aggregate:[...v,...c],groupby:y},...i];return{bins:g,timeUnits:p,transform:b,groupby:y,aggregate:v,continuousAxisChannelDef:f,continuousAxis:r,encodingWithoutContinuousAxis:x,ticksOrient:w,boxOrient:k,customTooltipWithoutAggregatedField:h}}var dP=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f1?{layer:m}:Object.assign({},m[0]))}function ave(t,n){const{encoding:e}=t;if(ove(e))return{orient:XV(t,n),inputType:"raw"};const o=sve(e),f=lve(e),r=e.x,a=e.y;if(o){if(f)throw new Error(`${n} cannot be both type aggregated-upper-lower and aggregated-error`);const l=e.x2,c=e.y2;if(la(l)&&la(c))throw new Error(`${n} cannot have both x2 and y2`);if(la(l)){if(Bf(r))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error(`Both x and x2 have to be quantitative in ${n}`)}else if(la(c)){if(Bf(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error(`Both y and y2 have to be quantitative in ${n}`)}throw new Error("No ranged axis")}else{const l=e.xError,c=e.xError2,i=e.yError,s=e.yError2;if(la(c)&&!la(l))throw new Error(`${n} cannot have xError2 without xError`);if(la(s)&&!la(i))throw new Error(`${n} cannot have yError2 without yError`);if(la(l)&&la(i))throw new Error(`${n} cannot have both xError and yError with both are quantiative`);if(la(l)){if(Bf(r))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}else if(la(i)){if(Bf(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function ove(t){return(la(t.x)||la(t.y))&&!la(t.x2)&&!la(t.y2)&&!la(t.xError)&&!la(t.xError2)&&!la(t.yError)&&!la(t.yError2)}function sve(t){return la(t.x2)||la(t.y2)}function lve(t){return la(t.xError)||la(t.xError2)||la(t.yError)||la(t.yError2)}function eq(t,n,e){var o;const{mark:f,encoding:r,params:a,projection:l}=t,c=dP(t,["mark","encoding","params","projection"]),i=eh(f)?f:{type:f};a&&Kr(ZU(n));const{orient:s,inputType:u}=ave(t,n),{continuousAxisChannelDef:d,continuousAxisChannelDef2:h,continuousAxisChannelDefError:m,continuousAxisChannelDefError2:g,continuousAxis:p}=YV(t,s,n),{errorBarSpecificAggregate:v,postAggregateCalculates:y,tooltipSummary:x,tooltipTitleWithFieldName:w}=uve(i,d,h,m,g,u,n,e),k=r,b=p;k[b];const T=p==="x"?"x2":"y2";k[T];const _=p==="x"?"xError":"yError";k[_];const S=p==="x"?"xError2":"yError2";k[S];const A=dP(k,[typeof b=="symbol"?b:b+"",typeof T=="symbol"?T:T+"",typeof _=="symbol"?_:_+"",typeof S=="symbol"?S:S+""]),{bins:M,timeUnits:E,aggregate:D,groupby:O,encoding:R}=HV(A,e),z=[...D,...v],L=u!=="raw"?[]:O,P=WT(x,d,R,w);return{transform:[...(o=c.transform)!==null&&o!==void 0?o:[],...M,...E,...z.length===0?[]:[{aggregate:z,groupby:L}],...y],groupby:L,continuousAxisChannelDef:d,continuousAxis:p,encodingWithoutContinuousAxis:R,ticksOrient:s==="vertical"?"horizontal":"vertical",markDef:i,outerSpec:c,tooltipEncoding:P}}function uve(t,n,e,o,f,r,a,l){let c=[],i=[];const s=n.field;let u,d=!1;if(r==="raw"){const h=t.center?t.center:t.extent?t.extent==="iqr"?"median":"mean":l.errorbar.center,m=t.extent?t.extent:h==="mean"?"stderr":"iqr";if(h==="median"!=(m==="iqr")&&Kr(_me(h,m,a)),m==="stderr"||m==="stdev")c=[{op:m,field:s,as:`extent_${s}`},{op:h,field:s,as:`center_${s}`}],i=[{calculate:`datum["center_${s}"] + datum["extent_${s}"]`,as:`upper_${s}`},{calculate:`datum["center_${s}"] - datum["extent_${s}"]`,as:`lower_${s}`}],u=[{fieldPrefix:"center_",titlePrefix:ex(h)},{fieldPrefix:"upper_",titlePrefix:pP(h,m,"+")},{fieldPrefix:"lower_",titlePrefix:pP(h,m,"-")}],d=!0;else{let g,p,v;m==="ci"?(g="mean",p="ci0",v="ci1"):(g="median",p="q1",v="q3"),c=[{op:p,field:s,as:`lower_${s}`},{op:v,field:s,as:`upper_${s}`},{op:g,field:s,as:`center_${s}`}],u=[{fieldPrefix:"upper_",titlePrefix:im({field:s,aggregate:v,type:"quantitative"},l,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:im({field:s,aggregate:p,type:"quantitative"},l,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:im({field:s,aggregate:g,type:"quantitative"},l,{allowDisabling:!1})}]}}else{(t.center||t.extent)&&Kr(bme(t.center,t.extent)),r==="aggregated-upper-lower"?(u=[],i=[{calculate:`datum["${e.field}"]`,as:`upper_${s}`},{calculate:`datum["${s}"]`,as:`lower_${s}`}]):r==="aggregated-error"&&(u=[{fieldPrefix:"",titlePrefix:s}],i=[{calculate:`datum["${s}"] + datum["${o.field}"]`,as:`upper_${s}`}],f?i.push({calculate:`datum["${s}"] + datum["${f.field}"]`,as:`lower_${s}`}):i.push({calculate:`datum["${s}"] - datum["${o.field}"]`,as:`lower_${s}`}));for(const h of i)u.push({fieldPrefix:h.as.substring(0,6),titlePrefix:L0(L0(h.calculate,'datum["',""),'"]',"")})}return{postAggregateCalculates:i,errorBarSpecificAggregate:c,tooltipSummary:u,tooltipTitleWithFieldName:d}}function pP(t,n,e){return`${ex(t)} ${e} ${n}`}const c8="errorband",cve=["band","borders"],fve=new b3(c8,tq);function tq(t,{config:n}){t=Object.assign(Object.assign({},t),{encoding:_3(t.encoding,n)});const{transform:e,continuousAxisChannelDef:o,continuousAxis:f,encodingWithoutContinuousAxis:r,markDef:a,outerSpec:l,tooltipEncoding:c}=eq(t,c8,n),i=a,s=l8(i,f,o,r,n.errorband),u=t.encoding.x!==void 0&&t.encoding.y!==void 0;let d={type:u?"area":"rect"},h={type:u?"line":"rule"};const m=Object.assign(Object.assign({},i.interpolate?{interpolate:i.interpolate}:{}),i.tension&&i.interpolate?{tension:i.tension}:{});return u?(d=Object.assign(Object.assign(Object.assign({},d),m),{ariaRoleDescription:"errorband"}),h=Object.assign(Object.assign(Object.assign({},h),m),{aria:!1})):i.interpolate?Kr(aP("interpolate")):i.tension&&Kr(aP("tension")),Object.assign(Object.assign({},l),{transform:e,layer:[...s({partName:"band",mark:d,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:c}),...s({partName:"borders",mark:h,positionPrefix:"lower",extraEncoding:c}),...s({partName:"borders",mark:h,positionPrefix:"upper",extraEncoding:c})]})}const nq={};function f8(t,n,e){const o=new b3(t,n);nq[t]={normalizer:o,parts:e}}function hve(){return Xr(nq)}f8(P2,JV,eve);f8(u8,QV,rve);f8(c8,tq,cve);const dve=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],rq={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},iq={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},pve=Xr(rq),gve=Xr(iq),mve={header:1,headerRow:1,headerColumn:1,headerFacet:1},aq=Xr(mve),oq=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],vve={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},yve={aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},nh="_vgsid_",xve={point:{on:"click",fields:[nh],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[mousedown, window:mouseup] > window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function h8(t){return t==="legend"||!!t?.legend}function L4(t){return h8(t)&&Ei(t)}function d8(t){return!!t?.select}var bve=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fthis.mapLayerOrUnit(o,e))})}mapHConcat(n,e){return Object.assign(Object.assign({},n),{hconcat:n.hconcat.map(o=>this.map(o,e))})}mapVConcat(n,e){return Object.assign(Object.assign({},n),{vconcat:n.vconcat.map(o=>this.map(o,e))})}mapConcat(n,e){const{concat:o}=n,f=Uve(n,["concat"]);return Object.assign(Object.assign({},f),{concat:o.map(r=>this.map(r,e))})}mapFacet(n,e){return Object.assign(Object.assign({},n),{spec:this.map(n.spec,e)})}mapRepeat(n,e){return Object.assign(Object.assign({},n),{spec:this.map(n.spec,e)})}}const Vve={zero:1,center:1,normalize:1};function qve(t){return t in Vve}const Hve=new Set([vV,f3,c3,S2,d3,YE,XE,h3,yV,WE]),$ve=new Set([f3,c3,vV]);function Bg(t){return ti(t)&&Cm(t)==="quantitative"&&!t.bin}function xP(t,n){var e,o;const f=n==="x"?"y":"radius",r=t[n],a=t[f];if(ti(r)&&ti(a))if(Bg(r)&&Bg(a)){if(r.stack)return n;if(a.stack)return f;const l=ti(r)&&!!r.aggregate,c=ti(a)&&!!a.aggregate;if(l!==c)return l?n:f;{const i=(e=r.scale)===null||e===void 0?void 0:e.type,s=(o=a.scale)===null||o===void 0?void 0:o.type;if(i&&i!=="linear")return f;if(s&&s!=="linear")return n}}else{if(Bg(r))return n;if(Bg(a))return f}else{if(Bg(r))return n;if(Bg(a))return f}}function Gve(t){switch(t){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}function hq(t,n){var e,o;const f=eh(t)?t.type:t;if(!Hve.has(f))return null;const r=xP(n,"x")||xP(n,"theta");if(!r)return null;const a=n[r],l=ti(a)?hi(a,{}):void 0,c=Gve(r),i=[],s=new Set;if(n[c]){const h=n[c],m=ti(h)?hi(h,{}):void 0;m&&m!==l&&(i.push(c),s.add(m));const g=c==="x"?"xOffset":"yOffset",p=n[g],v=ti(p)?hi(p,{}):void 0;v&&v!==l&&(i.push(g),s.add(v))}const u=ege.reduce((h,m)=>{if(m!=="tooltip"&&m0(n,m)){const g=n[m];for(const p of ki(g)){const v=th(p);if(v.aggregate)continue;const y=hi(v,{});(!y||!s.has(y))&&h.push({channel:m,fieldDef:v})}}return h},[]);let d;return a.stack!==void 0?hp(a.stack)?d=a.stack?"zero":null:d=a.stack:$ve.has(f)&&(d="zero"),!d||!qve(d)||a8(n)&&u.length===0?null:((e=a?.scale)===null||e===void 0?void 0:e.type)&&((o=a?.scale)===null||o===void 0?void 0:o.type)!==Cu.LINEAR?(Kr(vme(a.scale.type)),null):la(n[ph(r)])?(a.stack!==void 0&&Kr(mme(r)),null):(ti(a)&&a.aggregate&&!hge.has(a.aggregate)&&Kr(yme(a.aggregate)),{groupbyChannels:i,groupbyFields:s,fieldChannel:r,impute:a.impute===null?!1:Tp(f),stackBy:u,offset:d})}var dq=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f1?n:n.type}function Yve(t){for(const n of["line","area","rule","trail"])t[n]&&(t=Object.assign(Object.assign({},t),{[n]:Eu(t[n],["point","line"])}));return t}function P4(t,n={},e){return t.point==="transparent"?{opacity:0}:t.point?Ei(t.point)?t.point:{}:t.point!==void 0?null:n.point||e.shape?Ei(n.point)?n.point:{}:void 0}function bP(t,n={}){return t.line?t.line===!0?{}:t.line:t.line!==void 0?null:n.line?n.line===!0?{}:n.line:void 0}class Xve{constructor(){this.name="path-overlay"}hasMatchingType(n,e){if(nd(n)){const{mark:o,encoding:f}=n,r=eh(o)?o:{type:o};switch(r.type){case"line":case"rule":case"trail":return!!P4(r,e[r.type],f);case"area":return!!P4(r,e[r.type],f)||!!bP(r,e[r.type])}}return!1}run(n,e,o){const{config:f}=e,{params:r,projection:a,mark:l,encoding:c}=n,i=dq(n,["params","projection","mark","encoding"]),s=_3(c,f),u=eh(l)?l:{type:l},d=P4(u,f[u.type],s),h=u.type==="area"&&bP(u,f[u.type]),m=[Object.assign(Object.assign({},r?{params:r}:{}),{mark:Wve(Object.assign(Object.assign({},u.type==="area"&&u.opacity===void 0&&u.fillOpacity===void 0?{opacity:.7}:{}),u)),encoding:Eu(s,["shape"])})],g=hq(u,s);let p=s;if(g){const{fieldChannel:v,offset:y}=g;p=Object.assign(Object.assign({},s),{[v]:Object.assign(Object.assign({},s[v]),y?{stack:y}:{})})}return p=Eu(p,["y2","x2"]),h&&m.push(Object.assign(Object.assign({},a?{projection:a}:{}),{mark:Object.assign(Object.assign({type:"line"},Tm(u,["clip","interpolate","tension","tooltip"])),h),encoding:p})),d&&m.push(Object.assign(Object.assign({},a?{projection:a}:{}),{mark:Object.assign(Object.assign({type:"point",opacity:1,filled:!0},Tm(u,["clip","tooltip"])),d),encoding:p})),o(Object.assign(Object.assign({},i),{layer:m}),Object.assign(Object.assign({},e),{config:Yve(f)}))}}var Zve=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fwP(r,n)).filter(r=>r);else{const r=wP(f,n);r!==void 0&&(e[o]=r)}}return e}class Kve{constructor(){this.name="RuleForRangedLine"}hasMatchingType(n){if(nd(n)){const{encoding:e,mark:o}=n;if(o==="line"||eh(o)&&o.type==="line")for(const f of J0e){const r=Z0(f),a=e[r];if(e[f]&&(ti(a)&&!xl(a.bin)||mh(a)))return!0}}return!1}run(n,e,o){const{encoding:f,mark:r}=n;return Kr(Qge(!!f.x2,!!f.y2)),o(Object.assign(Object.assign({},n),{mark:Ei(r)?Object.assign(Object.assign({},r),{type:"rule"}):"rule"}),e)}}var gd=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{const d=Object.assign(Object.assign({},i),{layer:u}),h=`${(f.name||"")+s}child__layer_${Xo(u)}`,m=this.mapLayerOrUnit(f,Object.assign(Object.assign({},e),{repeater:d,repeaterPrefix:h}));return m.name=h,m})})}mapNonLayerRepeat(n,e){var o;const{repeat:f,spec:r,data:a}=n,l=gd(n,["repeat","spec","data"]);!Ir(f)&&n.columns&&(n=Eu(n,["columns"]),Kr(tP("repeat")));const c=[],{repeater:i={},repeaterPrefix:s=""}=e,u=!Ir(f)&&f.row||[i?i.row:null],d=!Ir(f)&&f.column||[i?i.column:null],h=Ir(f)&&f||[i?i.repeat:null];for(const g of h)for(const p of u)for(const v of d){const y={repeat:g,row:p,column:v,layer:i.layer},x=(r.name||"")+s+"child__"+(Ir(f)?`${Xo(g)}`:(f.row?`row_${Xo(p)}`:"")+(f.column?`column_${Xo(v)}`:"")),w=this.map(r,Object.assign(Object.assign({},e),{repeater:y,repeaterPrefix:x}));w.name=x,c.push(Eu(w,["data"]))}const m=Ir(f)?n.columns:f.column?f.column.length:1;return Object.assign(Object.assign({data:(o=r.data)!==null&&o!==void 0?o:a,align:"all"},l),{columns:m,concat:c})}mapFacet(n,e){const{facet:o}=n;return lx(o)&&n.columns&&(n=Eu(n,["columns"]),Kr(tP("facet"))),super.mapFacet(n,e)}mapUnitWithParentEncodingOrProjection(n,e){const{encoding:o,projection:f}=n,{parentEncoding:r,parentProjection:a,config:l}=e,c=TP({parentProjection:a,projection:f}),i=kP({parentEncoding:r,encoding:D4(o,e.repeater)});return this.mapUnit(Object.assign(Object.assign(Object.assign({},n),c?{projection:c}:{}),i?{encoding:i}:{}),{config:l})}mapFacetedUnit(n,e){const o=n.encoding,{row:f,column:r,facet:a}=o,l=gd(o,["row","column","facet"]),{mark:c,width:i,projection:s,height:u,view:d,params:h,encoding:m}=n,g=gd(n,["mark","width","projection","height","view","params","encoding"]),{facetMapping:p,layout:v}=this.getFacetMappingAndLayout({row:f,column:r,facet:a},e),y=D4(l,e.repeater);return this.mapFacet(Object.assign(Object.assign(Object.assign({},g),v),{facet:p,spec:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},i?{width:i}:{}),u?{height:u}:{}),d?{view:d}:{}),s?{projection:s}:{}),{mark:c,encoding:y}),h?{params:h}:{})}),e)}getFacetMappingAndLayout(n,e){var o;const{row:f,column:r,facet:a}=n;if(f||r){a&&Kr(Jge([...f?[Uh]:[],...r?[Vh]:[]]));const l={},c={};for(const i of[Uh,Vh]){const s=n[i];if(s){const u=gd(s,["align","center","spacing","columns"]);l[i]=u;for(const d of["align","center","spacing"])s[d]!==void 0&&((o=c[d])!==null&&o!==void 0||(c[d]={}),c[d][i]=s[d])}}return{facetMapping:l,layout:c}}else{const{align:l,center:c,spacing:i,columns:s}=a,u=gd(a,["align","center","spacing","columns"]);return{facetMapping:Jve(u,e.repeater),layout:Object.assign(Object.assign(Object.assign(Object.assign({},l?{align:l}:{}),c?{center:c}:{}),i?{spacing:i}:{}),s?{columns:s}:{})}}}mapLayer(n,e){var{parentEncoding:o,parentProjection:f}=e,r=gd(e,["parentEncoding","parentProjection"]);const{encoding:a,projection:l}=n,c=gd(n,["encoding","projection"]),i=Object.assign(Object.assign({},r),{parentEncoding:kP({parentEncoding:o,encoding:a,layer:!0}),parentProjection:TP({parentProjection:f,projection:l})});return super.mapLayer(c,i)}}function kP({parentEncoding:t,encoding:n={},layer:e}){let o={};if(t){const f=new Set([...Xr(t),...Xr(n)]);for(const r of f){const a=n[r],l=t[r];if(la(a)){const c=Object.assign(Object.assign({},l),a);o[r]=c}else ux(a)?o[r]=Object.assign(Object.assign({},a),{condition:Object.assign(Object.assign({},l),a.condition)}):a||a===null?o[r]=a:(e||hf(l)||Vi(l)||la(l)||Ir(l))&&(o[r]=l)}}else o=n;return!o||_o(o)?void 0:o}function TP(t){const{parentProjection:n,projection:e}=t;return n&&e&&Kr(Nge({parentProjection:n,projection:e})),e??n}function v8(t){return"filter"in t}function eye(t){return t?.stop!==void 0}function mq(t){return"lookup"in t}function tye(t){return"data"in t}function nye(t){return"param"in t}function rye(t){return"pivot"in t}function iye(t){return"density"in t}function aye(t){return"quantile"in t}function oye(t){return"regression"in t}function sye(t){return"loess"in t}function lye(t){return"sample"in t}function uye(t){return"window"in t}function cye(t){return"joinaggregate"in t}function fye(t){return"flatten"in t}function hye(t){return"calculate"in t}function vq(t){return"bin"in t}function dye(t){return"impute"in t}function pye(t){return"timeUnit"in t}function gye(t){return"aggregate"in t}function mye(t){return"stack"in t}function vye(t){return"fold"in t}function yye(t){return t.map(n=>v8(n)?{filter:nm(n.filter,$me)}:n)}var $d=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{var c;const i=l,{init:s,bind:u,empty:d}=i,h=$d(i,["init","bind","empty"]);h.type==="single"?(h.type="point",h.toggle=!1):h.type==="multi"&&(h.type="point"),e.emptySelections[a]=d!=="none";for(const m of ql((c=e.selectionPredicates[a])!==null&&c!==void 0?c:{}))m.empty=d!=="none";return{name:a,value:s,select:h,bind:u}})}):n}}function AP(t,n){const{transform:e}=t,o=$d(t,["transform"]);if(e){const f=e.map(r=>{if(v8(r))return{filter:ZT(r,n)};if(vq(r)&&J0(r.bin))return Object.assign(Object.assign({},r),{bin:xq(r.bin)});if(mq(r)){const a=r.from,{selection:l}=a,c=$d(a,["selection"]);return l?Object.assign(Object.assign({},r),{from:Object.assign({param:l},c)}):r}return r});return Object.assign(Object.assign({},o),{transform:f})}return t}function yq(t,n){var e,o;const f=ha(t);if(ti(f)&&J0(f.bin)&&(f.bin=xq(f.bin)),Q0(f)&&((o=(e=f.scale)===null||e===void 0?void 0:e.domain)===null||o===void 0?void 0:o.selection)){const r=f.scale.domain,{selection:a}=r,l=$d(r,["selection"]);f.scale.domain=Object.assign(Object.assign({},l),a?{param:a}:{})}if(m3(f))if(Ir(f.condition))f.condition=f.condition.map(r=>{const{selection:a,param:l,test:c}=r,i=$d(r,["selection","param","test"]);return l?r:Object.assign(Object.assign({},i),{test:ZT(r,n)})});else{const r=yq(f.condition,n),{selection:a,param:l,test:c}=r,i=$d(r,["selection","param","test"]);f.condition=l?f.condition:Object.assign(Object.assign({},i),{test:ZT(f.condition,n)})}return f}function xq(t){const n=t.extent;if(n?.selection){const{selection:e}=n,o=$d(n,["selection"]);return Object.assign(Object.assign({},t),{extent:Object.assign(Object.assign({},o),{param:e})})}return t}function ZT(t,n){const e=o=>nm(o,f=>{var r,a,l;const c=(r=n.emptySelections[f])!==null&&r!==void 0?r:!0,i={param:f,empty:c};return(a=(l=n.selectionPredicates)[f])!==null&&a!==void 0||(l[f]=[]),n.selectionPredicates[f].push(i),i});return t.selection?e(t.selection):nm(t.test||t.filter,o=>o.selection?e(o.selection):o)}class JT extends m8{map(n,e){var o;const f=(o=e.selections)!==null&&o!==void 0?o:[];if(n.params&&!nd(n)){const r=[];for(const a of n.params)d8(a)?f.push(a):r.push(a);n.params=r}return e.selections=f,super.map(n,bq(n,e))}mapUnit(n,e){var o;const f=e.selections;if(!f||!f.length)return n;const r=((o=e.path)!==null&&o!==void 0?o:[]).concat(n.name),a=[];for(const l of f)if(!l.views||!l.views.length)a.push(l);else for(const c of l.views)(bi(c)&&(c===n.name||r.indexOf(c)>=0)||Ir(c)&&c.map(i=>r.indexOf(i)).every((i,s,u)=>i!==-1&&(s===0||i>u[s-1])))&&a.push(l);return a.length&&(n.params=a),n}}for(const t of["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"]){const n=JT.prototype[t];JT.prototype[t]=function(e,o){return n.call(this,e,bq(e,o))}}function bq(t,n){var e;return t.name?Object.assign(Object.assign({},n),{path:((e=n.path)!==null&&e!==void 0?e:[]).concat(t.name)}):n}function _q(t,n){n===void 0&&(n=fq(t.config));const e=kye(t,n),{width:o,height:f}=t,r=Tye(e,{width:o,height:f,autosize:t.autosize},n);return Object.assign(Object.assign({},e),r?{autosize:r}:{})}const bye=new Qve,_ye=new xye,wye=new JT;function kye(t,n={}){const e={config:n};return wye.map(bye.map(_ye.map(t,e),e),e)}function MP(t){return bi(t)?{type:t}:t??{}}function Tye(t,n,e){let{width:o,height:f}=n;const r=nd(t)||k3(t),a={};r?o=="container"&&f=="container"?(a.type="fit",a.contains="padding"):o=="container"?(a.type="fit-x",a.contains="padding"):f=="container"&&(a.type="fit-y",a.contains="padding"):(o=="container"&&(Kr(JL("width")),o=void 0),f=="container"&&(Kr(JL("height")),f=void 0));const l=Object.assign(Object.assign(Object.assign({type:"pad"},a),e?MP(e.autosize):{}),MP(t.autosize));if(l.type==="fit"&&!r&&(Kr(wge),l.type="pad"),o=="container"&&!(l.type=="fit"||l.type=="fit-x")&&Kr(KL("width")),f=="container"&&!(l.type=="fit"||l.type=="fit-y")&&Kr(KL("height")),!Ff(l,{type:"pad"}))return l}function Aye(t){return t==="fit"||t==="fit-x"||t==="fit-y"}function Mye(t){return t?`fit-${o3(t)}`:"fit"}const Sye=["background","padding"];function SP(t,n){const e={};for(const o of Sye)t&&t[o]!==void 0&&(e[o]=Xu(t[o]));return n&&(e.params=t.params),e}class rd{constructor(n={},e={}){this.explicit=n,this.implicit=e}clone(){return new rd(ha(this.explicit),ha(this.implicit))}combine(){return Object.assign(Object.assign({},this.explicit),this.implicit)}get(n){return Rs(this.explicit[n],this.implicit[n])}getWithExplicit(n){return this.explicit[n]!==void 0?{explicit:!0,value:this.explicit[n]}:this.implicit[n]!==void 0?{explicit:!1,value:this.implicit[n]}:{explicit:!1,value:void 0}}setWithExplicit(n,{value:e,explicit:o}){e!==void 0&&this.set(n,e,o)}set(n,e,o){return delete this[o?"implicit":"explicit"][n],this[o?"explicit":"implicit"][n]=e,this}copyKeyFromSplit(n,{explicit:e,implicit:o}){e[n]!==void 0?this.set(n,e[n],!0):o[n]!==void 0&&this.set(n,o[n],!1)}copyKeyFromObject(n,e){e[n]!==void 0&&this.set(n,e[n],!0)}copyAll(n){for(const e of Xr(n.combine())){const o=n.getWithExplicit(e);this.setWithExplicit(e,o)}}}function Lf(t){return{explicit:!0,value:t}}function Gu(t){return{explicit:!1,value:t}}function wq(t){return(n,e,o,f)=>{const r=t(n.value,e.value);return r>0?n:r<0?e:T3(n,e,o,f)}}function T3(t,n,e,o){return t.explicit&&n.explicit&&Kr(ume(e,o,t.value,n.value)),t}function op(t,n,e,o,f=T3){return t===void 0||t.value===void 0?n:t.explicit&&!n.explicit?t:n.explicit&&!t.explicit?n:Ff(t.value,n.value)?t:f(t,n,e,o)}class Eye extends rd{constructor(n={},e={},o=!1){super(n,e),this.explicit=n,this.implicit=e,this.parseNothing=o}clone(){const n=super.clone();return n.parseNothing=this.parseNothing,n}}function Pm(t){return"url"in t}function gy(t){return"values"in t}function kq(t){return"name"in t&&!Pm(t)&&!gy(t)&&!Gd(t)}function Gd(t){return t&&(Tq(t)||Aq(t)||y8(t))}function Tq(t){return"sequence"in t}function Aq(t){return"sphere"in t}function y8(t){return"graticule"in t}var Fo;(function(t){t[t.Raw=0]="Raw",t[t.Main=1]="Main",t[t.Row=2]="Row",t[t.Column=3]="Column",t[t.Lookup=4]="Lookup"})(Fo||(Fo={}));var Cye=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fF0(f,n,e));return n?`[${o.join(", ")}]`:o}else if(K0(t))return e(n?py(t):Ime(t));return n?e(No(t)):t}function Oye(t,n){var e;for(const o of ql((e=t.component.selection)!==null&&e!==void 0?e:{})){const f=o.name;let r=`${f}${up}, ${o.resolve==="global"?"true":`{unit: ${Dm(t)}}`}`;for(const a of M3)!a.defined(o)||(a.signals&&(n=a.signals(t,o,n)),a.modifyExpr&&(r=a.modifyExpr(t,o,r)));n.push({name:f+uxe,on:[{events:{signal:o.name+up},update:`modify(${oi(o.name+N0)}, ${r})`}]})}return x8(n)}function Lye(t,n){if(t.component.selection&&Xr(t.component.selection).length){const e=oi(t.getName("cell"));n.unshift({name:"facet",value:{},on:[{events:gp("mousemove","scope"),update:`isTuple(facet) ? facet : group(${e}).datum`}]})}return x8(n)}function Pye(t,n){var e;let o=!1;for(const f of ql((e=t.component.selection)!==null&&e!==void 0?e:{})){const r=f.name,a=oi(r+N0);if(n.filter(c=>c.name===r).length===0){const c=f.resolve==="global"?"union":f.resolve,i=f.type==="point"?", true, true)":")";n.push({name:f.name,update:`${Uq}(${a}, ${oi(c)}${i}`})}o=!0;for(const c of M3)c.defined(f)&&c.topLevelSignals&&(n=c.topLevelSignals(t,f,n))}return o&&n.filter(r=>r.name==="unit").length===0&&n.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]}),x8(n)}function Dye(t,n){var e;const o=[...n],f=Dm(t,{escape:!1});for(const r of ql((e=t.component.selection)!==null&&e!==void 0?e:{})){const a={name:r.name+N0};if(r.project.hasSelectionId&&(a.transform=[{type:"collect",sort:{field:nh}}]),r.init){const c=r.project.items.map(i=>Cye(i,["signals"]));a.values=r.project.hasSelectionId?r.init.map(i=>({unit:f,[nh]:F0(i,!1)[0]})):r.init.map(i=>({unit:f,fields:c,values:F0(i,!1)}))}o.filter(c=>c.name===r.name+N0).length||o.push(a)}return o}function Mq(t,n){var e;for(const o of ql((e=t.component.selection)!==null&&e!==void 0?e:{}))for(const f of M3)f.defined(o)&&f.marks&&(n=f.marks(t,o,n));return n}function Iye(t,n){for(const e of t.children)Is(e)&&(n=Mq(e,n));return n}function zye(t,n,e,o){const f=Gq(t,n.param,n);return{signal:rc(e.get("type"))&&Ir(o)&&o[0]>o[1]?`isValid(${f}) && reverse(${f})`:f}}function x8(t){return t.map(n=>(n.on&&!n.on.length&&delete n.on,n))}class To{constructor(n,e){this.debugName=e,this._children=[],this._parent=null,n&&(this.parent=n)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(n){this._parent=n,n&&n.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(n,e){if(this._children.includes(n)){Kr(zge);return}e!==void 0?this._children.splice(e,0,n):this._children.push(n)}removeChild(n){const e=this._children.indexOf(n);return this._children.splice(e,1),e}remove(){let n=this._parent.removeChild(this);for(const e of this._children)e._parent=this._parent,this._parent.addChild(e,n++)}insertAsParentOf(n){const e=n.parent;e.removeChild(this),this.parent=e,n.parent=this}swapWithParent(){const n=this._parent,e=n.parent;for(const f of this._children)f.parent=n;this._children=[],n.removeChild(this);const o=n.parent.removeChild(n);this._parent=e,e.addChild(this,o),n.parent=this}}class fu extends To{constructor(n,e,o,f){super(n,e),this.type=o,this.refCounts=f,this._source=this._name=e,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}clone(){const n=new this.constructor;return n.debugName=`clone_${this.debugName}`,n._source=this._source,n._name=`clone_${this._name}`,n.type=this.type,n.refCounts=this.refCounts,n.refCounts[n._name]=0,n}dependentFields(){return new Set}producedFields(){return new Set}hash(){return this._hash===void 0&&(this._hash=`Output ${MU()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(n){this._source=n}}var EP=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{const{field:a,timeUnit:l}=r;if(l){const c=hi(r,{forAs:!0});f[Ba({as:c,field:a,timeUnit:l})]={as:c,field:a,timeUnit:l}}return f},{});return _o(o)?null:new Gf(n,o)}static makeFromTransform(n,e){const o=Object.assign({},e),{timeUnit:f}=o,r=EP(o,["timeUnit"]),a=Gl(f),l=Object.assign(Object.assign({},r),{timeUnit:a});return new Gf(n,{[Ba(l)]:l})}merge(n){this.formula=Object.assign({},this.formula);for(const e in n.formula)this.formula[e]||(this.formula[e]=n.formula[e]);for(const e of n.children)n.removeChild(e),e.parent=this;n.remove()}removeFormulas(n){const e={};for(const[o,f]of ip(this.formula))n.has(f.as)||(e[o]=f);this.formula=e}producedFields(){return new Set(ql(this.formula).map(n=>n.as))}dependentFields(){return new Set(ql(this.formula).map(n=>n.field))}hash(){return`TimeUnit ${Ba(this.formula)}`}assemble(){const n=[];for(const e of ql(this.formula)){const{field:o,as:f,timeUnit:r}=e,a=Gl(r),{unit:l,utc:c}=a,i=EP(a,["unit","utc"]);n.push(Object.assign(Object.assign(Object.assign(Object.assign({field:bc(o),type:"timeunit"},l?{units:RE(l)}:{}),c?{timezone:"utc"}:{}),i),{as:[f,`${f}_end`]}))}return n}}var Rye=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f!0,parse:(t,n,e)=>{var o;const f=n.name,r=(o=n.project)!==null&&o!==void 0?o:n.project=new Fye,a={},l={},c=new Set,i=(g,p)=>{const v=p==="visual"?g.channel:g.field;let y=Xo(`${f}_${v}`);for(let x=1;c.has(y);x++)y=Xo(`${f}_${v}_${x}`);return c.add(y),{[p]:y}},s=n.type,u=t.config.selection[s],d=e.value!==void 0?ki(e.value):null;let{fields:h,encodings:m}=Ei(e.select)?e.select:{};if(!h&&!m&&d){for(const g of d)if(!!Ei(g))for(const p of Xr(g))Z0e(p)?(m||(m=[])).push(p):s==="interval"?(Kr(Lge),m=u.encodings):(h||(h=[])).push(p)}!h&&!m&&(m=u.encodings,"fields"in u&&(h=u.fields));for(const g of m??[]){const p=t.fieldDef(g);if(p){let v=p.field;if(p.aggregate){Kr(kge(g,p.aggregate));continue}else if(!v){Kr(eP(g));continue}if(p.timeUnit){v=t.vgField(g);const y={timeUnit:p.timeUnit,as:v,field:p.field};l[Ba(y)]=y}if(!a[v]){let y="E";if(s==="interval"){const w=t.getScaleComponent(g).get("type");rc(w)&&(y="R")}else p.bin&&(y="R-RE");const x={field:v,channel:g,type:y};x.signals=Object.assign(Object.assign({},i(x,"data")),i(x,"visual")),r.items.push(a[v]=x),r.hasField[v]=r.hasChannel[g]=a[v],r.hasSelectionId=r.hasSelectionId||v===nh}}else Kr(eP(g))}for(const g of h??[]){if(r.hasField[g])continue;const p={type:"E",field:g};p.signals=Object.assign({},i(p,"data")),r.items.push(p),r.hasField[g]=p,r.hasSelectionId=r.hasSelectionId||g===nh}d&&(n.init=d.map(g=>r.items.map(p=>Ei(g)?g[p.channel]!==void 0?g[p.channel]:g[p.field]:g))),_o(l)||(r.timeUnit=new Gf(null,l))},signals:(t,n,e)=>{const o=n.name+hx;return e.filter(r=>r.name===o).length>0||n.project.hasSelectionId?e:e.concat({name:o,value:n.project.items.map(r=>{const a=Rye(r,["signals","hasLegend"]);return a.field=bc(a.field),a})})}},sp={defined:t=>t.type==="interval"&&t.resolve==="global"&&t.bind&&t.bind==="scales",parse:(t,n)=>{const e=n.scales=[];for(const o of n.project.items){const f=o.channel;if(!_p(f))continue;const r=t.getScaleComponent(f),a=r?r.get("type"):void 0;if(!r||!rc(a)){Kr(Mge);continue}r.set("selectionExtent",{param:n.name,field:o.field},!0),e.push(o)}},topLevelSignals:(t,n,e)=>{const o=n.scales.filter(a=>e.filter(l=>l.name===a.signals.data).length===0);if(!t.parent||QT(t)||o.length===0)return e;const f=e.filter(a=>a.name===n.name)[0];let r=f.update;if(r.indexOf(Uq)>=0)f.update=`{${o.map(a=>`${oi(bc(a.field))}: ${a.signals.data}`).join(", ")}}`;else{for(const a of o){const l=`${oi(bc(a.field))}: ${a.signals.data}`;r.includes(l)||(r=`${r.substring(0,r.length-1)}, ${l}}`)}f.update=r}return e.concat(o.map(a=>({name:a.signals.data})))},signals:(t,n,e)=>{if(t.parent&&!QT(t))for(const o of n.scales){const f=e.filter(r=>r.name===o.signals.data)[0];f.push="outer",delete f.value,delete f.update}return e}};function KT(t,n){return`domain(${oi(t.scaleName(n))})`}function QT(t){var n;return t.parent&&o1(t.parent)&&((n=!t.parent.parent)!==null&&n!==void 0?n:QT(t.parent.parent))}var Bye=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);ft.type==="interval",signals:(t,n,e)=>{const o=n.name,f=o+hx,r=sp.defined(n),a=n.init?n.init[0]:null,l=[],c=[];if(n.translate&&!r){const s=`!event.item || event.item.mark.name !== ${oi(o+am)}`;Sq(n,(u,d)=>{var h,m;const g=ki((h=(m=d.between[0]).filter)!==null&&h!==void 0?h:m.filter=[]);return g.includes(s)||g.push(s),u})}n.project.items.forEach((s,u)=>{const d=s.channel;if(d!==cs&&d!==ol){Kr("Interval selections only support x and y encoding channels.");return}const h=a?a[u]:null,m=Uye(t,n,s,h),g=s.signals.data,p=s.signals.visual,v=oi(t.scaleName(d)),y=t.getScaleComponent(d).get("type"),x=rc(y)?"+":"";e.push(...m),l.push(g),c.push({scaleName:t.scaleName(d),expr:`(!isArray(${g}) || (${x}invert(${v}, ${p})[0] === ${x}${g}[0] && ${x}invert(${v}, ${p})[1] === ${x}${g}[1]))`})}),!r&&c.length&&e.push({name:o+eA,value:{},on:[{events:c.map(s=>({scale:s.scaleName})),update:`${c.map(s=>s.expr).join(" && ")} ? ${o+eA} : {}`}]});const i=`unit: ${Dm(t)}, fields: ${f}, values`;return e.concat(Object.assign(Object.assign({name:o+up},a?{init:`{${i}: ${F0(a)}}`}:{}),l.length?{on:[{events:[{signal:l.join(" || ")}],update:`${l.join(" && ")} ? {${i}: [${l}]} : null`}]}:{}))},marks:(t,n,e)=>{const o=n.name,{x:f,y:r}=n.project.hasChannel,a=f?.signals.visual,l=r?.signals.visual,c=`data(${oi(n.name+N0)})`;if(sp.defined(n)||!f&&!r)return e;const i={x:f!==void 0?{signal:`${a}[0]`}:{value:0},y:r!==void 0?{signal:`${l}[0]`}:{value:0},x2:f!==void 0?{signal:`${a}[1]`}:{field:{group:"width"}},y2:r!==void 0?{signal:`${l}[1]`}:{field:{group:"height"}}};if(n.resolve==="global")for(const p of Xr(i))i[p]=[Object.assign({test:`${c}.length && ${c}[0].unit === ${Dm(t)}`},i[p]),{value:0}];const s=n.mark,{fill:u,fillOpacity:d,cursor:h}=s,m=Bye(s,["fill","fillOpacity","cursor"]),g=Xr(m).reduce((p,v)=>(p[v]=[{test:[f!==void 0&&`${a}[0] !== ${a}[1]`,r!==void 0&&`${l}[0] !== ${l}[1]`].filter(y=>y).join(" && "),value:m[v]},{value:null}],p),{});return[{name:`${o+am}_bg`,type:"rect",clip:!0,encode:{enter:{fill:{value:u},fillOpacity:{value:d}},update:i}},...e,{name:o+am,type:"rect",clip:!0,encode:{enter:Object.assign(Object.assign({},h?{cursor:{value:h}}:{}),{fill:{value:"transparent"}}),update:Object.assign(Object.assign({},i),g)}}]}};function Uye(t,n,e,o){const f=e.channel,r=e.signals.visual,a=e.signals.data,l=sp.defined(n),c=oi(t.scaleName(f)),i=t.getScaleComponent(f),s=i?i.get("type"):void 0,u=g=>`scale(${c}, ${g})`,d=t.getSizeSignalRef(f===cs?"width":"height").signal,h=`${f}(unit)`,m=Sq(n,(g,p)=>[...g,{events:p.between[0],update:`[${h}, ${h}]`},{events:p,update:`[${r}[0], clamp(${h}, 0, ${d})]`}]);return m.push({events:{signal:n.name+eA},update:rc(s)?`[${u(`${a}[0]`)}, ${u(`${a}[1]`)}]`:"[0, 0]"}),l?[{name:a,on:[]}]:[Object.assign(Object.assign({name:r},o?{init:F0(o,!0,u)}:{value:[]}),{on:m}),Object.assign(Object.assign({name:a},o?{init:F0(o)}:{}),{on:[{events:{signal:r},update:`${r}[0] === ${r}[1] ? null : invert(${c}, ${r})`}]})]}function Sq(t,n){return t.events.reduce((e,o)=>o.between?n(e,o):(Kr(`${o} is not an ordered event stream for interval selections.`),e),[])}const Vye={defined:t=>t.type==="point",signals:(t,n,e)=>{var o;const f=n.name,r=f+hx,a=n.project,l="(item().isVoronoi ? datum.datum : datum)",c=ql((o=t.component.selection)!==null&&o!==void 0?o:{}).reduce((d,h)=>h.type==="interval"?d.concat(h.name+am):d,[]).map(d=>`indexof(item().mark.name, '${d}') < 0`).join(" && "),i=`datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0${c?` && ${c}`:""}`;let s=`unit: ${Dm(t)}, `;if(n.project.hasSelectionId)s+=`${nh}: ${l}[${oi(nh)}]`;else{const d=a.items.map(h=>{const m=t.fieldDef(h.channel);return m?.bin?`[${l}[${oi(t.vgField(h.channel,{}))}], ${l}[${oi(t.vgField(h.channel,{binSuffix:"end"}))}]]`:`${l}[${oi(h.field)}]`}).join(", ");s+=`fields: ${r}, values: [${d}]`}const u=n.events;return e.concat([{name:f+up,on:u?[{events:u,update:`${i} ? {${s}} : null`,force:!0}]:[]}])}};function n1(t,n,e,o){const f=m3(n)&&n.condition,r=o(n);if(f){const l=ki(f).map(c=>{const i=o(c);if(L1e(c)){const{param:s,empty:u}=c,d=$q(t,{param:s,empty:u});return Object.assign({test:d},i)}else{const s=F2(t,c.test);return Object.assign({test:s},i)}});return{[e]:[...l,...r!==void 0?[r]:[]]}}else return r!==void 0?{[e]:r}:{}}function b8(t,n="text"){const e=t.encoding[n];return n1(t,e,n,o=>A3(o,t.config))}function A3(t,n,e="datum"){if(t){if(hf(t))return Ho(t.value);if(la(t)){const{format:o,formatType:f}=O2(t);return QE({fieldOrDatumDef:t,format:o,formatType:f,expr:e,config:n})}}}function Eq(t,n={}){const{encoding:e,markDef:o,config:f,stack:r}=t,a=e.tooltip;if(Ir(a))return{tooltip:CP({tooltip:a},r,f,n)};{const l=n.reactiveGeom?"datum.datum":"datum";return n1(t,a,"tooltip",c=>{const i=A3(c,f,l);if(i)return i;if(c===null)return;let s=oo("tooltip",o,f);if(s===!0&&(s={content:"encoding"}),bi(s))return{value:s};if(Ei(s))return Vi(s)?s:s.content==="encoding"?CP(e,r,f,n):{signal:l}})}}function Cq(t,n,e,{reactiveGeom:o}={}){const f={},r=o?"datum.datum":"datum",a=[];function l(i,s){const u=Z0(s),d=wc(i)?i:Object.assign(Object.assign({},i),{type:t[u].type}),h=d.title||r8(d,e),m=ki(h).join(", ");let g;if(sl(s)){const p=s==="x"?"x2":"y2",v=th(t[p]);if(xl(d.bin)&&v){const y=hi(d,{expr:r}),x=hi(v,{expr:r}),{format:w,formatType:k}=O2(d);g=sx(y,x,w,k,e),f[p]=!0}}if((sl(s)||s===Tc||s===vf)&&n&&n.fieldChannel===s&&n.offset==="normalize"){const{format:p,formatType:v}=O2(d);g=QE({fieldOrDatumDef:d,format:p,formatType:v,expr:r,config:e,normalizeStack:!0}).signal}g??(g=A3(d,e,r).signal),a.push({channel:s,key:m,value:g})}o8(t,(i,s)=>{ti(i)?l(i,s):v3(i)&&l(i.condition,s)});const c={};for(const{channel:i,key:s,value:u}of a)!f[i]&&!c[s]&&(c[s]=u);return c}function CP(t,n,e,{reactiveGeom:o}={}){const f=Cq(t,n,e,{reactiveGeom:o}),r=ip(f).map(([a,l])=>`"${a}": ${l}`);return r.length>0?{signal:`{${r.join(", ")}}`}:void 0}function qye(t){const{markDef:n,config:e}=t,o=oo("aria",n,e);return o===!1?{}:Object.assign(Object.assign(Object.assign({},o?{aria:o}:{}),Hye(t)),$ye(t))}function Hye(t){const{mark:n,markDef:e,config:o}=t;if(o.aria===!1)return{};const f=oo("ariaRoleDescription",e,o);return f!=null?{ariaRoleDescription:{value:f}}:n in xge?{}:{ariaRoleDescription:{value:n}}}function $ye(t){const{encoding:n,markDef:e,config:o,stack:f}=t,r=n.description;if(r)return n1(t,r,"description",c=>A3(c,t.config));const a=oo("description",e,o);if(a!=null)return{description:Ho(a)};if(o.aria===!1)return{};const l=Cq(n,f,o);if(!_o(l))return{description:{signal:ip(l).map(([c,i],s)=>`"${s>0?"; ":""}${c}: " + (${i})`).join(" + ")}}}function nl(t,n,e={}){const{markDef:o,encoding:f,config:r}=n,{vgChannel:a}=e;let{defaultRef:l,defaultValue:c}=e;l===void 0&&(c??(c=oo(t,o,r,{vgChannel:a,ignoreVgConfig:!0})),c!==void 0&&(l=Ho(c)));const i=f[t];return n1(n,i,a??t,s=>KE({channel:t,channelDef:s,markDef:o,config:r,scaleName:n.scaleName(t),scale:n.getScaleComponent(t),stack:null,defaultRef:l}))}function Oq(t,n={filled:void 0}){var e,o,f,r;const{markDef:a,encoding:l,config:c}=t,{type:i}=a,s=(e=n.filled)!==null&&e!==void 0?e:oo("filled",a,c),u=Fa(["bar","point","circle","square","geoshape"],i)?"transparent":void 0,d=(f=(o=oo(s===!0?"color":void 0,a,c,{vgChannel:"fill"}))!==null&&o!==void 0?o:c.mark[s===!0&&"color"])!==null&&f!==void 0?f:u,h=(r=oo(s===!1?"color":void 0,a,c,{vgChannel:"stroke"}))!==null&&r!==void 0?r:c.mark[s===!1&&"color"],m=s?"fill":"stroke",g=Object.assign(Object.assign({},d?{fill:Ho(d)}:{}),h?{stroke:Ho(h)}:{});return a.color&&(s?a.fill:a.stroke)&&Kr(KU("property",{fill:"fill"in a,stroke:"stroke"in a})),Object.assign(Object.assign(Object.assign(Object.assign({},g),nl("color",t,{vgChannel:m,defaultValue:s?d:h})),nl("fill",t,{defaultValue:l.fill?d:void 0})),nl("stroke",t,{defaultValue:l.stroke?h:void 0}))}function Gye(t){const{encoding:n,mark:e}=t,o=n.order;return!Tp(e)&&hf(o)?n1(t,o,"zindex",f=>Ho(f.value)):{}}function my({channel:t,markDef:n,encoding:e={},model:o,bandPosition:f}){const r=`${t}Offset`,a=n[r],l=e[r];if((r==="xOffset"||r==="yOffset")&&l){const i=KE({channel:r,channelDef:l,markDef:n,config:o?.config,scaleName:o.scaleName(r),scale:o.getScaleComponent(r),stack:null,defaultRef:Ho(a),bandPosition:f});return{offsetType:"encoding",offset:i}}const c=n[r];return c?{offsetType:"visual",offset:c}:{}}function Fl(t,n,{defaultPos:e,vgChannel:o}){const{encoding:f,markDef:r,config:a,stack:l}=n,c=f[t],i=f[ph(t)],s=n.scaleName(t),u=n.getScaleComponent(t),{offset:d,offsetType:h}=my({channel:t,markDef:r,encoding:f,model:n,bandPosition:.5}),m=_8({model:n,defaultPos:e,channel:t,scaleName:s,scale:u}),g=!c&&sl(t)&&(f.latitude||f.longitude)?{field:n.getName(t)}:Wye({channel:t,channelDef:c,channel2Def:i,markDef:r,config:a,scaleName:s,scale:u,stack:l,offset:d,defaultRef:m,bandPosition:h==="encoding"?0:void 0});return g?{[o||t]:g}:void 0}function Wye(t){const{channel:n,channelDef:e,scaleName:o,stack:f,offset:r,markDef:a}=t;if(la(e)&&f&&n===f.fieldChannel){if(ti(e)){let l=e.bandPosition;if(l===void 0&&a.type==="text"&&(n==="radius"||n==="theta")&&(l=.5),l!==void 0)return E2({scaleName:o,fieldOrDatumDef:e,startSuffix:"start",bandPosition:l,offset:r})}return g0(e,o,{suffix:"end"},{offset:r})}return ZE(t)}function _8({model:t,defaultPos:n,channel:e,scaleName:o,scale:f}){const{markDef:r,config:a}=t;return()=>{const l=Z0(e),c=ap(e),i=oo(e,r,a,{vgChannel:c});if(i!==void 0)return jv(e,i);switch(n){case"zeroOrMin":case"zeroOrMax":if(o){const s=f.get("type");if(!Fa([Cu.LOG,Cu.TIME,Cu.UTC],s)){if(f.domainDefinitelyIncludesZero())return{scale:o,value:0}}}if(n==="zeroOrMin")return l==="y"?{field:{group:"height"}}:{value:0};switch(l){case"radius":return{signal:`min(${t.width.signal},${t.height.signal})/2`};case"theta":return{signal:"2*PI"};case"x":return{field:{group:"width"}};case"y":return{value:0}}break;case"mid":{const s=t[Fu(e)];return Object.assign(Object.assign({},s),{mult:.5})}}}}const Yye={left:"x",center:"xc",right:"x2"},Xye={top:"y",middle:"yc",bottom:"y2"};function Lq(t,n,e,o="middle"){if(t==="radius"||t==="theta")return ap(t);const f=t==="x"?"align":"baseline",r=oo(f,n,e);let a;return Vi(r)?(Kr(Kge(f)),a=void 0):a=r,t==="x"?Yye[a||(o==="top"?"left":"center")]:Xye[a||o]}function z2(t,n,{defaultPos:e,defaultPos2:o,range:f}){return f?Pq(t,n,{defaultPos:e,defaultPos2:o}):Fl(t,n,{defaultPos:e})}function Pq(t,n,{defaultPos:e,defaultPos2:o}){const{markDef:f,config:r}=n,a=ph(t),l=Fu(t),c=Zye(n,o,a),i=c[l]?Lq(t,f,r):ap(t);return Object.assign(Object.assign({},Fl(t,n,{defaultPos:e,vgChannel:i})),c)}function Zye(t,n,e){const{encoding:o,mark:f,markDef:r,stack:a,config:l}=t,c=Z0(e),i=Fu(e),s=ap(e),u=o[c],d=t.scaleName(c),h=t.getScaleComponent(c),{offset:m}=e in o||e in r?my({channel:e,markDef:r,encoding:o,model:t}):my({channel:c,markDef:r,encoding:o,model:t});if(!u&&(e==="x2"||e==="y2")&&(o.latitude||o.longitude)){const p=Fu(e),v=t.markDef[p];return v!=null?{[p]:{value:v}}:{[s]:{field:t.getName(e)}}}const g=Jye({channel:e,channelDef:u,channel2Def:o[e],markDef:r,config:l,scaleName:d,scale:h,stack:a,offset:m,defaultRef:void 0});return g!==void 0?{[s]:g}:Mb(e,r)||Mb(e,{[e]:A2(e,r,l.style),[i]:A2(i,r,l.style)})||Mb(e,l[f])||Mb(e,l.mark)||{[s]:_8({model:t,defaultPos:n,channel:e,scaleName:d,scale:h})()}}function Jye({channel:t,channelDef:n,channel2Def:e,markDef:o,config:f,scaleName:r,scale:a,stack:l,offset:c,defaultRef:i}){return la(n)&&l&&t.charAt(0)===l.fieldChannel.charAt(0)?g0(n,r,{suffix:"start"},{offset:c}):ZE({channel:t,channelDef:e,scaleName:r,scale:a,stack:l,markDef:o,config:f,offset:c,defaultRef:i})}function Mb(t,n){const e=Fu(t),o=ap(t);if(n[o]!==void 0)return{[o]:jv(t,n[o])};if(n[t]!==void 0)return{[o]:jv(t,n[t])};if(n[e]){const f=n[e];if(z0(f))Kr($ge(e));else return{[e]:jv(t,f)}}}function lp(t,n){var e,o;const{config:f,encoding:r,markDef:a}=t,l=a.type,c=ph(n),i=Fu(n),s=r[n],u=r[c],d=t.getScaleComponent(n),h=d?d.get("type"):void 0,m=a.orient,g=(o=(e=r[i])!==null&&e!==void 0?e:r.size)!==null&&o!==void 0?o:oo("size",a,f,{vgChannel:i}),p=l==="bar"&&(n==="x"?m==="vertical":m==="horizontal");return ti(s)&&(Bo(s.bin)||xl(s.bin)||s.timeUnit&&!u)&&!(g&&!z0(g))&&!ll(h)?exe({fieldDef:s,fieldDef2:u,channel:n,model:t}):(la(s)&&ll(h)||p)&&!u?Qye(s,n,t):Pq(n,t,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function Kye(t,n,e,o,f){if(z0(f))if(e){const a=e.get("type");if(a==="band"){let l=`bandwidth('${n}')`;return f.band!==1&&(l=`${f.band} * ${l}`),{signal:`max(0.25, ${l})`}}else f.band!==1&&(Kr(nme(a)),f=void 0)}else return{mult:f.band,field:{group:t}};else{if(Vi(f))return f;if(f)return{value:f}}if(e){const a=e.get("range");if(kp(a)&&wo(a.step))return{value:a.step-2}}return{value:D2(o.view,t)-2}}function Qye(t,n,e){const{markDef:o,encoding:f,config:r,stack:a}=e,l=o.orient,c=e.scaleName(n),i=e.getScaleComponent(n),s=Fu(n),u=ph(n),d=K0e(n),h=e.scaleName(d),m=l==="horizontal"&&n==="y"||l==="vertical"&&n==="x";let g;(f.size||o.size)&&(m?g=nl("size",e,{vgChannel:s,defaultRef:Ho(o.size)}):Kr(ome(o.type)));const p=!!g,v=LV({channel:n,fieldDef:t,markDef:o,config:r,scaleType:i?.get("type"),useVlSizeChannel:m});g=g||{[s]:Kye(s,h||c,i,r,v)};const y=i?.get("type")==="band"&&z0(v)&&!p?"top":"middle",x=Lq(n,o,r,y),w=x==="xc"||x==="yc",{offset:k,offsetType:b}=my({channel:n,markDef:o,encoding:f,model:e,bandPosition:w?.5:0}),T=ZE({channel:n,channelDef:t,markDef:o,config:r,scaleName:c,scale:i,stack:a,offset:k,defaultRef:_8({model:e,defaultPos:"mid",channel:n,scaleName:c,scale:i}),bandPosition:w?b==="encoding"?0:.5:Vi(v)?{signal:`(1-${v})/2`}:z0(v)?(1-v.band)/2:0});if(s)return Object.assign({[x]:T},g);{const _=ap(u),S=g[s],A=k?Object.assign(Object.assign({},S),{offset:k}):S;return{[x]:T,[_]:Ir(T)?[T[0],Object.assign(Object.assign({},T[1]),{offset:A})]:Object.assign(Object.assign({},T),{offset:A})}}}function J1(t,n,e,o,f){if(OU(t))return 0;const r=t==="x"||t==="y2"?-n/2:n/2;if(Vi(e)||Vi(f)||Vi(o)){const a=qh(e),l=qh(f),c=qh(o),i=c?`${c} + `:"",s=a?`(${a} ? -1 : 1) * `:"",u=l?`(${l} + ${r})`:r;return{signal:i+s+u}}else return f=f||0,o+(e?-f-r:+f+r)}function exe({fieldDef:t,fieldDef2:n,channel:e,model:o}){var f,r,a;const{config:l,markDef:c,encoding:i}=o,s=o.getScaleComponent(e),u=o.scaleName(e),d=s?s.get("type"):void 0,h=s.get("reverse"),m=LV({channel:e,fieldDef:t,markDef:c,config:l,scaleType:d}),g=(f=o.component.axes[e])===null||f===void 0?void 0:f[0],p=(r=g?.get("translate"))!==null&&r!==void 0?r:.5,v=sl(e)&&(a=oo("binSpacing",c,l))!==null&&a!==void 0?a:0,y=ph(e),x=ap(e),w=ap(y),{offset:k}=my({channel:e,markDef:c,encoding:i,model:o,bandPosition:0}),b=Vi(m)?{signal:`(1-${m.signal})/2`}:z0(m)?(1-m.band)/2:.5;if(Bo(t.bin)||t.timeUnit)return{[w]:OP({fieldDef:t,scaleName:u,bandPosition:b,offset:J1(y,v,h,p,k)}),[x]:OP({fieldDef:t,scaleName:u,bandPosition:Vi(b)?{signal:`1-${b.signal}`}:1-b,offset:J1(e,v,h,p,k)})};if(xl(t.bin)){const T=g0(t,u,{},{offset:J1(y,v,h,p,k)});if(ti(n))return{[w]:T,[x]:g0(n,u,{},{offset:J1(e,v,h,p,k)})};if(J0(t.bin)&&t.bin.step)return{[w]:T,[x]:{signal:`scale("${u}", ${hi(t,{expr:"datum"})} + ${t.bin.step})`,offset:J1(e,v,h,p,k)}}}Kr(tV(y))}function OP({fieldDef:t,scaleName:n,bandPosition:e,offset:o}){return E2({scaleName:n,fieldOrDatumDef:t,bandPosition:e,offset:o})}const txe=new Set(["aria","width","height"]);function Ac(t,n){const{fill:e=void 0,stroke:o=void 0}=n.color==="include"?Oq(t):{};return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},nxe(t.markDef,n)),LP(t,"fill",e)),LP(t,"stroke",o)),nl("opacity",t)),nl("fillOpacity",t)),nl("strokeOpacity",t)),nl("strokeWidth",t)),nl("strokeDash",t)),Gye(t)),Eq(t)),b8(t,"href")),qye(t))}function LP(t,n,e){const{config:o,mark:f,markDef:r}=t;if(oo("invalid",r,o)==="hide"&&e&&!Tp(f)){const l=rxe(t,{invalid:!0,channels:s3});if(l)return{[n]:[{test:l,value:null},...ki(e)]}}return e?{[n]:e}:{}}function nxe(t,n){return yge.reduce((e,o)=>(!txe.has(o)&&t[o]!==void 0&&n[o]!=="ignore"&&(e[o]=Ho(t[o])),e),{})}function rxe(t,{invalid:n=!1,channels:e}){const o=e.reduce((r,a)=>{const l=t.getScaleComponent(a);if(l){const c=l.get("type"),i=t.vgField(a,{expr:"datum"});i&&rc(c)&&(r[i]=!0)}return r},{}),f=Xr(o);if(f.length>0){const r=n?"||":"&&";return f.map(a=>JE(a,n)).join(` ${r} `)}}function w8(t){const{config:n,markDef:e}=t;if(oo("invalid",e,n)){const f=ixe(t,{channels:gh});if(f)return{defined:{signal:f}}}return{}}function ixe(t,{invalid:n=!1,channels:e}){const o=e.reduce((r,a)=>{var l;const c=t.getScaleComponent(a);if(c){const i=c.get("type"),s=t.vgField(a,{expr:"datum",binSuffix:!((l=t.stack)===null||l===void 0)&&l.impute?"mid":void 0});s&&rc(i)&&(r[s]=!0)}return r},{}),f=Xr(o);if(f.length>0){const r=n?"||":"&&";return f.map(a=>JE(a,n)).join(` ${r} `)}}function PP(t,n){if(n!==void 0)return{[t]:Ho(n)}}const I4="voronoi",Dq={defined:t=>t.type==="point"&&t.nearest,parse:(t,n)=>{if(n.events)for(const e of n.events)e.markname=t.getName(I4)},marks:(t,n,e)=>{const{x:o,y:f}=n.project.hasChannel,r=t.mark;if(Tp(r))return Kr(Tge(r)),e;const a={name:t.getName(I4),type:"path",interactive:!0,from:{data:t.getName("marks")},encode:{update:Object.assign({fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0}},Eq(t,{reactiveGeom:!0}))},transform:[{type:"voronoi",x:{expr:o||!f?"datum.datum.x || 0":"0"},y:{expr:f||!o?"datum.datum.y || 0":"0"},size:[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]}]};let l=0,c=!1;return e.forEach((i,s)=>{var u;const d=(u=i.name)!==null&&u!==void 0?u:"";d===t.component.mark[0].name?l=s:d.indexOf(I4)>=0&&(c=!0)}),c||e.splice(l+1,0,a),e}},Iq={defined:t=>t.type==="point"&&t.resolve==="global"&&t.bind&&t.bind!=="scales"&&!h8(t.bind),parse:(t,n,e)=>Vq(n,e),topLevelSignals:(t,n,e)=>{const o=n.name,f=n.project,r=n.bind,a=n.init&&n.init[0],l=Dq.defined(n)?"(item().isVoronoi ? datum.datum : datum)":"datum";return f.items.forEach((c,i)=>{var s,u;const d=Xo(`${o}_${c.field}`);e.filter(m=>m.name===d).length||e.unshift(Object.assign(Object.assign({name:d},a?{init:F0(a[i])}:{value:null}),{on:n.events?[{events:n.events,update:`datum && item().mark.marktype !== 'group' ? ${l}[${oi(c.field)}] : null`}]:[],bind:(u=(s=r[c.field])!==null&&s!==void 0?s:r[c.channel])!==null&&u!==void 0?u:r}))}),e},signals:(t,n,e)=>{const o=n.name,f=n.project,r=e.filter(i=>i.name===o+up)[0],a=o+hx,l=f.items.map(i=>Xo(`${o}_${i.field}`)),c=l.map(i=>`${i} !== null`).join(" && ");return l.length&&(r.update=`${c} ? {fields: ${a}, values: [${l.join(", ")}]} : null`),delete r.value,delete r.on,e}},R2="_toggle",zq={defined:t=>t.type==="point"&&!!t.toggle,signals:(t,n,e)=>e.concat({name:n.name+R2,value:!1,on:[{events:n.events,update:n.toggle}]}),modifyExpr:(t,n)=>{const e=n.name+up,o=n.name+R2;return`${o} ? null : ${e}, `+(n.resolve==="global"?`${o} ? null : true, `:`${o} ? null : {unit: ${Dm(t)}}, `)+`${o} ? ${e} : null`}},axe={defined:t=>t.clear!==void 0&&t.clear!==!1,parse:(t,n)=>{n.clear&&(n.clear=bi(n.clear)?gp(n.clear,"view"):n.clear)},topLevelSignals:(t,n,e)=>{if(Iq.defined(n))for(const o of n.project.items){const f=e.findIndex(r=>r.name===Xo(`${n.name}_${o.field}`));f!==-1&&e[f].on.push({events:n.clear,update:"null"})}return e},signals:(t,n,e)=>{function o(f,r){f!==-1&&e[f].on&&e[f].on.push({events:n.clear,update:r})}if(n.type==="interval")for(const f of n.project.items){const r=e.findIndex(a=>a.name===f.signals.visual);if(o(r,"[0, 0]"),r===-1){const a=e.findIndex(l=>l.name===f.signals.data);o(a,"null")}}else{let f=e.findIndex(r=>r.name===n.name+up);o(f,"null"),zq.defined(n)&&(f=e.findIndex(r=>r.name===n.name+R2),o(f,"false"))}return e}},Rq={defined:t=>{const n=t.resolve==="global"&&t.bind&&h8(t.bind),e=t.project.items.length===1&&t.project.items[0].field!==nh;return n&&!e&&Kr(Sge),n&&e},parse:(t,n,e)=>{var o;const f=ha(e);if(f.select=bi(f.select)?{type:f.select,toggle:n.toggle}:Object.assign(Object.assign({},f.select),{toggle:n.toggle}),Vq(n,f),Ei(e.select)&&(e.select.on||e.select.clear)){const l='event.item && indexof(event.item.mark.role, "legend") < 0';for(const c of n.events)c.filter=ki((o=c.filter)!==null&&o!==void 0?o:[]),c.filter.includes(l)||c.filter.push(l)}const r=L4(n.bind)?n.bind.legend:"click",a=bi(r)?gp(r,"view"):ki(r);n.bind={legend:{merge:a}}},topLevelSignals:(t,n,e)=>{const o=n.name,f=L4(n.bind)&&n.bind.legend,r=a=>l=>{const c=ha(l);return c.markname=a,c};for(const a of n.project.items){if(!a.hasLegend)continue;const l=`${Xo(a.field)}_legend`,c=`${o}_${l}`;if(e.filter(s=>s.name===c).length===0){const s=f.merge.map(r(`${l}_symbols`)).concat(f.merge.map(r(`${l}_labels`))).concat(f.merge.map(r(`${l}_entries`)));e.unshift(Object.assign(Object.assign({name:c},n.init?{}:{value:null}),{on:[{events:s,update:"datum.value || item().items[0].items[0].datum.value",force:!0},{events:f.merge,update:`!event.item || !datum ? null : ${c}`,force:!0}]}))}}return e},signals:(t,n,e)=>{const o=n.name,f=n.project,r=e.find(d=>d.name===o+up),a=o+hx,l=f.items.filter(d=>d.hasLegend).map(d=>Xo(`${o}_${Xo(d.field)}_legend`)),i=`${l.map(d=>`${d} !== null`).join(" && ")} ? {fields: ${a}, values: [${l.join(", ")}]} : null`;n.events&&l.length>0?r.on.push({events:l.map(d=>({signal:d})),update:i}):l.length>0&&(r.update=i,delete r.value,delete r.on);const s=e.find(d=>d.name===o+R2),u=L4(n.bind)&&n.bind.legend;return s&&(n.events?s.on.push(Object.assign(Object.assign({},s.on[0]),{events:u})):s.on[0].events=u),e}};function oxe(t,n,e){var o,f,r,a;const l=(o=t.fieldDef(n))===null||o===void 0?void 0:o.field;for(const c of ql((f=t.component.selection)!==null&&f!==void 0?f:{})){const i=(r=c.project.hasField[l])!==null&&r!==void 0?r:c.project.hasChannel[n];if(i&&Rq.defined(c)){const s=(a=e.get("selections"))!==null&&a!==void 0?a:[];s.push(c.name),e.set("selections",s,!1),i.hasLegend=!0}}}const Fq="_translate_anchor",Nq="_translate_delta",sxe={defined:t=>t.type==="interval"&&t.translate,signals:(t,n,e)=>{const o=n.name,f=sp.defined(n),r=o+Fq,{x:a,y:l}=n.project.hasChannel;let c=gp(n.translate,"scope");return f||(c=c.map(i=>(i.between[0].markname=o+am,i))),e.push({name:r,value:{},on:[{events:c.map(i=>i.between[0]),update:"{x: x(unit), y: y(unit)"+(a!==void 0?`, extent_x: ${f?KT(t,cs):`slice(${a.signals.visual})`}`:"")+(l!==void 0?`, extent_y: ${f?KT(t,ol):`slice(${l.signals.visual})`}`:"")+"}"}]},{name:o+Nq,value:{},on:[{events:c,update:`{x: ${r}.x - x(unit), y: ${r}.y - y(unit)}`}]}),a!==void 0&&DP(t,n,a,"width",e),l!==void 0&&DP(t,n,l,"height",e),e}};function DP(t,n,e,o,f){var r,a;const l=n.name,c=l+Fq,i=l+Nq,s=e.channel,u=sp.defined(n),d=f.filter(T=>T.name===e.signals[u?"data":"visual"])[0],h=t.getSizeSignalRef(o).signal,m=t.getScaleComponent(s),g=m.get("type"),p=m.get("reverse"),v=u?s===cs?p?"":"-":p?"-":"":"",y=`${c}.extent_${s}`,x=`${v}${i}.${s} / ${u?`${h}`:`span(${y})`}`,w=u?g==="log"?"panLog":g==="symlog"?"panSymlog":g==="pow"?"panPow":"panLinear":"panLinear",k=u?g==="pow"?`, ${(r=m.get("exponent"))!==null&&r!==void 0?r:1}`:g==="symlog"?`, ${(a=m.get("constant"))!==null&&a!==void 0?a:1}`:"":"",b=`${w}(${y}, ${x}${k})`;d.on.push({events:{signal:i},update:u?b:`clampRange(${b}, 0, ${h})`})}const Bq="_zoom_anchor",jq="_zoom_delta",lxe={defined:t=>t.type==="interval"&&t.zoom,signals:(t,n,e)=>{const o=n.name,f=sp.defined(n),r=o+jq,{x:a,y:l}=n.project.hasChannel,c=oi(t.scaleName(cs)),i=oi(t.scaleName(ol));let s=gp(n.zoom,"scope");return f||(s=s.map(u=>(u.markname=o+am,u))),e.push({name:o+Bq,on:[{events:s,update:f?"{"+[c?`x: invert(${c}, x(unit))`:"",i?`y: invert(${i}, y(unit))`:""].filter(u=>!!u).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:r,on:[{events:s,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),a!==void 0&&IP(t,n,a,"width",e),l!==void 0&&IP(t,n,l,"height",e),e}};function IP(t,n,e,o,f){var r,a;const l=n.name,c=e.channel,i=sp.defined(n),s=f.filter(w=>w.name===e.signals[i?"data":"visual"])[0],u=t.getSizeSignalRef(o).signal,d=t.getScaleComponent(c),h=d.get("type"),m=i?KT(t,c):s.name,g=l+jq,p=`${l}${Bq}.${c}`,v=i?h==="log"?"zoomLog":h==="symlog"?"zoomSymlog":h==="pow"?"zoomPow":"zoomLinear":"zoomLinear",y=i?h==="pow"?`, ${(r=d.get("exponent"))!==null&&r!==void 0?r:1}`:h==="symlog"?`, ${(a=d.get("constant"))!==null&&a!==void 0?a:1}`:"":"",x=`${v}(${m}, ${p}, ${g}${y})`;s.on.push({events:{signal:g},update:i?x:`clampRange(${x}, 0, ${u})`})}const N0="_store",up="_tuple",uxe="_modify",Uq="vlSelectionResolve",M3=[Vye,jye,Nye,zq,Iq,sp,Rq,axe,sxe,lxe,Dq];function cxe(t){let n=t.parent;for(;n&&!lf(n);)n=n.parent;return n}function Dm(t,{escape:n}={escape:!0}){let e=n?oi(t.name):t.name;const o=cxe(t);if(o){const{facet:f}=o;for(const r of dc)f[r]&&(e+=` + '__facet_${r}_' + (facet[${oi(o.vgField(r))}])`)}return e}function k8(t){var n;return ql((n=t.component.selection)!==null&&n!==void 0?n:{}).reduce((e,o)=>e||o.project.hasSelectionId,!1)}function Vq(t,n){(bi(n.select)||!n.select.on)&&delete t.events,(bi(n.select)||!n.select.clear)&&delete t.clear,(bi(n.select)||!n.select.toggle)&&delete t.toggle}function tA(t){const n=[];return t.type==="Identifier"?[t.name]:t.type==="Literal"?[t.value]:(t.type==="MemberExpression"&&(n.push(...tA(t.object)),n.push(...tA(t.property))),n)}function qq(t){return t.object.type==="MemberExpression"?qq(t.object):t.object.name==="datum"}function Hq(t){const n=jS(t),e=new Set;return n.visit(o=>{o.type==="MemberExpression"&&qq(o)&&e.add(tA(o).slice(1).join("."))}),e}class r1 extends To{constructor(n,e,o){super(n),this.model=e,this.filter=o,this.expr=F2(this.model,this.filter,this),this._dependentFields=Hq(this.expr)}clone(){return new r1(null,this.model,ha(this.filter))}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function fxe(t,n){var e;const o={},f=t.config.selection;if(!n||!n.length)return o;for(const r of n){const a=Xo(r.name),l=r.select,c=bi(l)?l:l.type,i=Ei(l)?ha(l):{type:c},s=f[c];for(const d in s)d==="fields"||d==="encodings"||(d==="mark"&&(i[d]=Object.assign(Object.assign({},s[d]),i[d])),(i[d]===void 0||i[d]===!0)&&(i[d]=(e=s[d])!==null&&e!==void 0?e:i[d]));const u=o[a]=Object.assign(Object.assign({},i),{name:a,type:c,init:r.value,bind:r.bind,events:bi(i.on)?gp(i.on,"scope"):ki(ha(i.on))});for(const d of M3)d.defined(u)&&d.parse&&d.parse(t,u,r)}return o}function $q(t,n,e,o="datum"){const f=bi(n)?n:n.param,r=Xo(f),a=oi(r+N0);let l;try{l=t.getSelectionComponent(r,f)}catch{return`!!${r}`}if(l.project.timeUnit){const d=e??t.component.data.raw,h=l.project.timeUnit.clone();d.parent?h.insertAsParentOf(d):d.parent=h}const c=l.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest(",i=l.resolve==="global"?")":`, ${oi(l.resolve)})`,s=`${c}${a}, ${o}${i}`,u=`length(data(${a}))`;return n.empty===!1?`${u} && ${s}`:`!${u} || ${s}`}function Gq(t,n,e){const o=Xo(n),f=e.encoding;let r=e.field,a;try{a=t.getSelectionComponent(o,n)}catch{return o}if(!f&&!r)r=a.project.items[0].field,a.project.items.length>1&&Kr(`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${oi(r)}.`);else if(f&&!r){const l=a.project.items.filter(c=>c.channel===f);!l.length||l.length>1?(r=a.project.items[0].field,Kr((l.length?"Multiple ":"No ")+`matching ${oi(f)} encoding found for selection ${oi(e.param)}. Using "field": ${oi(r)}.`)):r=l[0].field}return`${a.name}[${oi(bc(r))}]`}function hxe(t,n){var e;for(const[o,f]of ip((e=t.component.selection)!==null&&e!==void 0?e:{})){const r=t.getName(`lookup_${o}`);t.component.data.outputNodes[r]=f.materialized=new fu(new r1(n,t,{param:o}),r,Fo.Lookup,t.component.data.outputNodeRefCounts)}}function F2(t,n,e){return Bv(n,o=>bi(o)?o:Vme(o)?$q(t,o,e):uV(o))}var Sb=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fr8(e,n)).join(", "):t}function z4(t,n,e,o){var f,r,a,l,c;(f=t.encode)!==null&&f!==void 0||(t.encode={}),(r=(l=t.encode)[n])!==null&&r!==void 0||(l[n]={}),(a=(c=t.encode[n]).update)!==null&&a!==void 0||(c.update={}),t.encode[n].update[e]=o}function Av(t,n,e,o={header:!1}){var f,r;const a=t.combine(),{disable:l,orient:c,scale:i,labelExpr:s,title:u,zindex:d}=a,h=Sb(a,["disable","orient","scale","labelExpr","title","zindex"]);if(!l){for(const m in h){const g=$1e[m],p=h[m];if(g&&g!==n&&g!=="both")delete h[m];else if(fx(p)){const{condition:v}=p,y=Sb(p,["condition"]),x=ki(v),w=fP[m];if(w){const{vgProp:k,part:b}=w,T=[...x.map(_=>{const{test:S}=_,A=Sb(_,["test"]);return Object.assign({test:F2(null,S)},A)}),y];z4(h,b,k,T),delete h[m]}else if(w===null){const k={signal:x.map(b=>{const{test:T}=b,_=Sb(b,["test"]);return`${F2(null,T)} ? ${ZL(_)} : `}).join("")+ZL(y)};h[m]=k}}else if(Vi(p)){const v=fP[m];if(v){const{vgProp:y,part:x}=v;z4(h,x,y,p),delete h[m]}}Fa(["labelAlign","labelBaseline"],m)&&h[m]===null&&delete h[m]}if(n==="grid"){if(!h.grid)return;if(h.encode){const{grid:m}=h.encode;h.encode=Object.assign({},m?{grid:m}:{}),_o(h.encode)&&delete h.encode}return Object.assign(Object.assign({scale:i,orient:c},h),{domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:Rs(d,0)})}else{if(!o.header&&t.mainExtracted)return;if(s!==void 0){let g=s;((r=(f=h.encode)===null||f===void 0?void 0:f.labels)===null||r===void 0?void 0:r.update)&&Vi(h.encode.labels.update.text)&&(g=L0(s,"datum.label",h.encode.labels.update.text.signal)),z4(h,"labels","text",{signal:g})}if(h.labelAlign===null&&delete h.labelAlign,h.encode){for(const g of jV)t.hasAxisPart(g)||delete h.encode[g];_o(h.encode)&&delete h.encode}const m=dxe(u,e);return Object.assign(Object.assign(Object.assign(Object.assign({scale:i,orient:c,grid:!1},m?{title:m}:{}),h),e.aria===!1?{aria:!1}:{}),{zindex:Rs(d,0)})}}}function Wq(t){const{axes:n}=t.component,e=[];for(const o of gh)if(n[o]){for(const f of n[o])if(!f.get("disable")&&!f.get("gridScale")){const r=o==="x"?"height":"width",a=t.getSizeSignalRef(r).signal;r!==a&&e.push({name:r,update:a})}}return e}function pxe(t,n){const{x:e=[],y:o=[]}=t;return[...e.map(f=>Av(f,"grid",n)),...o.map(f=>Av(f,"grid",n)),...e.map(f=>Av(f,"main",n)),...o.map(f=>Av(f,"main",n))].filter(f=>f)}function zP(t,n,e,o){return Object.assign.apply(null,[{},...t.map(f=>{if(f==="axisOrient"){const r=e==="x"?"bottom":"left",a=n[e==="x"?"axisBottom":"axisLeft"]||{},l=n[e==="x"?"axisTop":"axisRight"]||{},c=new Set([...Xr(a),...Xr(l)]),i={};for(const s of c.values())i[s]={signal:`${o.signal} === "${r}" ? ${qh(a[s])} : ${qh(l[s])}`};return i}return n[f]})])}function gxe(t,n,e,o){const f=n==="band"?["axisDiscrete","axisBand"]:n==="point"?["axisDiscrete","axisPoint"]:dV(n)?["axisQuantitative"]:n==="time"||n==="utc"?["axisTemporal"]:[],r=t==="x"?"axisX":"axisY",a=Vi(e)?"axisOrient":`axis${ex(e)}`,l=[...f,...f.map(i=>r+i.substr(4))],c=["axis",a,r];return{vlOnlyAxisConfig:zP(l,o,t,e),vgAxisConfig:zP(c,o,t,e),axisConfigStyle:mxe([...c,...l],o)}}function mxe(t,n){var e;const o=[{}];for(const f of t){let r=(e=n[f])===null||e===void 0?void 0:e.style;if(r){r=ki(r);for(const a of r)o.push(n.style[a])}}return Object.assign.apply(null,o)}function nA(t,n,e,o={}){var f;const r=$U(t,e,n);if(r!==void 0)return{configFrom:"style",configValue:r};for(const a of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(((f=o[a])===null||f===void 0?void 0:f[t])!==void 0)return{configFrom:a,configValue:o[a][t]};return{}}const RP={scale:({model:t,channel:n})=>t.scaleName(n),format:({fieldOrDatumDef:t,config:n,axis:e})=>{const{format:o,formatType:f}=e;return AV(t,t.type,o,f,n,!0)},formatType:({axis:t,fieldOrDatumDef:n,scaleType:e})=>{const{formatType:o}=t;return MV(o,n,e)},grid:({fieldOrDatumDef:t,axis:n,scaleType:e})=>{var o;return(o=n.grid)!==null&&o!==void 0?o:vxe(e,t)},gridScale:({model:t,channel:n})=>yxe(t,n),labelAlign:({axis:t,labelAngle:n,orient:e,channel:o})=>t.labelAlign||Xq(n,e,o),labelAngle:({labelAngle:t})=>t,labelBaseline:({axis:t,labelAngle:n,orient:e,channel:o})=>t.labelBaseline||Yq(n,e,o),labelFlush:({axis:t,fieldOrDatumDef:n,channel:e})=>{var o;return(o=t.labelFlush)!==null&&o!==void 0?o:bxe(n.type,e)},labelOverlap:({axis:t,fieldOrDatumDef:n,scaleType:e})=>{var o;return(o=t.labelOverlap)!==null&&o!==void 0?o:_xe(n.type,e,ti(n)&&!!n.timeUnit,ti(n)?n.sort:void 0)},orient:({orient:t})=>t,tickCount:({channel:t,model:n,axis:e,fieldOrDatumDef:o,scaleType:f})=>{var r;const a=t==="x"?"width":t==="y"?"height":void 0,l=a?n.getSizeSignalRef(a):void 0;return(r=e.tickCount)!==null&&r!==void 0?r:kxe({fieldOrDatumDef:o,scaleType:f,size:l,values:e.values})},title:({axis:t,model:n,channel:e})=>{if(t.title!==void 0)return t.title;const o=Zq(n,e);if(o!==void 0)return o;const f=n.typedFieldDef(e),r=e==="x"?"x2":"y2",a=n.fieldDef(r);return WU(f?[cP(f)]:[],ti(a)?[cP(a)]:[])},values:({axis:t,fieldOrDatumDef:n})=>Txe(t,n),zindex:({axis:t,fieldOrDatumDef:n,mark:e})=>{var o;return(o=t.zindex)!==null&&o!==void 0?o:Axe(e,n)}};function vxe(t,n){return!ll(t)&&ti(n)&&!Bo(n?.bin)&&!xl(n?.bin)}function yxe(t,n){const e=n==="x"?"y":"x";if(t.getScaleComponent(e))return t.scaleName(e)}function xxe(t,n,e,o,f){const r=n?.labelAngle;if(r!==void 0)return Vi(r)?r:dy(r);{const{configValue:a}=nA("labelAngle",o,n?.style,f);return a!==void 0?dy(a):e===cs&&Fa([GE,$E],t.type)&&!(ti(t)&&t.timeUnit)?270:void 0}}function rA(t){return`(((${t.signal} % 360) + 360) % 360)`}function Yq(t,n,e,o){if(t!==void 0)if(e==="x"){if(Vi(t)){const f=rA(t),r=Vi(n)?`(${n.signal} === "top")`:n==="top";return{signal:`(45 < ${f} && ${f} < 135) || (225 < ${f} && ${f} < 315) ? "middle" :(${f} <= 45 || 315 <= ${f}) === ${r} ? "bottom" : "top"`}}if(45{if(!!Q0(o)&&CV(o.sort)){const{field:r,timeUnit:a}=o,l=o.sort,c=l.map((i,s)=>`${uV({field:r,timeUnit:a,equal:i})} ? ${s} : `).join("")+l.length;n=new Im(n,{calculate:c,as:zm(o,f,{forAs:!0})})}}),n}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${Ba(this.transform)}`}}function zm(t,n,e){return hi(t,Object.assign({prefix:n,suffix:"sort_index"},e??{}))}function S3(t,n){return Fa(["top","bottom"],n)?"column":Fa(["left","right"],n)||t==="row"?"row":"column"}function Rm(t,n,e,o){const f=o==="row"?e.headerRow:o==="column"?e.headerColumn:e.headerFacet;return Rs((n||{})[t],f[t],e.header[t])}function E3(t,n,e,o){const f={};for(const r of t){const a=Rm(r,n||{},e,o);a!==void 0&&(f[r]=a)}return f}const T8=["row","column"],A8=["header","footer"];function Mxe(t,n){const e=t.component.layoutHeaders[n].title,o=t.config?t.config:void 0,f=t.component.layoutHeaders[n].facetFieldDef?t.component.layoutHeaders[n].facetFieldDef:void 0,{titleAnchor:r,titleAngle:a,titleOrient:l}=E3(["titleAnchor","titleAngle","titleOrient"],f.header,o,n),c=S3(n,l),i=dy(a);return{name:`${n}-title`,type:"group",role:`${c}-title`,title:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({text:e},n==="row"?{orient:"left"}:{}),{style:"guide-title"}),Kq(i,c)),Jq(c,i,r)),Qq(o,f,n,pve,rq))}}function Jq(t,n,e="middle"){switch(e){case"start":return{align:"left"};case"end":return{align:"right"}}const o=Xq(n,t==="row"?"left":"top",t==="row"?"y":"x");return o?{align:o}:{}}function Kq(t,n){const e=Yq(t,n==="row"?"left":"top",n==="row"?"y":"x",!0);return e?{baseline:e}:{}}function Sxe(t,n){const e=t.component.layoutHeaders[n],o=[];for(const f of A8)if(e[f])for(const r of e[f]){const a=Cxe(t,n,f,e,r);a!=null&&o.push(a)}return o}function Exe(t,n){var e;const{sort:o}=t;return $f(o)?{field:hi(o,{expr:"datum"}),order:(e=o.order)!==null&&e!==void 0?e:"ascending"}:Ir(o)?{field:zm(t,n,{expr:"datum"}),order:"ascending"}:{field:hi(t,{expr:"datum"}),order:o??"ascending"}}function iA(t,n,e){const{format:o,formatType:f,labelAngle:r,labelAnchor:a,labelOrient:l,labelExpr:c}=E3(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],t.header,e,n),i=QE({fieldOrDatumDef:t,format:o,formatType:f,expr:"parent",config:e}).signal,s=S3(n,l);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({text:{signal:c?L0(L0(c,"datum.label",i),"datum.value",hi(t,{expr:"parent"})):i}},n==="row"?{orient:"left"}:{}),{style:"guide-label",frame:"group"}),Kq(r,s)),Jq(s,r,a)),Qq(e,t,n,gve,iq))}function Cxe(t,n,e,o,f){if(f){let r=null;const{facetFieldDef:a}=o,l=t.config?t.config:void 0;if(a&&f.labels){const{labelOrient:u}=E3(["labelOrient"],a.header,l,n);(n==="row"&&!Fa(["top","bottom"],u)||n==="column"&&!Fa(["left","right"],u))&&(r=iA(a,n,l))}const c=lf(t)&&!lx(t.facet),i=f.axes,s=i?.length>0;if(r||s){const u=n==="row"?"height":"width";return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:t.getName(`${n}_${e}`),type:"group",role:`${n}-${e}`},o.facetFieldDef?{from:{data:t.getName(`${n}_domain`)},sort:Exe(a,n)}:{}),s&&c?{from:{data:t.getName(`facet_domain_${n}`)}}:{}),r?{title:r}:{}),f.sizeSignal?{encode:{update:{[u]:f.sizeSignal}}}:{}),s?{axes:i}:{})}}return null}const Oxe={column:{start:0,end:1},row:{start:1,end:0}};function Lxe(t,n){return Oxe[n][t]}function Pxe(t,n){const e={};for(const o of dc){const f=t[o];if(f?.facetFieldDef){const{titleAnchor:r,titleOrient:a}=E3(["titleAnchor","titleOrient"],f.facetFieldDef.header,n,o),l=S3(o,a),c=Lxe(r,l);c!==void 0&&(e[l]=c)}}return _o(e)?void 0:e}function Qq(t,n,e,o,f){const r={};for(const a of o){if(!f[a])continue;const l=Rm(a,n?.header,t,e);l!==void 0&&(r[f[a]]=l)}return r}function M8(t){return[...Eb(t,"width"),...Eb(t,"height"),...Eb(t,"childWidth"),...Eb(t,"childHeight")]}function Eb(t,n){const e=n==="width"?"x":"y",o=t.component.layoutSize.get(n);if(!o||o==="merged")return[];const f=t.getSizeSignalRef(n).signal;if(o==="step"){const r=t.getScaleComponent(e);if(r){const a=r.get("type"),l=r.get("range");if(ll(a)&&kp(l)){const c=t.scaleName(e);return lf(t.parent)&&t.parent.component.resolve.scale[e]==="independent"?[FP(c,l)]:[FP(c,l),{name:f,update:eH(c,r,`domain('${c}').length`)}]}}throw new Error("layout size is step although width/height is not step.")}else if(o=="container"){const r=f.endsWith("width"),a=r?"containerSize()[0]":"containerSize()[1]",l=YT(t.config.view,r?"width":"height"),c=`isFinite(${a}) ? ${a} : ${l}`;return[{name:f,init:c,on:[{update:c,events:"window:resize"}]}]}else return[{name:f,value:o}]}function FP(t,n){const e=`${t}_step`;return Vi(n.step)?{name:e,update:n.step.signal}:{name:e,value:n.step}}function eH(t,n,e){const o=n.get("type"),f=n.get("padding"),r=Rs(n.get("paddingOuter"),f);let a=n.get("paddingInner");return a=o==="band"?a!==void 0?a:f:1,`bandspace(${e}, ${qh(a)}, ${qh(r)}) * ${t}_step`}function tH(t){return t==="childWidth"?"width":t==="childHeight"?"height":t}function nH(t,n){return Xr(t).reduce((e,o)=>{const f=t[o];return Object.assign(Object.assign({},e),n1(n,f,o,r=>Ho(r.value)))},{})}function rH(t,n){if(lf(n))return t==="theta"?"independent":"shared";if(o1(n))return"shared";if(D8(n))return sl(t)||t==="theta"||t==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function S8(t,n){const e=t.scale[n],o=sl(n)?"axis":"legend";return e==="independent"?(t[o][n]==="shared"&&Kr(fme(n)),"independent"):t[o][n]||"shared"}const Dxe=Object.assign(Object.assign({},yve),{disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1}),iH=Xr(Dxe);class Ixe extends rd{}const NP={symbols:zxe,gradient:Rxe,labels:Fxe,entries:Nxe};function zxe(t,{fieldOrDatumDef:n,model:e,channel:o,legendCmpt:f,legendType:r}){var a,l,c,i,s,u,d,h;if(r!=="symbol")return;const{markDef:m,encoding:g,config:p,mark:v}=e,y=m.filled&&v!=="trail";let x=Object.assign(Object.assign({},_ge({},e,p1e)),Oq(e,{filled:y}));const w=(a=f.get("symbolOpacity"))!==null&&a!==void 0?a:p.legend.symbolOpacity,k=(l=f.get("symbolFillColor"))!==null&&l!==void 0?l:p.legend.symbolFillColor,b=(c=f.get("symbolStrokeColor"))!==null&&c!==void 0?c:p.legend.symbolStrokeColor,T=w===void 0?(i=aH(g.opacity))!==null&&i!==void 0?i:m.opacity:void 0;if(x.fill){if(o==="fill"||y&&o===zu)delete x.fill;else if(x.fill.field)k?delete x.fill:(x.fill=Ho((s=p.legend.symbolBaseFillColor)!==null&&s!==void 0?s:"black"),x.fillOpacity=Ho(T??1));else if(Ir(x.fill)){const _=(h=(d=aA((u=g.fill)!==null&&u!==void 0?u:g.color))!==null&&d!==void 0?d:m.fill)!==null&&h!==void 0?h:y&&m.color;_&&(x.fill=Ho(_))}}if(x.stroke){if(o==="stroke"||!y&&o===zu)delete x.stroke;else if(x.stroke.field||b)delete x.stroke;else if(Ir(x.stroke)){const _=Rs(aA(g.stroke||g.color),m.stroke,y?m.color:void 0);_&&(x.stroke={value:_})}}if(o!==td){const _=ti(n)&&sH(e,f,n);_?x.opacity=[Object.assign({test:_},Ho(T??1)),Ho(p.legend.unselectedOpacity)]:T&&(x.opacity=Ho(T))}return x=Object.assign(Object.assign({},x),t),_o(x)?void 0:x}function Rxe(t,{model:n,legendType:e,legendCmpt:o}){var f;if(e!=="gradient")return;const{config:r,markDef:a,encoding:l}=n;let c={};const s=((f=o.get("gradientOpacity"))!==null&&f!==void 0?f:r.legend.gradientOpacity)===void 0?aH(l.opacity)||a.opacity:void 0;return s&&(c.opacity=Ho(s)),c=Object.assign(Object.assign({},c),t),_o(c)?void 0:c}function Fxe(t,{fieldOrDatumDef:n,model:e,channel:o,legendCmpt:f}){const r=e.legend(o)||{},a=e.config,l=ti(n)?sH(e,f,n):void 0,c=l?[{test:l,value:1},{value:a.legend.unselectedOpacity}]:void 0,{format:i,formatType:s}=r;let u;R0(s)?u=rf({fieldOrDatumDef:n,field:"datum.value",format:i,formatType:s,config:a}):i===void 0&&s===void 0&&a.customFormatTypes&&(n.type==="quantitative"&&a.numberFormatType?u=rf({fieldOrDatumDef:n,field:"datum.value",format:a.numberFormat,formatType:a.numberFormatType,config:a}):n.type==="temporal"&&a.timeFormatType&&ti(n)&&n.timeUnit===void 0&&(u=rf({fieldOrDatumDef:n,field:"datum.value",format:a.timeFormat,formatType:a.timeFormatType,config:a})));const d=Object.assign(Object.assign(Object.assign({},c?{opacity:c}:{}),u?{text:u}:{}),t);return _o(d)?void 0:d}function Nxe(t,{legendCmpt:n}){const e=n.get("selections");return e?.length?Object.assign(Object.assign({},t),{fill:{value:"transparent"}}):t}function aH(t){return oH(t,(n,e)=>Math.max(n,e.value))}function aA(t){return oH(t,(n,e)=>Rs(n,e.value))}function oH(t,n){if(D1e(t))return ki(t.condition).reduce(n,t.value);if(hf(t))return t.value}function sH(t,n,e){const o=n.get("selections");if(!o?.length)return;const f=oi(e.field);return o.map(r=>`(!length(data(${oi(Xo(r)+N0)})) || (${r}[${f}] && indexof(${r}[${f}], datum.value) >= 0))`).join(" || ")}const BP={direction:({direction:t})=>t,format:({fieldOrDatumDef:t,legend:n,config:e})=>{const{format:o,formatType:f}=n;return AV(t,t.type,o,f,e,!1)},formatType:({legend:t,fieldOrDatumDef:n,scaleType:e})=>{const{formatType:o}=t;return MV(o,n,e)},gradientLength:t=>{var n,e;const{legend:o,legendConfig:f}=t;return(e=(n=o.gradientLength)!==null&&n!==void 0?n:f.gradientLength)!==null&&e!==void 0?e:$xe(t)},labelOverlap:({legend:t,legendConfig:n,scaleType:e})=>{var o,f;return(f=(o=t.labelOverlap)!==null&&o!==void 0?o:n.labelOverlap)!==null&&f!==void 0?f:Gxe(e)},symbolType:({legend:t,markDef:n,channel:e,encoding:o})=>{var f;return(f=t.symbolType)!==null&&f!==void 0?f:jxe(n.type,e,o.shape,n.shape)},title:({fieldOrDatumDef:t,config:n})=>im(t,n,{allowDisabling:!0}),type:({legendType:t,scaleType:n,channel:e})=>{if(rm(e)&&nf(n)){if(t==="gradient")return}else if(t==="symbol")return;return t},values:({fieldOrDatumDef:t,legend:n})=>Bxe(n,t)};function Bxe(t,n){const e=t.values;if(Ir(e))return BV(n,e);if(Vi(e))return e}function jxe(t,n,e,o){var f;if(n!=="shape"){const r=(f=aA(e))!==null&&f!==void 0?f:o;if(r)return r}switch(t){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}function Uxe(t){const{legend:n}=t;return Rs(n.type,Vxe(t))}function Vxe({channel:t,timeUnit:n,scaleType:e}){if(rm(t)){if(Fa(["quarter","month","day"],n))return"symbol";if(nf(e))return"gradient"}return"symbol"}function qxe({legendConfig:t,legendType:n,orient:e,legend:o}){var f,r;return(r=(f=o.direction)!==null&&f!==void 0?f:t[n?"gradientDirection":"symbolDirection"])!==null&&r!==void 0?r:Hxe(e,n)}function Hxe(t,n){switch(t){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return n==="gradient"?"horizontal":void 0}}function $xe({legendConfig:t,model:n,direction:e,orient:o,scaleType:f}){const{gradientHorizontalMaxLength:r,gradientHorizontalMinLength:a,gradientVerticalMaxLength:l,gradientVerticalMinLength:c}=t;if(nf(f))return e==="horizontal"?o==="top"||o==="bottom"?jP(n,"width",a,r):a:jP(n,"height",c,l)}function jP(t,n,e,o){return{signal:`clamp(${t.getSizeSignalRef(n).signal}, ${e}, ${o})`}}function Gxe(t){if(Fa(["quantile","threshold","log","symlog"],t))return"greedy"}function lH(t){const n=Is(t)?Wxe(t):Jxe(t);return t.component.legends=n,n}function Wxe(t){const{encoding:n}=t,e={};for(const o of[zu,...oq]){const f=Ws(n[o]);!f||!t.getScaleComponent(o)||o===Ru&&ti(f)&&f.type===t1||(e[o]=Zxe(t,o))}return e}function Yxe(t,n){const e=t.scaleName(n);if(t.mark==="trail"){if(n==="color")return{stroke:e};if(n==="size")return{strokeWidth:e}}return n==="color"?t.markDef.filled?{fill:e}:{stroke:e}:{[n]:e}}function Xxe(t,n,e,o){switch(n){case"disable":return e!==void 0;case"values":return!!e?.values;case"title":if(n==="title"&&t===o?.title)return!0}return t===(e||{})[n]}function Zxe(t,n){var e,o,f;let r=t.legend(n);const{markDef:a,encoding:l,config:c}=t,i=c.legend,s=new Ixe({},Yxe(t,n));oxe(t,n,s);const u=r!==void 0?!r:i.disable;if(s.set("disable",u,r!==void 0),u)return s;r=r||{};const d=t.getScaleComponent(n).get("type"),h=Ws(l[n]),m=ti(h)?(e=Gl(h.timeUnit))===null||e===void 0?void 0:e.unit:void 0,g=r.orient||c.legend.orient||"right",p=Uxe({legend:r,channel:n,timeUnit:m,scaleType:d}),v=qxe({legend:r,legendType:p,orient:g,legendConfig:i}),y={legend:r,channel:n,model:t,markDef:a,encoding:l,fieldOrDatumDef:h,legendConfig:i,config:c,scaleType:d,orient:g,legendType:p,direction:v};for(const T of iH){if(p==="gradient"&&T.startsWith("symbol")||p==="symbol"&&T.startsWith("gradient"))continue;const _=T in BP?BP[T](y):r[T];if(_!==void 0){const S=Xxe(_,T,r,t.fieldDef(n));(S||c.legend[T]===void 0)&&s.set(T,_,S)}}const x=(o=r?.encoding)!==null&&o!==void 0?o:{},w=s.get("selections"),k={},b={fieldOrDatumDef:h,model:t,channel:n,legendCmpt:s,legendType:p};for(const T of["labels","legend","title","symbols","gradient","entries"]){const _=nH((f=x[T])!==null&&f!==void 0?f:{},t),S=T in NP?NP[T](_,b):_;S!==void 0&&!_o(S)&&(k[T]=Object.assign(Object.assign(Object.assign({},w?.length&&ti(h)?{name:`${Xo(h.field)}_legend_${T}`}:{}),w?.length?{interactive:!!w}:{}),{update:S}))}return _o(k)||s.set("encode",k,!!r?.encoding),s}function Jxe(t){const{legends:n,resolve:e}=t.component;for(const o of t.children){lH(o);for(const f of Xr(o.component.legends))e.legend[f]=S8(t.component.resolve,f),e.legend[f]==="shared"&&(n[f]=uH(n[f],o.component.legends[f]),n[f]||(e.legend[f]="independent",delete n[f]))}for(const o of Xr(n))for(const f of t.children)!f.component.legends[o]||e.legend[o]==="shared"&&delete f.component.legends[o];return n}function uH(t,n){var e,o,f,r;if(!t)return n.clone();const a=t.getWithExplicit("orient"),l=n.getWithExplicit("orient");if(a.explicit&&l.explicit&&a.value!==l.value)return;let c=!1;for(const i of iH){const s=op(t.getWithExplicit(i),n.getWithExplicit(i),i,"legend",(u,d)=>{switch(i){case"symbolType":return Kxe(u,d);case"title":return XU(u,d);case"type":return c=!0,Gu("symbol")}return T3(u,d,i,"legend")});t.setWithExplicit(i,s)}return c&&(!((o=(e=t.implicit)===null||e===void 0?void 0:e.encode)===null||o===void 0)&&o.gradient&&T2(t.implicit,["encode","gradient"]),!((r=(f=t.explicit)===null||f===void 0?void 0:f.encode)===null||r===void 0)&&r.gradient&&T2(t.explicit,["encode","gradient"])),t}function Kxe(t,n){return n.value==="circle"?n:t}var Qxe=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);ftbe(f,t.config)).filter(f=>f!==void 0)}function tbe(t,n){var e,o,f;const r=t.combine(),{disable:a,labelExpr:l,selections:c}=r,i=Qxe(r,["disable","labelExpr","selections"]);if(!a){if(n.aria===!1&&i.aria==null&&(i.aria=!1),!((e=i.encode)===null||e===void 0)&&e.symbols){const s=i.encode.symbols.update;s.fill&&s.fill.value!=="transparent"&&!s.stroke&&!i.stroke&&(s.stroke={value:"transparent"});for(const u of oq)i[u]&&delete s[u]}if(i.title||delete i.title,l!==void 0){let s=l;((f=(o=i.encode)===null||o===void 0?void 0:o.labels)===null||f===void 0?void 0:f.update)&&Vi(i.encode.labels.update.text)&&(s=L0(l,"datum.label",i.encode.labels.update.text.signal)),ebe(i,"labels","text",{signal:s})}return i}}function nbe(t){return o1(t)||D8(t)?rbe(t):fH(t)}function rbe(t){return t.children.reduce((n,e)=>n.concat(e.assembleProjections()),fH(t))}function fH(t){const n=t.component.projection;if(!n||n.merged)return[];const e=n.combine(),{name:o}=e;if(n.data){const f={signal:`[${n.size.map(a=>a.signal).join(", ")}]`},r=n.data.reduce((a,l)=>{const c=Vi(l)?l.signal:`data('${t.lookupDataSource(l)}')`;return Fa(a,c)||a.push(c),a},[]);if(r.length<=0)throw new Error("Projection's fit didn't find any data sources");return[Object.assign({name:o,size:f,fit:{signal:r.length>1?`[${r.join(", ")}]`:r[0]}},e)]}else return[Object.assign(Object.assign({name:o},{translate:{signal:"[width / 2, height / 2]"}}),e)]}const ibe=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class hH extends rd{constructor(n,e,o,f){super(Object.assign({},e),{name:n}),this.specifiedProjection=e,this.size=o,this.data=f,this.merged=!1}get isFit(){return!!this.data}}function dH(t){t.component.projection=Is(t)?abe(t):lbe(t)}function abe(t){var n;if(t.hasProjection){const e=ku(t.specifiedProjection),o=!(e&&(e.scale!=null||e.translate!=null)),f=o?[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]:void 0,r=o?obe(t):void 0,a=new hH(t.projectionName(!0),Object.assign(Object.assign({},(n=ku(t.config.projection))!==null&&n!==void 0?n:{}),e??{}),f,r);return a.get("type")||a.set("type","equalEarth",!1),a}}function obe(t){const n=[],{encoding:e}=t;for(const o of[[fh,ch],[_c,yf]])(Ws(e[o[0]])||Ws(e[o[1]]))&&n.push({signal:t.getName(`geojson_${n.length}`)});return t.channelHasField(Ru)&&t.typedFieldDef(Ru).type===t1&&n.push({signal:t.getName(`geojson_${n.length}`)}),n.length===0&&n.push(t.requestDataName(Fo.Main)),n}function sbe(t,n){const e=yE(ibe,f=>!!(!qi(t.explicit,f)&&!qi(n.explicit,f)||qi(t.explicit,f)&&qi(n.explicit,f)&&Ff(t.get(f),n.get(f))));if(Ff(t.size,n.size)){if(e)return t;if(Ff(t.explicit,{}))return n;if(Ff(n.explicit,{}))return t}return null}function lbe(t){if(t.children.length===0)return;let n;for(const o of t.children)dH(o);const e=yE(t.children,o=>{const f=o.component.projection;if(f)if(n){const r=sbe(n,f);return r&&(n=r),!!r}else return n=f,!0;else return!0});if(n&&e){const o=t.projectionName(!0),f=new hH(o,n.specifiedProjection,n.size,ha(n.data));for(const r of t.children){const a=r.component.projection;a&&(a.isFit&&f.data.push(...r.component.projection.data),r.renameProjection(a.get("name"),o),a.merged=!0)}return f}}var ube=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{if(wc(r)&&Bo(r.bin)){const{key:l,binComponent:c}=UP(r,r.bin,e);f[l]=Object.assign(Object.assign(Object.assign({},c),f[l]),cbe(e,r,a,e.config))}return f},{});return _o(o)?null:new Wf(n,o)}static makeFromTransform(n,e,o){const{key:f,binComponent:r}=UP(e,e.bin,o);return new Wf(n,{[f]:r})}merge(n,e){for(const o of Xr(n.bins))o in this.bins?(e(n.bins[o].signal,this.bins[o].signal),this.bins[o].as=Nf([...this.bins[o].as,...n.bins[o].as],Ba)):this.bins[o]=n.bins[o];for(const o of n.children)n.removeChild(o),o.parent=this;n.remove()}producedFields(){return new Set(ql(this.bins).map(n=>n.as).flat(2))}dependentFields(){return new Set(ql(this.bins).map(n=>n.field))}hash(){return`Bin ${Ba(this.bins)}`}assemble(){return ql(this.bins).flatMap(n=>{const e=[],[o,...f]=n.as,r=n.bin,{extent:a}=r,l=ube(r,["extent"]),c=Object.assign(Object.assign(Object.assign({type:"bin",field:bc(n.field),as:o,signal:n.signal},l3(a)?{extent:null}:{extent:a}),n.span?{span:{signal:`span(${n.span})`}}:{}),l);!a&&n.extentSignal&&(e.push({type:"extent",field:bc(n.field),signal:n.extentSignal}),c.extent={signal:n.extentSignal}),e.push(c);for(const i of f)for(let s=0;s<2;s++)e.push({type:"formula",expr:hi({field:o[s]},{expr:"datum"}),as:i[s]});return n.formula&&e.push({type:"formula",expr:n.formula,as:n.formulaAs}),e})}}function dbe(t,n,e,o){var f;const r=Is(o)?o.encoding[ph(n)]:void 0;if(wc(e)&&Is(o)&&PV(e,r,o.markDef,o.config))t.add(hi(e,{})),t.add(hi(e,{suffix:"end"})),e.bin&&cx(e,n)&&t.add(hi(e,{binSuffix:"range"}));else if($0e(n)){const a=H0e(n);t.add(o.getName(a))}else t.add(hi(e));return Q0(e)&&n1e((f=e.scale)===null||f===void 0?void 0:f.range)&&t.add(e.scale.range.field),t}function pbe(t,n){var e;for(const o of Xr(n)){const f=n[o];for(const r of Xr(f))o in t?t[o][r]=new Set([...(e=t[o][r])!==null&&e!==void 0?e:[],...f[r]]):t[o]={[r]:f[r]}}}class sf extends To{constructor(n,e,o){super(n),this.dimensions=e,this.measures=o}clone(){return new sf(null,new Set(this.dimensions),ha(this.measures))}get groupBy(){return this.dimensions}static makeFromEncoding(n,e){let o=!1;e.forEachFieldDef(a=>{a.aggregate&&(o=!0)});const f={},r=new Set;return!o||(e.forEachFieldDef((a,l)=>{var c,i,s,u;const{aggregate:d,field:h}=a;if(d)if(d==="count")(c=f["*"])!==null&&c!==void 0||(f["*"]={}),f["*"].count=new Set([hi(a,{forAs:!0})]);else{if(Wh(d)||wp(d)){const m=Wh(d)?"argmin":"argmax",g=d[m];(i=f[g])!==null&&i!==void 0||(f[g]={}),f[g][m]=new Set([hi({op:m,field:g},{forAs:!0})])}else(s=f[h])!==null&&s!==void 0||(f[h]={}),f[h][d]=new Set([hi(a,{forAs:!0})]);_p(l)&&e.scaleDomain(l)==="unaggregated"&&((u=f[h])!==null&&u!==void 0||(f[h]={}),f[h].min=new Set([hi({field:h,aggregate:"min"},{forAs:!0})]),f[h].max=new Set([hi({field:h,aggregate:"max"},{forAs:!0})]))}else dbe(r,l,a,e)}),r.size+Xr(f).length===0)?null:new sf(n,r,f)}static makeFromTransform(n,e){var o,f,r;const a=new Set,l={};for(const c of e.aggregate){const{op:i,field:s,as:u}=c;i&&(i==="count"?((o=l["*"])!==null&&o!==void 0||(l["*"]={}),l["*"].count=new Set([u||hi(c,{forAs:!0})])):((f=l[s])!==null&&f!==void 0||(l[s]={}),l[s][i]=new Set([u||hi(c,{forAs:!0})])))}for(const c of(r=e.groupby)!==null&&r!==void 0?r:[])a.add(c);return a.size+Xr(l).length===0?null:new sf(n,a,l)}merge(n){return kU(this.dimensions,n.dimensions)?(pbe(this.measures,n.measures),!0):(Sme("different dimensions, cannot merge"),!1)}addDimensions(n){n.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...Xr(this.measures)])}producedFields(){const n=new Set;for(const e of Xr(this.measures))for(const o of Xr(this.measures[e])){const f=this.measures[e][o];f.size===0?n.add(`${o}_${e}`):f.forEach(n.add,n)}return n}hash(){return`Aggregate ${Ba({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const n=[],e=[],o=[];for(const r of Xr(this.measures))for(const a of Xr(this.measures[r]))for(const l of this.measures[r][a])o.push(l),n.push(a),e.push(r==="*"?null:bc(r));return{type:"aggregate",groupby:[...this.dimensions].map(bc),ops:n,fields:e,as:o}}}class i1 extends To{constructor(n,e,o,f){super(n),this.model=e,this.name=o,this.data=f;for(const r of dc){const a=e.facet[r];if(a){const{bin:l,sort:c}=a;this[r]=Object.assign({name:e.getName(`${r}_domain`),fields:[hi(a),...Bo(l)?[hi(a,{binSuffix:"end"})]:[]]},$f(c)?{sortField:c}:Ir(c)?{sortIndexField:zm(a,r)}:{})}}this.childModel=e.child}hash(){let n="Facet";for(const e of dc)this[e]&&(n+=` ${e.charAt(0)}:${Ba(this[e])}`);return n}get fields(){var n;const e=[];for(const o of dc)!((n=this[o])===null||n===void 0)&&n.fields&&e.push(...this[o].fields);return e}dependentFields(){const n=new Set(this.fields);for(const e of dc)this[e]&&(this[e].sortField&&n.add(this[e].sortField.field),this[e].sortIndexField&&n.add(this[e].sortIndexField));return n}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const n={};for(const e of gh){const o=this.childModel.component.scales[e];if(o&&!o.merged){const f=o.get("type"),r=o.get("range");if(ll(f)&&kp(r)){const a=C3(this.childModel,e),l=P8(a);l?n[e]=l:Kr(PE(e))}}}return n}assembleRowColumnHeaderData(n,e,o){const f={row:"y",column:"x",facet:void 0}[n],r=[],a=[],l=[];f&&o&&o[f]&&(e?(r.push(`distinct_${o[f]}`),a.push("max")):(r.push(o[f]),a.push("distinct")),l.push(`distinct_${o[f]}`));const{sortField:c,sortIndexField:i}=this[n];if(c){const{op:s=p3,field:u}=c;r.push(u),a.push(s),l.push(hi(c,{forAs:!0}))}else i&&(r.push(i),a.push("max"),l.push(i));return{name:this[n].name,source:e??this.data,transform:[Object.assign({type:"aggregate",groupby:this[n].fields},r.length?{fields:r,ops:a,as:l}:{})]}}assembleFacetHeaderData(n){var e,o;const{columns:f}=this.model.layout,{layoutHeaders:r}=this.model.component,a=[],l={};for(const s of T8){for(const u of A8){const d=(e=r[s]&&r[s][u])!==null&&e!==void 0?e:[];for(const h of d)if(((o=h.axes)===null||o===void 0?void 0:o.length)>0){l[s]=!0;break}}if(l[s]){const u=`length(data("${this.facet.name}"))`,d=s==="row"?f?{signal:`ceil(${u} / ${f})`}:1:f?{signal:`min(${u}, ${f})`}:{signal:u};a.push({name:`${this.facet.name}_${s}`,transform:[{type:"sequence",start:0,stop:d}]})}}const{row:c,column:i}=l;return(c||i)&&a.unshift(this.assembleRowColumnHeaderData("facet",null,n)),a}assemble(){var n,e;const o=[];let f=null;const r=this.getChildIndependentFieldsWithStep(),{column:a,row:l,facet:c}=this;if(a&&l&&(r.x||r.y)){f=`cross_${this.column.name}_${this.row.name}`;const i=[].concat((n=r.x)!==null&&n!==void 0?n:[],(e=r.y)!==null&&e!==void 0?e:[]),s=i.map(()=>"distinct");o.push({name:f,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:i,ops:s}]})}for(const i of[Vh,Uh])this[i]&&o.push(this.assembleRowColumnHeaderData(i,f,r));if(c){const i=this.assembleFacetHeaderData(r);i&&o.push(...i)}return o}}function VP(t){return t.startsWith("'")&&t.endsWith("'")||t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t}function gbe(t,n){const e=_E(t);if(n==="number")return`toNumber(${e})`;if(n==="boolean")return`toBoolean(${e})`;if(n==="string")return`toString(${e})`;if(n==="date")return`toDate(${e})`;if(n==="flatten")return e;if(n.startsWith("date:")){const o=VP(n.slice(5,n.length));return`timeParse(${e},'${o}')`}else if(n.startsWith("utc:")){const o=VP(n.slice(4,n.length));return`utcParse(${e},'${o}')`}else return Kr(Ige(n)),null}function mbe(t){const n={};return u_(t.filter,e=>{var o;if(lV(e)){let f=null;FE(e)?f=Xu(e.equal):BE(e)?f=Xu(e.lte):NE(e)?f=Xu(e.lt):jE(e)?f=Xu(e.gt):UE(e)?f=Xu(e.gte):VE(e)?f=e.range[0]:qE(e)&&(f=((o=e.oneOf)!==null&&o!==void 0?o:e.in)[0]),f&&(K0(f)?n[e.field]="date":wo(f)?n[e.field]="number":bi(f)&&(n[e.field]="string")),e.timeUnit&&(n[e.field]="date")}}),n}function vbe(t){const n={};function e(o){Lm(o)?n[o.field]="date":o.type==="quantitative"&&fge(o.aggregate)?n[o.field]="number":Am(o.field)>1?o.field in n||(n[o.field]="flatten"):Q0(o)&&$f(o.sort)&&Am(o.sort.field)>1&&(o.sort.field in n||(n[o.sort.field]="flatten"))}if((Is(t)||lf(t))&&t.forEachFieldDef((o,f)=>{if(wc(o))e(o);else{const r=Z0(f),a=t.fieldDef(r);e(Object.assign(Object.assign({},o),{type:a.type}))}}),Is(t)){const{mark:o,markDef:f,encoding:r}=t;if(Tp(o)&&!t.encoding.order){const a=f.orient==="horizontal"?"y":"x",l=r[a];ti(l)&&l.type==="quantitative"&&!(l.field in n)&&(n[l.field]="number")}}return n}function ybe(t){const n={};if(Is(t)&&t.component.selection)for(const e of Xr(t.component.selection)){const o=t.component.selection[e];for(const f of o.project.items)!f.channel&&Am(f.field)>1&&(n[f.field]="flatten")}return n}class Nl extends To{constructor(n,e){super(n),this._parse=e}clone(){return new Nl(null,ha(this._parse))}hash(){return`Parse ${Ba(this._parse)}`}static makeExplicit(n,e,o){var f;let r={};const a=e.data;return!Gd(a)&&((f=a?.format)===null||f===void 0?void 0:f.parse)&&(r=a.format.parse),this.makeWithAncestors(n,r,{},o)}static makeWithAncestors(n,e,o,f){for(const l of Xr(o)){const c=f.getWithExplicit(l);c.value!==void 0&&(c.explicit||c.value===o[l]||c.value==="derived"||o[l]==="flatten"?delete o[l]:Kr(nP(l,o[l],c.value)))}for(const l of Xr(e)){const c=f.get(l);c!==void 0&&(c===e[l]?delete e[l]:Kr(nP(l,e[l],c)))}const r=new rd(e,o);f.copyAll(r);const a={};for(const l of Xr(r.combine())){const c=r.get(l);c!==null&&(a[l]=c)}return Xr(a).length===0||f.parseNothing?null:new Nl(n,a)}get parse(){return this._parse}merge(n){this._parse=Object.assign(Object.assign({},this._parse),n.parse),n.remove()}assembleFormatParse(){const n={};for(const e of Xr(this._parse)){const o=this._parse[e];Am(e)===1&&(n[e]=o)}return n}producedFields(){return new Set(Xr(this._parse))}dependentFields(){return new Set(Xr(this._parse))}assembleTransforms(n=!1){return Xr(this._parse).filter(e=>n?Am(e)>1:!0).map(e=>{const o=gbe(e,this._parse[e]);return o?{type:"formula",expr:o,as:wE(e)}:null}).filter(e=>e!==null)}}class cp extends To{clone(){return new cp(null)}constructor(n){super(n)}dependentFields(){return new Set}producedFields(){return new Set([nh])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:nh}}}class dx extends To{constructor(n,e){super(n),this.params=e}clone(){return new dx(null,this.params)}dependentFields(){return new Set}producedFields(){}hash(){return`Graticule ${Ba(this.params)}`}assemble(){return Object.assign({type:"graticule"},this.params===!0?{}:this.params)}}class px extends To{constructor(n,e){super(n),this.params=e}clone(){return new px(null,this.params)}dependentFields(){return new Set}producedFields(){var n;return new Set([(n=this.params.as)!==null&&n!==void 0?n:"data"])}hash(){return`Hash ${Ba(this.params)}`}assemble(){return Object.assign({type:"sequence"},this.params)}}class B0 extends To{constructor(n){super(null),n??(n={name:"source"});let e;if(Gd(n)||(e=n.format?Object.assign({},Eu(n.format,["parse"])):{}),gy(n))this._data={values:n.values};else if(Pm(n)){if(this._data={url:n.url},!e.type){let o=/(?:\.([^.]+))?$/.exec(n.url)[1];Fa(["json","csv","tsv","dsv","topojson"],o)||(o="json"),e.type=o}}else Aq(n)?this._data={values:[{type:"Sphere"}]}:(kq(n)||Gd(n))&&(this._data={});this._generator=Gd(n),n.name&&(this._name=n.name),e&&!_o(e)&&(this._data.format=e)}dependentFields(){return new Set}producedFields(){}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(n){this._name=n}set parent(n){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return Object.assign(Object.assign({name:this._name},this._data),{transform:[]})}}var qP=globalThis&&globalThis.__classPrivateFieldSet||function(t,n,e,o,f){if(o==="m")throw new TypeError("Private method is not writable");if(o==="a"&&!f)throw new TypeError("Private accessor was defined without a setter");if(typeof n=="function"?t!==n||!f:!n.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return o==="a"?f.call(t,e):f?f.value=e:n.set(t,e),e},xbe=globalThis&&globalThis.__classPrivateFieldGet||function(t,n,e,o){if(e==="a"&&!o)throw new TypeError("Private accessor was defined without a getter");if(typeof n=="function"?t!==n||!o:!n.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?o:e==="a"?o.call(t):o?o.value:n.get(t)},Mv;function C8(t){return t instanceof B0||t instanceof dx||t instanceof px}class O8{constructor(){Mv.set(this,void 0),qP(this,Mv,!1,"f")}setModified(){qP(this,Mv,!0,"f")}get modifiedFlag(){return xbe(this,Mv,"f")}}Mv=new WeakMap;class eg extends O8{getNodeDepths(n,e,o){o.set(n,e);for(const f of n.children)this.getNodeDepths(f,e+1,o);return o}optimize(n){const o=[...this.getNodeDepths(n,0,new Map).entries()].sort((f,r)=>r[1]-f[1]);for(const f of o)this.run(f[0]);return this.modifiedFlag}}class L8 extends O8{optimize(n){this.run(n);for(const e of n.children)this.optimize(e);return this.modifiedFlag}}class bbe extends L8{mergeNodes(n,e){const o=e.shift();for(const f of e)n.removeChild(f),f.parent=o,f.remove()}run(n){const e=n.children.map(f=>f.hash()),o={};for(let f=0;f1&&(this.setModified(),this.mergeNodes(n,o[f]))}}class _be extends L8{constructor(n){super(),this.requiresSelectionId=n&&k8(n)}run(n){n instanceof cp&&(this.requiresSelectionId&&(C8(n.parent)||n.parent instanceof sf||n.parent instanceof Nl)||(this.setModified(),n.remove()))}}class wbe extends O8{optimize(n){return this.run(n,new Set),this.modifiedFlag}run(n,e){let o=new Set;n instanceof Gf&&(o=n.producedFields(),xE(o,e)&&(this.setModified(),n.removeFormulas(e),n.producedFields.length===0&&n.remove()));for(const f of n.children)this.run(f,new Set([...e,...o]))}}class kbe extends L8{constructor(){super()}run(n){n instanceof fu&&!n.isRequired()&&(this.setModified(),n.remove())}}class Tbe extends eg{run(n){if(!C8(n)&&!(n.numChildren()>1)){for(const e of n.children)if(e instanceof Nl)if(n instanceof Nl)this.setModified(),n.merge(e);else{if(bE(n.producedFields(),e.dependentFields()))continue;this.setModified(),e.swapWithParent()}}}}class Abe extends eg{run(n){const e=[...n.children],o=n.children.filter(f=>f instanceof Nl);if(n.numChildren()>1&&o.length>=1){const f={},r=new Set;for(const a of o){const l=a.parse;for(const c of Xr(l))c in f?f[c]!==l[c]&&r.add(c):f[c]=l[c]}for(const a of r)delete f[a];if(!_o(f)){this.setModified();const a=new Nl(n,f);for(const l of e){if(l instanceof Nl)for(const c of Xr(f))delete l.parse[c];n.removeChild(l),l.parent=a,l instanceof Nl&&Xr(l.parse).length===0&&l.remove()}}}}}class Mbe extends eg{run(n){n instanceof fu||n.numChildren()>0||n instanceof i1||n instanceof B0||(this.setModified(),n.remove())}}class Sbe extends eg{run(n){const e=n.children.filter(f=>f instanceof Gf),o=e.pop();for(const f of e)this.setModified(),o.merge(f)}}class Ebe extends eg{run(n){const e=n.children.filter(f=>f instanceof sf),o={};for(const f of e){const r=Ba(f.groupBy);r in o||(o[r]=[]),o[r].push(f)}for(const f of Xr(o)){const r=o[f];if(r.length>1){const a=r.pop();for(const l of r)a.merge(l)&&(n.removeChild(l),l.parent=a,l.remove(),this.setModified())}}}}class Cbe extends eg{constructor(n){super(),this.model=n}run(n){const e=!(C8(n)||n instanceof r1||n instanceof Nl||n instanceof cp),o=[],f=[];for(const r of n.children)r instanceof Wf&&(e&&!bE(n.producedFields(),r.dependentFields())?o.push(r):f.push(r));if(o.length>0){const r=o.pop();for(const a of o)r.merge(a,this.model.renameSignal.bind(this.model));this.setModified(),n instanceof Wf?n.merge(r,this.model.renameSignal.bind(this.model)):r.swapWithParent()}if(f.length>1){const r=f.pop();for(const a of f)r.merge(a,this.model.renameSignal.bind(this.model));this.setModified()}}}class Obe extends eg{run(n){const e=[...n.children];if(!O0(e,a=>a instanceof fu)||n.numChildren()<=1)return;const f=[];let r;for(const a of e)if(a instanceof fu){let l=a;for(;l.numChildren()===1;){const[c]=l.children;if(c instanceof fu)l=c;else break}f.push(...l.children),r?(n.removeChild(a),a.parent=r.parent,r.parent.removeChild(r),r.parent=l,this.setModified()):r=l}else f.push(a);if(f.length){this.setModified();for(const a of f)a.parent.removeChild(a),a.parent=r}}}class tg extends To{constructor(n,e){super(n),this.transform=e}clone(){return new tg(null,ha(this.transform))}addDimensions(n){this.transform.groupby=Nf(this.transform.groupby.concat(n),e=>e)}dependentFields(){const n=new Set;return this.transform.groupby&&this.transform.groupby.forEach(n.add,n),this.transform.joinaggregate.map(e=>e.field).filter(e=>e!==void 0).forEach(n.add,n),n}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(n){var e;return(e=n.as)!==null&&e!==void 0?e:hi(n)}hash(){return`JoinAggregateTransform ${Ba(this.transform)}`}assemble(){const n=[],e=[],o=[];for(const r of this.transform.joinaggregate)e.push(r.op),o.push(this.getDefaultName(r)),n.push(r.field===void 0?null:r.field);const f=this.transform.groupby;return Object.assign({type:"joinaggregate",as:o,ops:e,fields:n},f!==void 0?{groupby:f}:{})}}function Lbe(t){return t.stack.stackBy.reduce((n,e)=>{const o=e.fieldDef,f=hi(o);return f&&n.push(f),n},[])}function Pbe(t){return Ir(t)&&t.every(n=>bi(n))&&t.length>1}class Hh extends To{constructor(n,e){super(n),this._stack=e}clone(){return new Hh(null,ha(this._stack))}static makeFromTransform(n,e){const{stack:o,groupby:f,as:r,offset:a="zero"}=e,l=[],c=[];if(e.sort!==void 0)for(const u of e.sort)l.push(u.field),c.push(Rs(u.order,"ascending"));const i={field:l,order:c};let s;return Pbe(r)?s=r:bi(r)?s=[r,`${r}_end`]:s=[`${e.stack}_start`,`${e.stack}_end`],new Hh(n,{dimensionFieldDefs:[],stackField:o,groupby:f,offset:a,sort:i,facetby:[],as:s})}static makeFromEncoding(n,e){const o=e.stack,{encoding:f}=e;if(!o)return null;const{groupbyChannels:r,fieldChannel:a,offset:l,impute:c}=o,i=r.map(h=>{const m=f[h];return th(m)}).filter(h=>!!h),s=Lbe(e),u=e.encoding.order;let d;return Ir(u)||ti(u)?d=GU(u):d=s.reduce((h,m)=>(h.field.push(m),h.order.push(a==="y"?"descending":"ascending"),h),{field:[],order:[]}),new Hh(n,{dimensionFieldDefs:i,stackField:e.vgField(a),facetby:[],stackby:s,sort:d,offset:l,impute:c,as:[e.vgField(a,{suffix:"start",forAs:!0}),e.vgField(a,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(n){this._stack.facetby.push(...n)}dependentFields(){const n=new Set;return n.add(this._stack.stackField),this.getGroupbyFields().forEach(n.add,n),this._stack.facetby.forEach(n.add,n),this._stack.sort.field.forEach(n.add,n),n}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${Ba(this._stack)}`}getGroupbyFields(){const{dimensionFieldDefs:n,impute:e,groupby:o}=this._stack;return n.length>0?n.map(f=>f.bin?e?[hi(f,{binSuffix:"mid"})]:[hi(f,{}),hi(f,{binSuffix:"end"})]:[hi(f)]).flat():o??[]}assemble(){const n=[],{facetby:e,dimensionFieldDefs:o,stackField:f,stackby:r,sort:a,offset:l,impute:c,as:i}=this._stack;if(c)for(const s of o){const{bandPosition:u=.5,bin:d}=s;if(d){const h=hi(s,{expr:"datum"}),m=hi(s,{expr:"datum",binSuffix:"end"});n.push({type:"formula",expr:`${u}*${h}+${1-u}*${m}`,as:hi(s,{binSuffix:"mid",forAs:!0})})}n.push({type:"impute",field:f,groupby:[...r,...e],key:hi(s,{binSuffix:"mid"}),method:"value",value:0})}return n.push({type:"stack",groupby:[...this.getGroupbyFields(),...e],field:f,sort:a,as:i,offset:l}),n}}class a1 extends To{constructor(n,e){super(n),this.transform=e}clone(){return new a1(null,ha(this.transform))}addDimensions(n){this.transform.groupby=Nf(this.transform.groupby.concat(n),e=>e)}dependentFields(){var n,e;const o=new Set;return((n=this.transform.groupby)!==null&&n!==void 0?n:[]).forEach(o.add,o),((e=this.transform.sort)!==null&&e!==void 0?e:[]).forEach(f=>o.add(f.field)),this.transform.window.map(f=>f.field).filter(f=>f!==void 0).forEach(o.add,o),o}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(n){var e;return(e=n.as)!==null&&e!==void 0?e:hi(n)}hash(){return`WindowTransform ${Ba(this.transform)}`}assemble(){var n;const e=[],o=[],f=[],r=[];for(const d of this.transform.window)o.push(d.op),f.push(this.getDefaultName(d)),r.push(d.param===void 0?null:d.param),e.push(d.field===void 0?null:d.field);const a=this.transform.frame,l=this.transform.groupby;if(a&&a[0]===null&&a[1]===null&&o.every(d=>CE(d)))return Object.assign({type:"joinaggregate",as:f,ops:o,fields:e},l!==void 0?{groupby:l}:{});const c=[],i=[];if(this.transform.sort!==void 0)for(const d of this.transform.sort)c.push(d.field),i.push((n=d.order)!==null&&n!==void 0?n:"ascending");const s={field:c,order:i},u=this.transform.ignorePeers;return Object.assign(Object.assign(Object.assign({type:"window",params:r,as:f,ops:o,fields:e,sort:s},u!==void 0?{ignorePeers:u}:{}),l!==void 0?{groupby:l}:{}),a!==void 0?{frame:a}:{})}}function Dbe(t){function n(e){if(!(e instanceof i1)){const o=e.clone();if(o instanceof fu){const f=sA+o.getSource();o.setSource(f),t.model.component.data.outputNodes[f]=o}else(o instanceof sf||o instanceof Hh||o instanceof a1||o instanceof tg)&&o.addDimensions(t.fields);for(const f of e.children.flatMap(n))f.parent=o;return[o]}return e.children.flatMap(n)}return n}function oA(t){if(t instanceof i1)if(t.numChildren()===1&&!(t.children[0]instanceof fu)){const n=t.children[0];(n instanceof sf||n instanceof Hh||n instanceof a1||n instanceof tg)&&n.addDimensions(t.fields),n.swapWithParent(),oA(t)}else{const n=t.model.component.data.main;gH(n);const e=Dbe(t),o=t.children.map(e).flat();for(const f of o)f.parent=n}else t.children.map(oA)}function gH(t){if(t instanceof fu&&t.type===Fo.Main&&t.numChildren()===1){const n=t.children[0];n instanceof i1||(n.swapWithParent(),gH(t))}}const sA="scale_",Cb=5;function lA(t){for(const n of t){for(const e of n.children)if(e.parent!==n)return!1;if(!lA(n.children))return!1}return!0}function Uc(t,n){let e=!1;for(const o of n)e=t.optimize(o)||e;return e}function HP(t,n,e){let o=t.sources,f=!1;return f=Uc(new kbe,o)||f,f=Uc(new _be(n),o)||f,o=o.filter(r=>r.numChildren()>0),f=Uc(new Mbe,o)||f,o=o.filter(r=>r.numChildren()>0),e||(f=Uc(new Tbe,o)||f,f=Uc(new Cbe(n),o)||f,f=Uc(new wbe,o)||f,f=Uc(new Abe,o)||f,f=Uc(new Ebe,o)||f,f=Uc(new Sbe,o)||f,f=Uc(new bbe,o)||f,f=Uc(new Obe,o)||f),t.sources=o,f}function Ibe(t,n){lA(t.sources);let e=0,o=0;for(let f=0;fn(e))}}var zbe=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f({signal:`{data: ${x3(o,{timeUnit:e,type:n})}}`}))}function R4(t,n,e){var o;const f=(o=Gl(e))===null||o===void 0?void 0:o.unit;return n==="temporal"||f?jbe(t,n,f):[t]}function yd(t,n,e,o){const{encoding:f}=e,r=Ws(f[o]),{type:a}=r,l=r.timeUnit;if(t1e(n)){const u=yd(t,void 0,e,o),d=R4(n.unionWith,a,l);return Lf([...d,...u.value])}else{if(Vi(n))return Lf([n]);if(n&&n!=="unaggregated"&&!gV(n))return Lf(R4(n,a,l))}const c=e.stack;if(c&&o===c.fieldChannel){if(c.offset==="normalize")return Gu([[0,1]]);const u=e.requestDataName(Fo.Main);return Gu([{data:u,field:e.vgField(o,{suffix:"start"})},{data:u,field:e.vgField(o,{suffix:"end"})}])}const i=_p(o)&&ti(r)?Vbe(e,o,t):void 0;if(mh(r)){const u=R4([r.datum],a,l);return Gu(u)}const s=r;if(n==="unaggregated"){const u=e.requestDataName(Fo.Main),{field:d}=r;return Gu([{data:u,field:hi({field:d,aggregate:"min"})},{data:u,field:hi({field:d,aggregate:"max"})}])}else if(Bo(s.bin)){if(ll(t))return Gu(t==="bin-ordinal"?[]:[{data:hy(i)?e.requestDataName(Fo.Main):e.requestDataName(Fo.Raw),field:e.vgField(o,cx(s,o)?{binSuffix:"range"}:{}),sort:i===!0||!Ei(i)?{field:e.vgField(o,{}),op:"min"}:i}]);{const{bin:u}=s;if(Bo(u)){const d=E8(e,s.field,u);return Gu([new Ou(()=>{const h=e.getSignalName(d);return`[${h}.start, ${h}.stop]`})])}else return Gu([{data:e.requestDataName(Fo.Main),field:e.vgField(o,{})}])}}else if(s.timeUnit&&Fa(["time","utc"],t)&&PV(s,Is(e)?e.encoding[ph(o)]:void 0,e.markDef,e.config)){const u=e.requestDataName(Fo.Main);return Gu([{data:u,field:e.vgField(o)},{data:u,field:e.vgField(o,{suffix:"end"})}])}else return Gu(i?[{data:hy(i)?e.requestDataName(Fo.Main):e.requestDataName(Fo.Raw),field:e.vgField(o),sort:i}]:[{data:e.requestDataName(Fo.Main),field:e.vgField(o)}])}function F4(t,n){const{op:e,field:o,order:f}=t;return Object.assign(Object.assign({op:e??(n?"sum":p3)},o?{field:bc(o)}:{}),f?{order:f}:{})}function Ube(t,n){var e;const o=t.component.scales[n],f=t.specifiedScales[n].domain,r=(e=t.fieldDef(n))===null||e===void 0?void 0:e.bin,a=gV(f)&&f,l=J0(r)&&l3(r.extent)&&r.extent;(a||l)&&o.set("selectionExtent",a??l,!0)}function Vbe(t,n,e){if(!ll(e))return;const o=t.fieldDef(n),f=o.sort;if(CV(f))return{op:"min",field:zm(o,n),order:"ascending"};const{stack:r}=t,a=r?new Set([...r.groupbyFields,...r.stackBy.map(l=>l.fieldDef.field)]):void 0;if($f(f)){const l=r&&!a.has(f.field);return F4(f,l)}else if(EV(f)){const{encoding:l,order:c}=f,i=t.fieldDef(l),{aggregate:s,field:u}=i,d=r&&!a.has(u);if(Wh(s)||wp(s))return F4({field:hi(i),order:c},d);if(CE(s)||!s)return F4({op:s,field:u,order:c},d)}else{if(f==="descending")return{op:"min",field:t.vgField(n),order:"descending"};if(Fa(["ascending",void 0],f))return!0}}function $P(t,n){const{aggregate:e,type:o}=t;return e?bi(e)&&!dge.has(e)?{valid:!1,reason:ime(e)}:o==="quantitative"&&n==="log"?{valid:!1,reason:ame(t)}:{valid:!0}:{valid:!1,reason:rme(t)}}function uA(t,n,e,o){return t.explicit&&n.explicit&&Kr(cme(e,o,t.value,n.value)),{explicit:t.explicit,value:[...t.value,...n.value]}}function qbe(t){const n=Nf(t.map(a=>Bh(a)?zbe(a,["sort"]):a),Ba),e=Nf(t.map(a=>{if(Bh(a)){const l=a.sort;return l!==void 0&&!hy(l)&&("op"in l&&l.op==="count"&&delete l.field,l.order==="ascending"&&delete l.order),l}}).filter(a=>a!==void 0),Ba);if(n.length===0)return;if(n.length===1){const a=t[0];if(Bh(a)&&e.length>0){let l=e[0];if(e.length>1)Kr(iP),l=!0;else if(Ei(l)&&"field"in l){const c=l.field;a.field===c&&(l=l.order?{order:l.order}:!0)}return Object.assign(Object.assign({},a),{sort:l})}return a}const o=Nf(e.map(a=>hy(a)||!("op"in a)||bi(a.op)&&a.op in uge?a:(Kr(hme(a)),!0)),Ba);let f;o.length===1?f=o[0]:o.length>1&&(Kr(iP),f=!0);const r=Nf(t.map(a=>Bh(a)?a.data:null),a=>a);return r.length===1&&r[0]!==null?Object.assign({data:r[0],fields:n.map(l=>l.field)},f?{sort:f}:{}):Object.assign({fields:n},f?{sort:f}:{})}function P8(t){if(Bh(t)&&bi(t.field))return t.field;if(gge(t)){let n;for(const e of t.fields)if(Bh(e)&&bi(e.field)){if(!n)n=e.field;else if(n!==e.field)return Kr(dme),n}return Kr(pme),n}else if(mge(t)){Kr(gme);const n=t.fields[0];return bi(n)?n:void 0}}function C3(t,n){const o=t.component.scales[n].get("domains").map(f=>(Bh(f)&&(f.data=t.lookupDataSource(f.data)),f));return qbe(o)}var Hbe=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fn.concat(vH(e)),GP(t)):GP(t)}function GP(t){return Xr(t.component.scales).reduce((n,e)=>{const o=t.component.scales[e];if(o.merged)return n;const f=o.combine(),{name:r,type:a,selectionExtent:l,domains:c,range:i,reverse:s}=f,u=Hbe(f,["name","type","selectionExtent","domains","range","reverse"]),d=$be(f.range,r,e,t),h=C3(t,e),m=l?zye(t,l,o,h):null;return n.push(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:r,type:a},h?{domain:h}:{}),m?{domainRaw:m}:{}),{range:d}),s!==void 0?{reverse:s}:{}),u)),n},[])}function $be(t,n,e,o){if(sl(e)){if(kp(t))return{step:{signal:`${n}_step`}}}else if(Ei(t)&&Bh(t))return Object.assign(Object.assign({},t),{data:o.lookupDataSource(t.data)});return t}class yH extends rd{constructor(n,e){super({},{name:n}),this.merged=!1,this.setWithExplicit("type",e)}domainDefinitelyIncludesZero(){return this.get("zero")!==!1?!0:O0(this.get("domains"),n=>Ir(n)&&n.length===2&&n[0]<=0&&n[1]>=0)}}const Gbe=["range","scheme"];function Wbe(t){const n=t.component.scales;for(const e of s3){const o=n[e];if(!o)continue;const f=Ybe(e,t);o.setWithExplicit("range",f)}}function WP(t,n){const e=t.fieldDef(n);if(e?.bin){const{bin:o,field:f}=e,r=Fu(n),a=t.getName(r);if(Ei(o)&&o.binned&&o.step!==void 0)return new Ou(()=>{const l=t.scaleName(n),c=`(domain("${l}")[1] - domain("${l}")[0]) / ${o.step}`;return`${t.getSignalName(a)} / (${c})`});if(Bo(o)){const l=E8(t,f,o);return new Ou(()=>{const c=t.getSignalName(l),i=`(${c}.stop - ${c}.start) / ${c}.step`;return`${t.getSignalName(a)} / (${i})`})}}}function Ybe(t,n){const e=n.specifiedScales[t],{size:o}=n,r=n.getScaleComponent(t).get("type");for(const u of Gbe)if(e[u]!==void 0){const d=VT(r,u),h=mV(t,u);if(!d)Kr(QU(r,u,t));else if(h)Kr(h);else switch(u){case"range":{const m=e.range;if(Ir(m)){if(sl(t))return Lf(m.map(g=>{if(g==="width"||g==="height"){const p=n.getName(g),v=n.getSignalName.bind(n);return Ou.fromName(v,p)}return g}))}else if(Ei(m))return Lf({data:n.requestDataName(Fo.Main),field:m.field,sort:{op:"min",field:n.vgField(t)}});return Lf(m)}case"scheme":return Lf(Xbe(e[u]))}}const a=t===cs||t==="xOffset"?"width":"height",l=o[a];if(rh(l)){if(sl(t))if(ll(r)){const u=xH(l,n,t);if(u)return Lf({step:u})}else Kr(eV(a));else if(e1(t)){const u=t===mp?"x":"y";if(n.getScaleComponent(u).get("type")==="band"){const m=bH(l,r);if(m)return Lf(m)}}}const{rangeMin:c,rangeMax:i}=e,s=Zbe(t,n);return(c!==void 0||i!==void 0)&&VT(r,"rangeMin")&&Ir(s)&&s.length===2?Lf([c??s[0],i??s[1]]):Gu(s)}function Xbe(t){return e1e(t)?Object.assign({scheme:t.name},Eu(t,["name"])):{scheme:t}}function Zbe(t,n){const{size:e,config:o,mark:f,encoding:r}=n,a=n.getSignalName.bind(n),{type:l}=Ws(r[t]),i=n.getScaleComponent(t).get("type"),{domain:s,domainMid:u}=n.specifiedScales[t];switch(t){case cs:case ol:{if(Fa(["point","band"],i)){const m=_H(t,e,o.view);if(rh(m))return{step:xH(m,n,t)}}const d=Fu(t),h=n.getName(d);return t===ol&&rc(i)?[Ou.fromName(a,h),0]:[0,Ou.fromName(a,h)]}case mp:case Qm:return Jbe(t,n,i);case ed:{const d=n.component.scales[t].get("zero"),h=wH(f,d,o),m=e_e(f,e,n,o);return Em(i)?Qbe(h,m,Kbe(i,o,s,t)):[h,m]}case Tc:return[0,Math.PI*2];case X0:return[0,360];case vf:return[0,new Ou(()=>{const d=n.getSignalName("width"),h=n.getSignalName("height");return`min(${d},${h})/2`})];case xp:return[o.scale.minStrokeWidth,o.scale.maxStrokeWidth];case bp:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case Ru:return"symbol";case zu:case hh:case dh:return i==="ordinal"?l==="nominal"?"category":"ordinal":u!==void 0?"diverging":f==="rect"||f==="geoshape"?"heatmap":"ramp";case td:case vp:case yp:return[o.scale.minOpacity,o.scale.maxOpacity]}}function xH(t,n,e){var o,f,r,a,l;const{encoding:c}=n,i=n.getScaleComponent(e),s=IU(e),u=c[s];if(lq({step:t,offsetIsDiscrete:la(u)&&cV(u.type)})==="offset"&&qV(c,s)){const h=n.getScaleComponent(s);let g=`domain('${n.scaleName(s)}').length`;if(h.get("type")==="band"){const v=(f=(o=h.get("paddingInner"))!==null&&o!==void 0?o:h.get("padding"))!==null&&f!==void 0?f:0,y=(a=(r=h.get("paddingOuter"))!==null&&r!==void 0?r:h.get("padding"))!==null&&a!==void 0?a:0;g=`bandspace(${g}, ${v}, ${y})`}const p=(l=i.get("paddingInner"))!==null&&l!==void 0?l:i.get("padding");return{signal:`${t.step} * ${g} / (1-${bge(p)})`}}else return t.step}function bH(t,n){if(lq({step:t,offsetIsDiscrete:ll(n)})==="offset")return{step:t.step}}function Jbe(t,n,e){const o=t===mp?"x":"y",r=n.getScaleComponent(o).get("type"),a=n.scaleName(o);if(r==="band"){const l=_H(o,n.size,n.config.view);if(rh(l)){const c=bH(l,e);if(c)return c}return[0,{signal:`bandwidth('${a}')`}]}else return _U(`Cannot use ${t} scale if ${o} scale is not discrete.`)}function _H(t,n,e){const o=t===cs?"width":"height",f=n[o];return f||I2(e,o)}function Kbe(t,n,e,o){switch(t){case"quantile":return n.scale.quantileCount;case"quantize":return n.scale.quantizeCount;case"threshold":return e!==void 0&&Ir(e)?e.length+1:(Kr(Tme(o)),3)}}function Qbe(t,n,e){const o=()=>{const f=qh(n),r=qh(t),a=`(${f} - ${r}) / (${e} - 1)`;return`sequence(${r}, ${f} + ${a}, ${a})`};return Vi(n)?new Ou(o):{signal:o()}}function wH(t,n,e){if(n)return Vi(n)?{signal:`${n.signal} ? 0 : ${wH(t,!1,e)}`}:0;switch(t){case"bar":case"tick":return e.scale.minBandSize;case"line":case"trail":case"rule":return e.scale.minStrokeWidth;case"text":return e.scale.minFontSize;case"point":case"square":case"circle":return e.scale.minSize}throw new Error(u3("size",t))}const YP=.95;function e_e(t,n,e,o){const f={x:WP(e,"x"),y:WP(e,"y")};switch(t){case"bar":case"tick":{if(o.scale.maxBandSize!==void 0)return o.scale.maxBandSize;const r=XP(n,f,o.view);return wo(r)?r-1:new Ou(()=>`${r.signal} - 1`)}case"line":case"trail":case"rule":return o.scale.maxStrokeWidth;case"text":return o.scale.maxFontSize;case"point":case"square":case"circle":{if(o.scale.maxSize)return o.scale.maxSize;const r=XP(n,f,o.view);return wo(r)?Math.pow(YP*r,2):new Ou(()=>`pow(${YP} * ${r.signal}, 2)`)}}throw new Error(u3("size",t))}function XP(t,n,e){const o=rh(t.width)?t.width.step:D2(e,"width"),f=rh(t.height)?t.height.step:D2(e,"height");return n.x||n.y?new Ou(()=>`min(${[n.x?n.x.signal:o,n.y?n.y.signal:f].join(", ")})`):Math.min(o,f)}function kH(t,n){Is(t)?t_e(t,n):AH(t,n)}function t_e(t,n){const e=t.component.scales,{config:o,encoding:f,markDef:r,specifiedScales:a}=t;for(const l of Xr(e)){const c=a[l],i=e[l],s=t.getScaleComponent(l),u=Ws(f[l]),d=c[n],h=s.get("type"),m=s.get("padding"),g=s.get("paddingInner"),p=VT(h,n),v=mV(l,n);if(d!==void 0&&(p?v&&Kr(v):Kr(QU(h,n,l))),p&&v===void 0)if(d!==void 0){const y=u.timeUnit,x=u.type;switch(n){case"domainMax":case"domainMin":K0(c[n])||x==="temporal"||y?i.set(n,{signal:x3(c[n],{type:x,timeUnit:y})},!0):i.set(n,c[n],!0);break;default:i.copyKeyFromObject(n,c)}}else{const y=n in ZP?ZP[n]({model:t,channel:l,fieldOrDatumDef:u,scaleType:h,scalePadding:m,scalePaddingInner:g,domain:c.domain,domainMin:c.domainMin,domainMax:c.domainMax,markDef:r,config:o,hasNestedOffsetScale:GT(f,l),hasSecondaryRangeChannel:!!f[ph(l)]}):o.scale[n];y!==void 0&&i.set(n,y,!1)}}}const ZP={bins:({model:t,fieldOrDatumDef:n})=>ti(n)?n_e(t,n):void 0,interpolate:({channel:t,fieldOrDatumDef:n})=>r_e(t,n.type),nice:({scaleType:t,channel:n,domain:e,domainMin:o,domainMax:f,fieldOrDatumDef:r})=>i_e(t,n,e,o,f,r),padding:({channel:t,scaleType:n,fieldOrDatumDef:e,markDef:o,config:f})=>a_e(t,n,f.scale,e,o,f.bar),paddingInner:({scalePadding:t,channel:n,markDef:e,scaleType:o,config:f,hasNestedOffsetScale:r})=>o_e(t,n,e.type,o,f.scale,r),paddingOuter:({scalePadding:t,channel:n,scaleType:e,scalePaddingInner:o,config:f,hasNestedOffsetScale:r})=>s_e(t,n,e,o,f.scale,r),reverse:({fieldOrDatumDef:t,scaleType:n,channel:e,config:o})=>{const f=ti(t)?t.sort:void 0;return l_e(n,f,e,o.scale)},zero:({channel:t,fieldOrDatumDef:n,domain:e,markDef:o,scaleType:f,config:r,hasSecondaryRangeChannel:a})=>u_e(t,n,e,o,f,r.scale,a)};function TH(t){Is(t)?Wbe(t):AH(t,"range")}function AH(t,n){const e=t.component.scales;for(const o of t.children)n==="range"?TH(o):kH(o,n);for(const o of Xr(e)){let f;for(const r of t.children){const a=r.component.scales[o];if(a){const l=a.getWithExplicit(n);f=op(f,l,n,"scale",wq((c,i)=>{switch(n){case"range":return c.step&&i.step?c.step-i.step:0}return 0}))}}e[o].setWithExplicit(n,f)}}function n_e(t,n){const e=n.bin;if(Bo(e)){const o=E8(t,n.field,e);return new Ou(()=>t.getSignalName(o))}else if(xl(e)&&J0(e)&&e.step!==void 0)return{step:e.step}}function r_e(t,n){if(Fa([zu,hh,dh],t)&&n!=="nominal")return"hcl"}function i_e(t,n,e,o,f,r){var a;if(!(((a=th(r))===null||a===void 0?void 0:a.bin)||Ir(e)||f!=null||o!=null||Fa([Cu.TIME,Cu.UTC],t)))return sl(n)?!0:void 0}function a_e(t,n,e,o,f,r){if(sl(t)){if(nf(n)){if(e.continuousPadding!==void 0)return e.continuousPadding;const{type:a,orient:l}=f;if(a==="bar"&&!(ti(o)&&(o.bin||o.timeUnit))&&(l==="vertical"&&t==="x"||l==="horizontal"&&t==="y"))return r.continuousBandSize}if(n===Cu.POINT)return e.pointPadding}}function o_e(t,n,e,o,f,r=!1){if(t===void 0){if(sl(n)){const{bandPaddingInner:a,barBandPaddingInner:l,rectBandPaddingInner:c,bandWithNestedOffsetPaddingInner:i}=f;return r?i:Rs(a,e==="bar"?l:c)}else if(e1(n)&&o===Cu.BAND)return f.offsetBandPaddingInner}}function s_e(t,n,e,o,f,r=!1){if(t===void 0){if(sl(n)){const{bandPaddingOuter:a,bandWithNestedOffsetPaddingOuter:l}=f;if(r)return l;if(e===Cu.BAND)return Rs(a,Vi(o)?{signal:`${o.signal}/2`}:o/2)}else if(e1(n)){if(e===Cu.POINT)return .5;if(e===Cu.BAND)return f.offsetBandPaddingOuter}}}function l_e(t,n,e,o){if(e==="x"&&o.xReverse!==void 0)return rc(t)&&n==="descending"?Vi(o.xReverse)?{signal:`!${o.xReverse.signal}`}:!o.xReverse:o.xReverse;if(rc(t)&&n==="descending")return!0}function u_e(t,n,e,o,f,r,a){if(!!e&&e!=="unaggregated"&&rc(f)){if(Ir(e)){const c=e[0],i=e[e.length-1];if(c<=0&&i>=0)return!0}return!1}if(t==="size"&&n.type==="quantitative"&&!Em(f))return!0;if(!(ti(n)&&n.bin)&&Fa([...gh,...tge],t)){const{orient:c,type:i}=o;return Fa(["bar","area","line","trail"],i)&&(c==="horizontal"&&t==="y"||c==="vertical"&&t==="x")?!1:Fa(["bar","area"],i)&&!a?!0:r?.zero}return!1}function c_e(t,n,e,o,f=!1){const r=f_e(n,e,o,f),{type:a}=t;return _p(n)?a!==void 0?s1e(n,a)?ti(e)&&!o1e(a,e.type)?(Kr(lme(a,r)),r):a:(Kr(sme(n,a,r)),r):r:null}function f_e(t,n,e,o){var f;switch(n.type){case"nominal":case"ordinal":{if(rm(t)||C4(t)==="discrete")return t==="shape"&&n.type==="ordinal"&&Kr(O4(t,"ordinal")),"ordinal";if(sl(t)||e1(t)){if(Fa(["rect","bar","image","rule"],e.type)||o)return"band"}else if(e.type==="arc"&&t in EE)return"band";const r=e[Fu(t)];return z0(r)||Om(n)&&((f=n.axis)===null||f===void 0?void 0:f.tickBand)?"band":"point"}case"temporal":return rm(t)?"time":C4(t)==="discrete"?(Kr(O4(t,"temporal")),"ordinal"):ti(n)&&n.timeUnit&&Gl(n.timeUnit).utc?"utc":"time";case"quantitative":return rm(t)?ti(n)&&Bo(n.bin)?"bin-ordinal":"linear":C4(t)==="discrete"?(Kr(O4(t,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(JU(n.type))}function h_e(t,{ignoreRange:n}={}){MH(t),mH(t);for(const e of a1e)kH(t,e);n||TH(t)}function MH(t){Is(t)?t.component.scales=d_e(t):t.component.scales=g_e(t)}function d_e(t){const{encoding:n,mark:e,markDef:o}=t,f={};for(const r of s3){const a=Ws(n[r]);if(a&&e===xV&&r===Ru&&a.type===t1)continue;let l=a&&a.scale;if(e1(r)){const c=zU(r);if(!GT(n,c)){l&&Kr(Wge(r));continue}}if(a&&l!==null&&l!==!1){l??(l={});const c=GT(n,r),i=c_e(l,r,a,o,c);f[r]=new yH(t.scaleName(`${r}`,!0),{value:i,explicit:l.type===i})}}return f}const p_e=wq((t,n)=>oP(t)-oP(n));function g_e(t){var n,e;const o=t.component.scales={},f={},r=t.component.resolve;for(const a of t.children){MH(a);for(const l of Xr(a.component.scales))if((n=(e=r.scale)[l])!==null&&n!==void 0||(e[l]=rH(l,t)),r.scale[l]==="shared"){const c=f[l],i=a.component.scales[l].getWithExplicit("type");c?Xme(c.value,i.value)?f[l]=op(c,i,"type","scale",p_e):(r.scale[l]="independent",delete f[l]):f[l]=i}}for(const a of Xr(f)){const l=t.scaleName(a,!0),c=f[a];o[a]=new yH(l,c);for(const i of t.children){const s=i.component.scales[a];s&&(i.renameScale(s.get("name"),l),s.merged=!0)}}return o}var N4=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{var u,d,h;return!((u=s.from)===null||u===void 0)&&u.data&&(s.from.data=this.lookupDataSource(s.from.data)),!((h=(d=s.from)===null||d===void 0?void 0:d.facet)===null||h===void 0)&&h.data&&(s.from.facet.data=this.lookupDataSource(s.from.facet.data)),s},this.parent=o,this.config=r,this.view=ku(l),this.name=(c=n.name)!==null&&c!==void 0?c:f,this.title=kd(n.title)?{text:n.title}:n.title?ku(n.title):void 0,this.scaleNameMap=o?o.scaleNameMap:new B4,this.projectionNameMap=o?o.projectionNameMap:new B4,this.signalNameMap=o?o.signalNameMap:new B4,this.data=n.data,this.description=n.description,this.transforms=yye((i=n.transform)!==null&&i!==void 0?i:[]),this.layout=e==="layer"||e==="unit"?{}:Tve(n,e,r),this.component={data:{sources:o?o.component.data.sources:[],outputNodes:o?o.component.data.outputNodes:{},outputNodeRefCounts:o?o.component.data.outputNodeRefCounts:{},isFaceted:g3(n)||o?.component.data.isFaceted&&n.data===void 0},layoutSize:new rd,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:Object.assign({scale:{},axis:{},legend:{}},a?ha(a):{}),selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){h_e(this)}parseProjection(){dH(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){lH(this)}assembleEncodeFromView(n){const e=N4(n,["style"]),o={};for(const f of Xr(e)){const r=e[f];r!==void 0&&(o[f]=Ho(r))}return o}assembleGroupEncodeEntry(n){let e={};return this.view&&(e=this.assembleEncodeFromView(this.view)),!n&&(this.description&&(e.description=Ho(this.description)),this.type==="unit"||this.type==="layer")?Object.assign({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},e??{}):_o(e)?void 0:e}assembleLayout(){if(!this.layout)return;const n=this.layout,{spacing:e}=n,o=N4(n,["spacing"]),{component:f,config:r}=this,a=Pxe(f.layoutHeaders,r);return Object.assign(Object.assign(Object.assign({padding:e},this.assembleDefaultLayout()),o),a?{titleBand:a}:{})}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:n}=this.component;let e=[];for(const o of dc)n[o].title&&e.push(Mxe(this,o));for(const o of T8)e=e.concat(Sxe(this,o));return e}assembleAxes(){return pxe(this.component.axes,this.config)}assembleLegends(){return cH(this)}assembleProjections(){return nbe(this)}assembleTitle(){var n,e,o;const f=(n=this.title)!==null&&n!==void 0?n:{},{encoding:r}=f,a=N4(f,["encoding"]),l=Object.assign(Object.assign(Object.assign({},VU(this.config.title).nonMarkTitleProperties),a),r?{encode:{update:r}}:{});if(l.text)return Fa(["unit","layer"],this.type)?Fa(["middle",void 0],l.anchor)&&((e=l.frame)!==null&&e!==void 0||(l.frame="group")):(o=l.anchor)!==null&&o!==void 0||(l.anchor="start"),_o(l)?void 0:l}assembleGroup(n=[]){const e={};n=n.concat(this.assembleSignals()),n.length>0&&(e.signals=n);const o=this.assembleLayout();o&&(e.layout=o),e.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const f=!this.parent||lf(this.parent)?vH(this):[];f.length>0&&(e.scales=f);const r=this.assembleAxes();r.length>0&&(e.axes=r);const a=this.assembleLegends();return a.length>0&&(e.legends=a),e}getName(n){return Xo((this.name?`${this.name}_`:"")+n)}getDataName(n){return this.getName(Fo[n].toLowerCase())}requestDataName(n){const e=this.getDataName(n),o=this.component.data.outputNodeRefCounts;return o[e]=(o[e]||0)+1,e}getSizeSignalRef(n){if(lf(this.parent)){const e=tH(n),o=o3(e),f=this.component.scales[o];if(f&&!f.merged){const r=f.get("type"),a=f.get("range");if(ll(r)&&kp(a)){const l=f.get("name"),c=C3(this,o),i=P8(c);if(i){const s=hi({aggregate:"distinct",field:i},{expr:"datum"});return{signal:eH(l,f,s)}}else return Kr(PE(o)),null}}}return{signal:this.signalNameMap.get(this.getName(n))}}lookupDataSource(n){const e=this.component.data.outputNodes[n];return e?e.getSource():n}getSignalName(n){return this.signalNameMap.get(n)}renameSignal(n,e){this.signalNameMap.rename(n,e)}renameScale(n,e){this.scaleNameMap.rename(n,e)}renameProjection(n,e){this.projectionNameMap.rename(n,e)}scaleName(n,e){if(e)return this.getName(n);if(PU(n)&&_p(n)&&this.component.scales[n]||this.scaleNameMap.has(this.getName(n)))return this.scaleNameMap.get(this.getName(n))}projectionName(n){if(n)return this.getName("projection");if(this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection")))return this.projectionNameMap.get(this.getName("projection"))}getScaleComponent(n){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const e=this.component.scales[n];return e&&!e.merged?e:this.parent?this.parent.getScaleComponent(n):void 0}getSelectionComponent(n,e){let o=this.component.selection[n];if(!o&&this.parent&&(o=this.parent.getSelectionComponent(n,e)),!o)throw new Error(Age(e));return o}hasAxisOrientSignalRef(){var n,e;return((n=this.component.axes.x)===null||n===void 0?void 0:n.some(o=>o.hasOrientSignalRef()))||((e=this.component.axes.y)===null||e===void 0?void 0:e.some(o=>o.hasOrientSignalRef()))}}class SH extends I8{vgField(n,e={}){const o=this.fieldDef(n);if(!!o)return hi(o,e)}reduceFieldDef(n,e){return K1e(this.getMapping(),(o,f,r)=>{const a=th(f);return a?n(o,a,r):o},e)}forEachFieldDef(n,e){o8(this.getMapping(),(o,f)=>{const r=th(o);r&&n(r,f)},e)}}var m_e=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f{const u=_p(s)&&e.getScaleComponent(s);if(u){const d=u.get("type");rc(d)&&i.aggregate!=="count"&&!Tp(f)&&(c[i.field]=i)}return c},{});return Xr(l).length?new vy(n,l):null}dependentFields(){return new Set(Xr(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${Ba(this.filter)}`}assemble(){const n=Xr(this.filter).reduce((e,o)=>{const f=this.filter[o],r=hi(f,{expr:"datum"});return f!==null&&(f.type==="temporal"?e.push(`(isDate(${r}) || (isValid(${r}) && isFinite(+${r})))`):f.type==="quantitative"&&(e.push(`isValid(${r})`),e.push(`isFinite(+${r})`))),e},[]);return n.length>0?{type:"filter",expr:n.join(" && ")}:null}}class L3 extends To{constructor(n,e){super(n),this.transform=e,this.transform=ha(e);const{flatten:o,as:f=[]}=this.transform;this.transform.as=o.map((r,a)=>{var l;return(l=f[a])!==null&&l!==void 0?l:r})}clone(){return new L3(this.parent,ha(this.transform))}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${Ba(this.transform)}`}assemble(){const{flatten:n,as:e}=this.transform;return{type:"flatten",fields:n,as:e}}}class P3 extends To{constructor(n,e){var o,f,r;super(n),this.transform=e,this.transform=ha(e);const a=(o=this.transform.as)!==null&&o!==void 0?o:[void 0,void 0];this.transform.as=[(f=a[0])!==null&&f!==void 0?f:"key",(r=a[1])!==null&&r!==void 0?r:"value"]}clone(){return new P3(null,ha(this.transform))}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${Ba(this.transform)}`}assemble(){const{fold:n,as:e}=this.transform;return{type:"fold",fields:n,as:e}}}class om extends To{constructor(n,e,o,f){super(n),this.fields=e,this.geojson=o,this.signal=f}clone(){return new om(null,ha(this.fields),this.geojson,this.signal)}static parseAll(n,e){if(e.component.projection&&!e.component.projection.isFit)return n;let o=0;for(const f of[[fh,ch],[_c,yf]]){const r=f.map(a=>{const l=Ws(e.encoding[a]);return ti(l)?l.field:mh(l)?{expr:`${l.datum}`}:hf(l)?{expr:`${l.value}`}:void 0});(r[0]||r[1])&&(n=new om(n,r,null,e.getName(`geojson_${o++}`)))}if(e.channelHasField(Ru)){const f=e.typedFieldDef(Ru);f.type===t1&&(n=new om(n,null,f.field,e.getName(`geojson_${o++}`)))}return n}dependentFields(){var n;const e=((n=this.fields)!==null&&n!==void 0?n:[]).filter(bi);return new Set([...this.geojson?[this.geojson]:[],...e])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${Ba(this.fields)}`}assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum["${this.geojson}"])`}]:[],Object.assign(Object.assign(Object.assign({type:"geojson"},this.fields?{fields:this.fields}:{}),this.geojson?{geojson:this.geojson}:{}),{signal:this.signal})]}}class yy extends To{constructor(n,e,o,f){super(n),this.projection=e,this.fields=o,this.as=f}clone(){return new yy(null,this.projection,ha(this.fields),ha(this.as))}static parseAll(n,e){if(!e.projectionName())return n;for(const o of[[fh,ch],[_c,yf]]){const f=o.map(a=>{const l=Ws(e.encoding[a]);return ti(l)?l.field:mh(l)?{expr:`${l.datum}`}:hf(l)?{expr:`${l.value}`}:void 0}),r=o[0]===_c?"2":"";(f[0]||f[1])&&(n=new yy(n,e.projectionName(),f,[e.getName(`x${r}`),e.getName(`y${r}`)]))}return n}dependentFields(){return new Set(this.fields.filter(bi))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${Ba(this.fields)} ${Ba(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class v0 extends To{constructor(n,e){super(n),this.transform=e}clone(){return new v0(null,ha(this.transform))}dependentFields(){var n;return new Set([this.transform.impute,this.transform.key,...(n=this.transform.groupby)!==null&&n!==void 0?n:[]])}producedFields(){return new Set([this.transform.impute])}processSequence(n){const{start:e=0,stop:o,step:f}=n;return{signal:`sequence(${[e,o,...f?[f]:[]].join(",")})`}}static makeFromTransform(n,e){return new v0(n,e)}static makeFromEncoding(n,e){const o=e.encoding,f=o.x,r=o.y;if(ti(f)&&ti(r)){const a=f.impute?f:r.impute?r:void 0;if(a===void 0)return;const l=f.impute?r:r.impute?f:void 0,{method:c,value:i,frame:s,keyvals:u}=a.impute,d=$V(e.mark,o);return new v0(n,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({impute:a.field,key:l.field},c?{method:c}:{}),i!==void 0?{value:i}:{}),s?{frame:s}:{}),u!==void 0?{keyvals:u}:{}),d.length?{groupby:d}:{}))}return null}hash(){return`Impute ${Ba(this.transform)}`}assemble(){const{impute:n,key:e,keyvals:o,method:f,groupby:r,value:a,frame:l=[null,null]}=this.transform,c=Object.assign(Object.assign(Object.assign(Object.assign({type:"impute",field:n,key:e},o?{keyvals:eye(o)?this.processSequence(o):o}:{}),{method:"value"}),r?{groupby:r}:{}),{value:!f||f==="value"?a:null});if(f&&f!=="value"){const i=Object.assign({type:"window",as:[`imputed_${n}_value`],ops:[f],fields:[n],frame:l,ignorePeers:!1},r?{groupby:r}:{}),s={type:"formula",expr:`datum.${n} === null ? datum.imputed_${n}_value : datum.${n}`,as:n};return[c,i,s]}else return[c]}}var v_e=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fo)}producedFields(){}dependentFields(){var n;return new Set([this.transform.pivot,this.transform.value,...(n=this.transform.groupby)!==null&&n!==void 0?n:[]])}hash(){return`PivotTransform ${Ba(this.transform)}`}assemble(){const{pivot:n,value:e,groupby:o,limit:f,op:r}=this.transform;return Object.assign(Object.assign(Object.assign({type:"pivot",field:n,value:e},f!==void 0?{limit:f}:{}),r!==void 0?{op:r}:{}),o!==void 0?{groupby:o}:{})}}class F3 extends To{constructor(n,e){super(n),this.transform=e}clone(){return new F3(null,ha(this.transform))}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${Ba(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function EH(t){let n=0;function e(o,f){var r;if(o instanceof B0&&!o.isGenerator&&!Pm(o.data)&&(t.push(f),f={name:null,source:f.name,transform:[]}),o instanceof Nl&&(o.parent instanceof B0&&!f.source?(f.format=Object.assign(Object.assign({},(r=f.format)!==null&&r!==void 0?r:{}),{parse:o.assembleFormatParse()}),f.transform.push(...o.assembleTransforms(!0))):f.transform.push(...o.assembleTransforms())),o instanceof i1){f.name||(f.name=`data_${n++}`),!f.source||f.transform.length>0?(t.push(f),o.data=f.name):o.data=f.source,t.push(...o.assemble());return}switch((o instanceof dx||o instanceof px||o instanceof vy||o instanceof r1||o instanceof Im||o instanceof yy||o instanceof sf||o instanceof xy||o instanceof a1||o instanceof tg||o instanceof P3||o instanceof L3||o instanceof O3||o instanceof D3||o instanceof I3||o instanceof z3||o instanceof cp||o instanceof F3||o instanceof R3)&&f.transform.push(o.assemble()),(o instanceof Wf||o instanceof Gf||o instanceof v0||o instanceof Hh||o instanceof om)&&f.transform.push(...o.assemble()),o instanceof fu&&(f.source&&f.transform.length===0?o.setSource(f.source):o.parent instanceof fu?o.setSource(f.name):(f.name||(f.name=`data_${n++}`),o.setSource(f.name),o.numChildren()===1&&(t.push(f),f={name:null,source:f.name,transform:[]}))),o.numChildren()){case 0:o instanceof fu&&(!f.source||f.transform.length>0)&&t.push(f);break;case 1:e(o.children[0],f);break;default:{f.name||(f.name=`data_${n++}`);let a=f.name;!f.source||f.transform.length>0?t.push(f):a=f.source;for(const l of o.children)e(l,{name:null,source:a,transform:[]});break}}}return e}function b_e(t){const n=[],e=EH(n);for(const o of t.children)e(o,{source:t.name,name:null,transform:[]});return n}function __e(t,n){var e,o;const f=[],r=EH(f);let a=0;for(const c of t.sources){c.hasName()||(c.dataName=`source_${a++}`);const i=c.assemble();r(c,i)}for(const c of f)c.transform.length===0&&delete c.transform;let l=0;for(const[c,i]of f.entries())((e=i.transform)!==null&&e!==void 0?e:[]).length===0&&!i.source&&f.splice(l++,0,f.splice(c,1)[0]);for(const c of f)for(const i of(o=c.transform)!==null&&o!==void 0?o:[])i.type==="lookup"&&(i.from=t.outputNodes[i.from].getSource());for(const c of f)c.name in n&&(c.values=n[c.name]);return f}function w_e(t){return t==="top"||t==="left"||Vi(t)?"header":"footer"}function k_e(t){for(const n of dc)T_e(t,n);JP(t,"x"),JP(t,"y")}function T_e(t,n){var e;const{facet:o,config:f,child:r,component:a}=t;if(t.channelHasField(n)){const l=o[n],c=Rm("title",null,f,n);let i=im(l,f,{allowDisabling:!0,includeDefault:c===void 0||!!c});r.component.layoutHeaders[n].title&&(i=Ir(i)?i.join(", "):i,i+=` / ${r.component.layoutHeaders[n].title}`,r.component.layoutHeaders[n].title=null);const s=Rm("labelOrient",l.header,f,n),u=l.header!==null?Rs((e=l.header)===null||e===void 0?void 0:e.labels,f.header.labels,!0):!1,d=Fa(["bottom","right"],s)?"footer":"header";a.layoutHeaders[n]={title:l.header!==null?i:null,facetFieldDef:l,[d]:n==="facet"?[]:[CH(t,n,u)]}}}function CH(t,n,e){const o=n==="row"?"height":"width";return{labels:e,sizeSignal:t.child.component.layoutSize.get(o)?t.child.getSizeSignalRef(o):void 0,axes:[]}}function JP(t,n){var e;const{child:o}=t;if(o.component.axes[n]){const{layoutHeaders:f,resolve:r}=t.component;if(r.axis[n]=S8(r,n),r.axis[n]==="shared"){const a=n==="x"?"column":"row",l=f[a];for(const c of o.component.axes[n]){const i=w_e(c.get("orient"));(e=l[i])!==null&&e!==void 0||(l[i]=[CH(t,a,!1)]);const s=Av(c,"main",t.config,{header:!0});s&&l[i][0].axes.push(s),c.mainExtracted=!0}}}}function A_e(t){z8(t),N2(t,"width"),N2(t,"height")}function M_e(t){z8(t);const n=t.layout.columns===1?"width":"childWidth",e=t.layout.columns===void 0?"height":"childHeight";N2(t,n),N2(t,e)}function z8(t){for(const n of t.children)n.parseLayoutSize()}function N2(t,n){var e;const o=tH(n),f=o3(o),r=t.component.resolve,a=t.component.layoutSize;let l;for(const c of t.children){const i=c.component.layoutSize.getWithExplicit(o),s=(e=r.scale[f])!==null&&e!==void 0?e:rH(f,t);if(s==="independent"&&i.value==="step"){l=void 0;break}if(l){if(s==="independent"&&l.value!==i.value){l=void 0;break}l=op(l,i,o,"")}else l=i}if(l){for(const c of t.children)t.renameSignal(c.getName(o),t.getName(n)),c.component.layoutSize.set(o,"merged",!1);a.setWithExplicit(n,l)}else a.setWithExplicit(n,{explicit:!1,value:void 0})}function S_e(t){const{size:n,component:e}=t;for(const o of gh){const f=Fu(o);if(n[f]){const r=n[f];e.layoutSize.set(f,rh(r)?"step":r,!0)}else{const r=E_e(t,f);e.layoutSize.set(f,r,!1)}}}function E_e(t,n){const e=n==="width"?"x":"y",o=t.config,f=t.getScaleComponent(e);if(f){const r=f.get("type"),a=f.get("range");if(ll(r)){const l=I2(o.view,n);return kp(a)||rh(l)?"step":l}else return YT(o.view,n)}else{if(t.hasProjection||t.mark==="arc")return YT(o.view,n);{const r=I2(o.view,n);return rh(r)?r.step:r}}}function cA(t,n,e){return hi(n,Object.assign({suffix:`by_${hi(t)}`},e??{}))}class Uv extends SH{constructor(n,e,o,f){super(n,"facet",e,o,f,n.resolve),this.child=j8(n.spec,this,this.getName("child"),void 0,f),this.children=[this.child],this.facet=this.initFacet(n.facet)}initFacet(n){if(!lx(n))return{facet:this.initFacetFieldDef(n,"facet")};const e=Xr(n),o={};for(const f of e){if(![Uh,Vh].includes(f)){Kr(u3(f,"facet"));break}const r=n[f];if(r.field===void 0){Kr(jT(r,f));break}o[f]=this.initFacetFieldDef(r,f)}return o}initFacetFieldDef(n,e){const o=i8(n,e);return o.header?o.header=ku(o.header):o.header===null&&(o.header=null),o}channelHasField(n){return!!this.facet[n]}fieldDef(n){return this.facet[n]}parseData(){this.component.data=N3(this),this.child.parseData()}parseLayoutSize(){z8(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),k_e(this)}assembleSelectionTopLevelSignals(n){return this.child.assembleSelectionTopLevelSignals(n)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(n){return this.child.assembleSelectionData(n)}getHeaderLayoutMixins(){var n,e,o;const f={};for(const r of dc)for(const a of A8){const l=this.component.layoutHeaders[r],c=l[a],{facetFieldDef:i}=l;if(i){const s=Rm("titleOrient",i.header,this.config,r);if(["right","bottom"].includes(s)){const u=S3(r,s);(n=f.titleAnchor)!==null&&n!==void 0||(f.titleAnchor={}),f.titleAnchor[u]="end"}}if(c?.[0]){const s=r==="row"?"height":"width",u=a==="header"?"headerBand":"footerBand";r!=="facet"&&!this.child.component.layoutSize.get(s)&&((e=f[u])!==null&&e!==void 0||(f[u]={}),f[u][r]=.5),l.title&&((o=f.offset)!==null&&o!==void 0||(f.offset={}),f.offset[r==="row"?"rowTitle":"columnTitle"]=10)}}return f}assembleDefaultLayout(){const{column:n,row:e}=this.facet,o=n?this.columnDistinctSignal():e?1:void 0;let f="all";return(!e&&this.component.resolve.scale.x==="independent"||!n&&this.component.resolve.scale.y==="independent")&&(f="none"),Object.assign(Object.assign(Object.assign({},this.getHeaderLayoutMixins()),o?{columns:o}:{}),{bounds:"full",align:f})}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof Uv))return{signal:`length(data('${this.getName("column_domain")}'))`}}assembleGroupStyle(){}assembleGroup(n){return this.parent&&this.parent instanceof Uv?Object.assign(Object.assign({},this.channelHasField("column")?{encode:{update:{columns:{field:hi(this.facet.column,{prefix:"distinct"})}}}}:{}),super.assembleGroup(n)):super.assembleGroup(n)}getCardinalityAggregateForChild(){const n=[],e=[],o=[];if(this.child instanceof Uv){if(this.child.channelHasField("column")){const f=hi(this.child.facet.column);n.push(f),e.push("distinct"),o.push(`distinct_${f}`)}}else for(const f of gh){const r=this.child.component.scales[f];if(r&&!r.merged){const a=r.get("type"),l=r.get("range");if(ll(a)&&kp(l)){const c=C3(this.child,f),i=P8(c);i?(n.push(i),e.push("distinct"),o.push(`distinct_${i}`)):Kr(PE(f))}}}return{fields:n,ops:e,as:o}}assembleFacet(){const{name:n,data:e}=this.component.data.facetRoot,{row:o,column:f}=this.facet,{fields:r,ops:a,as:l}=this.getCardinalityAggregateForChild(),c=[];for(const s of dc){const u=this.facet[s];if(u){c.push(hi(u));const{bin:d,sort:h}=u;if(Bo(d)&&c.push(hi(u,{binSuffix:"end"})),$f(h)){const{field:m,op:g=p3}=h,p=cA(u,h);o&&f?(r.push(p),a.push("max"),l.push(p)):(r.push(m),a.push(g),l.push(p))}else if(Ir(h)){const m=zm(u,s);r.push(m),a.push("max"),l.push(m)}}}const i=!!o&&!!f;return Object.assign({name:n,data:e,groupby:c},i||r.length>0?{aggregate:Object.assign(Object.assign({},i?{cross:i}:{}),r.length?{fields:r,ops:a,as:l}:{})}:{})}facetSortFields(n){const{facet:e}=this,o=e[n];return o?$f(o.sort)?[cA(o,o.sort,{expr:"datum"})]:Ir(o.sort)?[zm(o,n,{expr:"datum"})]:[hi(o,{expr:"datum"})]:[]}facetSortOrder(n){const{facet:e}=this,o=e[n];if(o){const{sort:f}=o;return[($f(f)?f.order:!Ir(f)&&f)||"ascending"]}return[]}assembleLabelTitle(){var n;const{facet:e,config:o}=this;if(e.facet)return iA(e.facet,"facet",o);const f={row:["top","bottom"],column:["left","right"]};for(const r of T8)if(e[r]){const a=Rm("labelOrient",(n=e[r])===null||n===void 0?void 0:n.header,o,r);if(f[r].includes(a))return iA(e[r],r,o)}}assembleMarks(){const{child:n}=this,e=this.component.data.facetRoot,o=b_e(e),f=n.assembleGroupEncodeEntry(!1),r=this.assembleLabelTitle()||n.assembleTitle(),a=n.assembleGroupStyle();return[Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:this.getName("cell"),type:"group"},r?{title:r}:{}),a?{style:a}:{}),{from:{facet:this.assembleFacet()},sort:{field:dc.map(c=>this.facetSortFields(c)).flat(),order:dc.map(c=>this.facetSortOrder(c)).flat()}}),o.length>0?{data:o}:{}),f?{encode:{update:f}}:{}),n.assembleGroup(Lye(this,[])))]}getMapping(){return this.facet}}function C_e(t,n){const{row:e,column:o}=n;if(e&&o){let f=null;for(const r of[e,o])if($f(r.sort)){const{field:a,op:l=p3}=r.sort;t=f=new tg(t,{joinaggregate:[{op:l,field:a,as:cA(r,r.sort,{forAs:!0})}],groupby:[hi(r)]})}return f}return null}function OH(t,n){var e,o,f,r;for(const a of n){const l=a.data;if(t.name&&a.hasName()&&t.name!==a.dataName)continue;const c=(e=t.format)===null||e===void 0?void 0:e.mesh,i=(o=l.format)===null||o===void 0?void 0:o.feature;if(c&&i)continue;const s=(f=t.format)===null||f===void 0?void 0:f.feature;if((s||i)&&s!==i)continue;const u=(r=l.format)===null||r===void 0?void 0:r.mesh;if(!((c||u)&&c!==u)){if(gy(t)&&gy(l)){if(Ff(t.values,l.values))return a}else if(Pm(t)&&Pm(l)){if(t.url===l.url)return a}else if(kq(t)&&t.name===a.dataName)return a}}return null}function O_e(t,n){if(t.data||!t.parent){if(t.data===null){const o=new B0({values:[]});return n.push(o),o}const e=OH(t.data,n);if(e)return Gd(t.data)||(e.data.format=wU({},t.data.format,e.data.format)),!e.hasName()&&t.data.name&&(e.dataName=t.data.name),e;{const o=new B0(t.data);return n.push(o),o}}else return t.parent.component.data.facetRoot?t.parent.component.data.facetRoot:t.parent.component.data.main}function L_e(t,n,e){var o,f;let r=0;for(const a of n.transforms){let l,c;if(hye(a))c=t=new Im(t,a),l="derived";else if(v8(a)){const i=mbe(a);c=t=(o=Nl.makeWithAncestors(t,{},i,e))!==null&&o!==void 0?o:t,t=new r1(t,n,a.filter)}else if(vq(a))c=t=Wf.makeFromTransform(t,a,n),l="number";else if(pye(a))l="date",e.getWithExplicit(a.field).value===void 0&&(t=new Nl(t,{[a.field]:l}),e.set(a.field,l,!1)),c=t=Gf.makeFromTransform(t,a);else if(gye(a))c=t=sf.makeFromTransform(t,a),l="number",k8(n)&&(t=new cp(t));else if(mq(a))c=t=xy.make(t,n,a,r++),l="derived";else if(uye(a))c=t=new a1(t,a),l="number";else if(cye(a))c=t=new tg(t,a),l="number";else if(mye(a))c=t=Hh.makeFromTransform(t,a),l="derived";else if(vye(a))c=t=new P3(t,a),l="derived";else if(fye(a))c=t=new L3(t,a),l="derived";else if(rye(a))c=t=new R3(t,a),l="derived";else if(lye(a))t=new F3(t,a);else if(dye(a))c=t=v0.makeFromTransform(t,a),l="derived";else if(iye(a))c=t=new O3(t,a),l="derived";else if(aye(a))c=t=new I3(t,a),l="derived";else if(oye(a))c=t=new z3(t,a),l="derived";else if(sye(a))c=t=new D3(t,a),l="derived";else{Kr(Rge(a));continue}if(c&&l!==void 0)for(const i of(f=c.producedFields())!==null&&f!==void 0?f:[])e.set(i,l,!1)}return t}function N3(t){var n,e,o,f,r,a,l,c,i,s;let u=O_e(t,t.component.data.sources);const{outputNodes:d,outputNodeRefCounts:h}=t.component.data,m=t.data,p=!(m&&(Gd(m)||Pm(m)||gy(m)))&&t.parent?t.parent.component.data.ancestorParse.clone():new Eye;Gd(m)?(Tq(m)?u=new px(u,m.sequence):y8(m)&&(u=new dx(u,m.graticule)),p.parseNothing=!0):((n=m?.format)===null||n===void 0?void 0:n.parse)===null&&(p.parseNothing=!0),u=(e=Nl.makeExplicit(u,t,p))!==null&&e!==void 0?e:u,u=new cp(u);const v=t.parent&&o1(t.parent);(Is(t)||lf(t))&&v&&(u=(o=Wf.makeFromEncoding(u,t))!==null&&o!==void 0?o:u),t.transforms.length>0&&(u=L_e(u,t,p));const y=ybe(t),x=vbe(t);u=(f=Nl.makeWithAncestors(u,{},Object.assign(Object.assign({},y),x),p))!==null&&f!==void 0?f:u,Is(t)&&(u=om.parseAll(u,t),u=yy.parseAll(u,t)),(Is(t)||lf(t))&&(v||(u=(r=Wf.makeFromEncoding(u,t))!==null&&r!==void 0?r:u),u=(a=Gf.makeFromEncoding(u,t))!==null&&a!==void 0?a:u,u=Im.parseAllForSortIndex(u,t));const w=t.getDataName(Fo.Raw),k=new fu(u,w,Fo.Raw,h);if(d[w]=k,u=k,Is(t)){const S=sf.makeFromEncoding(u,t);S&&(u=S,k8(t)&&(u=new cp(u))),u=(l=v0.makeFromEncoding(u,t))!==null&&l!==void 0?l:u,u=(c=Hh.makeFromEncoding(u,t))!==null&&c!==void 0?c:u}Is(t)&&(u=(i=vy.make(u,t))!==null&&i!==void 0?i:u);const b=t.getDataName(Fo.Main),T=new fu(u,b,Fo.Main,h);d[b]=T,u=T,Is(t)&&hxe(t,T);let _=null;if(lf(t)){const S=t.getName("facet");u=(s=C_e(u,t.facet))!==null&&s!==void 0?s:u,_=new i1(u,t,S,T.getSource()),d[S]=_}return Object.assign(Object.assign({},t.component.data),{outputNodes:d,outputNodeRefCounts:h,raw:k,main:T,facetRoot:_,ancestorParse:p})}class P_e extends I8{constructor(n,e,o,f){var r,a,l,c;super(n,"concat",e,o,f,n.resolve),(((a=(r=n.resolve)===null||r===void 0?void 0:r.axis)===null||a===void 0?void 0:a.x)==="shared"||((c=(l=n.resolve)===null||l===void 0?void 0:l.axis)===null||c===void 0?void 0:c.y)==="shared")&&Kr(Dge),this.children=this.getChildren(n).map((i,s)=>j8(i,this,this.getName(`concat_${s}`),void 0,f))}parseData(){this.component.data=N3(this);for(const n of this.children)n.parseData()}parseSelections(){this.component.selection={};for(const n of this.children){n.parseSelections();for(const e of Xr(n.component.selection))this.component.selection[e]=n.component.selection[e]}}parseMarkGroup(){for(const n of this.children)n.parseMarkGroup()}parseAxesAndHeaders(){for(const n of this.children)n.parseAxesAndHeaders()}getChildren(n){return w3(n)?n.vconcat:g8(n)?n.hconcat:n.concat}parseLayoutSize(){M_e(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(n){return this.children.reduce((e,o)=>o.assembleSelectionTopLevelSignals(e),n)}assembleSignals(){return this.children.forEach(n=>n.assembleSignals()),[]}assembleLayoutSignals(){const n=M8(this);for(const e of this.children)n.push(...e.assembleLayoutSignals());return n}assembleSelectionData(n){return this.children.reduce((e,o)=>o.assembleSelectionData(e),n)}assembleMarks(){return this.children.map(n=>{const e=n.assembleTitle(),o=n.assembleGroupStyle(),f=n.assembleGroupEncodeEntry(!1);return Object.assign(Object.assign(Object.assign(Object.assign({type:"group",name:n.getName("group")},e?{title:e}:{}),o?{style:o}:{}),f?{encode:{update:f}}:{}),n.assembleGroup())})}assembleGroupStyle(){}assembleDefaultLayout(){const n=this.layout.columns;return Object.assign(Object.assign({},n!=null?{columns:n}:{}),{bounds:"full",align:"each"})}}function D_e(t){return t===!1||t===null}const I_e=Object.assign(Object.assign({disable:1,gridScale:1,scale:1},UV),{labelExpr:1,encode:1}),LH=Xr(I_e);class R8 extends rd{constructor(n={},e={},o=!1){super(),this.explicit=n,this.implicit=e,this.mainExtracted=o}clone(){return new R8(ha(this.explicit),ha(this.implicit),this.mainExtracted)}hasAxisPart(n){return n==="axis"?!0:n==="grid"||n==="title"?!!this.get(n):!D_e(this.get(n))}hasOrientSignalRef(){return Vi(this.explicit.orient)}}function z_e(t,n,e){var o;const{encoding:f,config:r}=t,a=(o=Ws(f[n]))!==null&&o!==void 0?o:Ws(f[ph(n)]),l=t.axis(n)||{},{format:c,formatType:i}=l;if(R0(i))return Object.assign({text:rf({fieldOrDatumDef:a,field:"datum.value",format:c,formatType:i,config:r})},e);if(c===void 0&&i===void 0&&r.customFormatTypes){if(Cm(a)==="quantitative"){if(Om(a)&&a.stack==="normalize"&&r.normalizedNumberFormatType)return Object.assign({text:rf({fieldOrDatumDef:a,field:"datum.value",format:r.normalizedNumberFormat,formatType:r.normalizedNumberFormatType,config:r})},e);if(r.numberFormatType)return Object.assign({text:rf({fieldOrDatumDef:a,field:"datum.value",format:r.numberFormat,formatType:r.numberFormatType,config:r})},e)}if(Cm(a)==="temporal"&&r.timeFormatType&&ti(a)&&!a.timeUnit)return Object.assign({text:rf({fieldOrDatumDef:a,field:"datum.value",format:r.timeFormat,formatType:r.timeFormatType,config:r})},e)}return e}function R_e(t){return gh.reduce((n,e)=>(t.component.scales[e]&&(n[e]=[q_e(e,t)]),n),{})}const F_e={bottom:"top",top:"bottom",left:"right",right:"left"};function N_e(t){var n;const{axes:e,resolve:o}=t.component,f={top:0,bottom:0,right:0,left:0};for(const r of t.children){r.parseAxesAndHeaders();for(const a of Xr(r.component.axes))o.axis[a]=S8(t.component.resolve,a),o.axis[a]==="shared"&&(e[a]=B_e(e[a],r.component.axes[a]),e[a]||(o.axis[a]="independent",delete e[a]))}for(const r of gh){for(const a of t.children)if(!!a.component.axes[r]){if(o.axis[r]==="independent"){e[r]=((n=e[r])!==null&&n!==void 0?n:[]).concat(a.component.axes[r]);for(const l of a.component.axes[r]){const{value:c,explicit:i}=l.getWithExplicit("orient");if(!Vi(c)){if(f[c]>0&&!i){const s=F_e[c];f[c]>f[s]&&l.set("orient",s,!1)}f[c]++}}}delete a.component.axes[r]}if(o.axis[r]==="independent"&&e[r]&&e[r].length>1)for(const a of e[r])!!a.get("grid")&&!a.explicit.grid&&(a.implicit.grid=!1)}}function B_e(t,n){if(t){if(t.length!==n.length)return;const e=t.length;for(let o=0;oe.clone());return t}function j_e(t,n){for(const e of LH){const o=op(t.getWithExplicit(e),n.getWithExplicit(e),e,"axis",(f,r)=>{switch(e){case"title":return XU(f,r);case"gridScale":return{explicit:f.explicit,value:Rs(f.value,r.value)}}return T3(f,r,e,"axis")});t.setWithExplicit(e,o)}return t}function U_e(t,n,e,o,f){if(n==="disable")return e!==void 0;switch(e=e||{},n){case"titleAngle":case"labelAngle":return t===(Vi(e.labelAngle)?e.labelAngle:dy(e.labelAngle));case"values":return!!e.values;case"encode":return!!e.encoding||!!e.labelAngle;case"title":if(t===Zq(o,f))return!0}return t===e[n]}const V_e=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function q_e(t,n){var e,o,f;let r=n.axis(t);const a=new R8,l=Ws(n.encoding[t]),{mark:c,config:i}=n,s=r?.orient||((e=i[t==="x"?"axisX":"axisY"])===null||e===void 0?void 0:e.orient)||((o=i.axis)===null||o===void 0?void 0:o.orient)||wxe(t),u=n.getScaleComponent(t).get("type"),d=gxe(t,u,s,n.config),h=r!==void 0?!r:nA("disable",i.style,r?.style,d).configValue;if(a.set("disable",h,r!==void 0),h)return a;r=r||{};const m=xxe(l,r,t,i.style,d),g={fieldOrDatumDef:l,axis:r,channel:t,model:n,scaleType:u,orient:s,labelAngle:m,mark:c,config:i};for(const y of LH){const x=y in RP?RP[y](g):hP(y)?r[y]:void 0,w=x!==void 0,k=U_e(x,y,r,n,t);if(w&&k)a.set(y,x,k);else{const{configValue:b=void 0,configFrom:T=void 0}=hP(y)&&y!=="values"?nA(y,i.style,r.style,d):{},_=b!==void 0;w&&!_?a.set(y,x,k):(T!=="vgAxisConfig"||V_e.has(y)&&_||fx(b)||Vi(b))&&a.set(y,b,!1)}}const p=(f=r.encoding)!==null&&f!==void 0?f:{},v=jV.reduce((y,x)=>{var w;if(!a.hasAxisPart(x))return y;const k=nH((w=p[x])!==null&&w!==void 0?w:{},n),b=x==="labels"?z_e(n,t,k):k;return b!==void 0&&!_o(b)&&(y[x]={update:b}),y},{});return _o(v)||a.set("encode",v,!!r.encoding||r.labelAngle!==void 0),a}function H_e({encoding:t,size:n}){for(const e of gh){const o=Fu(e);rh(n[o])&&Bf(t[e])&&(delete n[o],Kr(eV(o)))}return n}function $_e(t,n,e){const o=ku(t),f=oo("orient",o,e);if(o.orient=X_e(o.type,n,f),f!==void 0&&f!==o.orient&&Kr(eme(o.orient,f)),o.type==="bar"&&o.orient){const l=oo("cornerRadiusEnd",o,e);if(l!==void 0){const c=o.orient==="horizontal"&&n.x2||o.orient==="vertical"&&n.y2?["cornerRadius"]:x1e[o.orient];for(const i of c)o[i]=l;o.cornerRadiusEnd!==void 0&&delete o.cornerRadiusEnd}}return oo("opacity",o,e)===void 0&&(o.opacity=W_e(o.type,n)),oo("cursor",o,e)===void 0&&(o.cursor=G_e(o,n,e)),o}function G_e(t,n,e){return n.href||t.href||oo("href",t,e)?"pointer":t.cursor}function W_e(t,n){if(Fa([d3,WE,YE,XE],t)&&!a8(n))return .7}function Y_e(t,n,{graticule:e}){if(e)return!1;const o=D0("filled",t,n),f=t.type;return Rs(o,f!==d3&&f!==h3&&f!==S2)}function X_e(t,n,e){switch(t){case d3:case YE:case XE:case yV:case u1e:case l1e:return}const{x:o,y:f,x2:r,y2:a}=n;switch(t){case f3:if(ti(o)&&(xl(o.bin)||ti(f)&&f.aggregate&&!o.aggregate))return"vertical";if(ti(f)&&(xl(f.bin)||ti(o)&&o.aggregate&&!f.aggregate))return"horizontal";if(a||r){if(e)return e;if(!r)return(ti(o)&&o.type===I0&&!Bo(o.bin)||$T(o))&&ti(f)&&xl(f.bin)?"horizontal":"vertical";if(!a)return(ti(f)&&f.type===I0&&!Bo(f.bin)||$T(f))&&ti(o)&&xl(o.bin)?"vertical":"horizontal"}case S2:if(r&&!(ti(o)&&xl(o.bin))&&a&&!(ti(f)&&xl(f.bin)))return;case c3:if(a)return ti(f)&&xl(f.bin)?"horizontal":"vertical";if(r)return ti(o)&&xl(o.bin)?"vertical":"horizontal";if(t===S2){if(o&&!f)return"vertical";if(f&&!o)return"horizontal"}case h3:case WE:{const l=Bf(o),c=Bf(f);if(e)return e;if(l&&!c)return t!=="tick"?"horizontal":"vertical";if(!l&&c)return t!=="tick"?"vertical":"horizontal";if(l&&c){const i=o,s=f,u=i.type===Sm,d=s.type===Sm;return u&&!d?t!=="tick"?"vertical":"horizontal":!u&&d?t!=="tick"?"horizontal":"vertical":!i.aggregate&&s.aggregate?t!=="tick"?"vertical":"horizontal":i.aggregate&&!s.aggregate&&t!=="tick"?"horizontal":"vertical"}else return}}return"vertical"}const Z_e={vgMark:"arc",encodeEntry:t=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})),Fl("x",t,{defaultPos:"mid"})),Fl("y",t,{defaultPos:"mid"})),lp(t,"radius")),lp(t,"theta"))},J_e={vgMark:"area",encodeEntry:t=>Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"})),z2("x",t,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:t.markDef.orient==="horizontal"})),z2("y",t,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:t.markDef.orient==="vertical"})),w8(t))},K_e={vgMark:"rect",encodeEntry:t=>Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),lp(t,"x")),lp(t,"y"))},Q_e={vgMark:"shape",encodeEntry:t=>Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})),postEncodingTransform:t=>{const{encoding:n}=t,e=n.shape;return[Object.assign({type:"geoshape",projection:t.projectionName()},e&&ti(e)&&e.type===t1?{field:hi(e,{expr:"datum"})}:{})]}},e2e={vgMark:"image",encodeEntry:t=>Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"})),lp(t,"x")),lp(t,"y")),b8(t,"url"))},t2e={vgMark:"line",encodeEntry:t=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})),Fl("x",t,{defaultPos:"mid"})),Fl("y",t,{defaultPos:"mid"})),nl("size",t,{vgChannel:"strokeWidth"})),w8(t))},n2e={vgMark:"trail",encodeEntry:t=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"})),Fl("x",t,{defaultPos:"mid"})),Fl("y",t,{defaultPos:"mid"})),nl("size",t)),w8(t))};function F8(t,n){const{config:e}=t;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"})),Fl("x",t,{defaultPos:"mid"})),Fl("y",t,{defaultPos:"mid"})),nl("size",t)),nl("angle",t)),r2e(t,e,n))}function r2e(t,n,e){return e?{shape:{value:e}}:nl("shape",t)}const i2e={vgMark:"symbol",encodeEntry:t=>F8(t)},a2e={vgMark:"symbol",encodeEntry:t=>F8(t,"circle")},o2e={vgMark:"symbol",encodeEntry:t=>F8(t,"square")},s2e={vgMark:"rect",encodeEntry:t=>Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),lp(t,"x")),lp(t,"y"))},l2e={vgMark:"rule",encodeEntry:t=>{const{markDef:n}=t,e=n.orient;return!t.encoding.x&&!t.encoding.y&&!t.encoding.latitude&&!t.encoding.longitude?{}:Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),z2("x",t,{defaultPos:e==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:e!=="vertical"})),z2("y",t,{defaultPos:e==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:e!=="horizontal"})),nl("size",t,{vgChannel:"strokeWidth"}))}},u2e={vgMark:"text",encodeEntry:t=>{const{config:n,encoding:e}=t;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"})),Fl("x",t,{defaultPos:"mid"})),Fl("y",t,{defaultPos:"mid"})),b8(t)),nl("size",t,{vgChannel:"fontSize"})),nl("angle",t)),PP("align",c2e(t.markDef,e,n))),PP("baseline",f2e(t.markDef,e,n))),Fl("radius",t,{defaultPos:null})),Fl("theta",t,{defaultPos:null}))}};function c2e(t,n,e){if(oo("align",t,e)===void 0)return"center"}function f2e(t,n,e){if(oo("baseline",t,e)===void 0)return"middle"}const h2e={vgMark:"rect",encodeEntry:t=>{const{config:n,markDef:e}=t,o=e.orient,f=o==="horizontal"?"width":"height",r=o==="horizontal"?"height":"width";return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ac(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),Fl("x",t,{defaultPos:"mid",vgChannel:"xc"})),Fl("y",t,{defaultPos:"mid",vgChannel:"yc"})),nl("size",t,{defaultValue:d2e(t),vgChannel:f})),{[r]:Ho(oo("thickness",e,n))})}};function d2e(t){var n;const{config:e,markDef:o}=t,{orient:f}=o,r=f==="horizontal"?"width":"height",a=t.getScaleComponent(f==="horizontal"?"x":"y"),l=(n=oo("size",o,e,{vgChannel:r}))!==null&&n!==void 0?n:e.tick.bandSize;if(l!==void 0)return l;{const c=a?a.get("range"):void 0;return c&&kp(c)&&wo(c.step)?c.step*3/4:D2(e.view,r)*3/4}}const Ob={arc:Z_e,area:J_e,bar:K_e,circle:a2e,geoshape:Q_e,image:e2e,line:t2e,point:i2e,rect:s2e,rule:l2e,square:o2e,text:u2e,tick:h2e,trail:n2e};function p2e(t){if(Fa([h3,c3,c1e],t.mark)){const n=$V(t.mark,t.encoding);if(n.length>0)return g2e(t,n)}else if(t.mark===f3){const n=BT.some(e=>oo(e,t.markDef,t.config));if(t.stack&&!t.fieldDef("size")&&n)return m2e(t)}return N8(t)}const KP="faceted_path_";function g2e(t,n){return[{name:t.getName("pathgroup"),type:"group",from:{facet:{name:KP+t.requestDataName(Fo.Main),data:t.requestDataName(Fo.Main),groupby:n}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:N8(t,{fromPrefix:KP})}]}const QP="stack_group_";function m2e(t){var n;const[e]=N8(t,{fromPrefix:QP}),o=t.scaleName(t.stack.fieldChannel),f=(s={})=>t.vgField(t.stack.fieldChannel,s),r=(s,u)=>{const d=[f({prefix:"min",suffix:"start",expr:u}),f({prefix:"max",suffix:"start",expr:u}),f({prefix:"min",suffix:"end",expr:u}),f({prefix:"max",suffix:"end",expr:u})];return`${s}(${d.map(h=>`scale('${o}',${h})`).join(",")})`};let a,l;t.stack.fieldChannel==="x"?(a=Object.assign(Object.assign({},Tm(e.encode.update,["y","yc","y2","height",...BT])),{x:{signal:r("min","datum")},x2:{signal:r("max","datum")},clip:{value:!0}}),l={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},e.encode.update=Object.assign(Object.assign({},Eu(e.encode.update,["y","yc","y2"])),{height:{field:{group:"height"}}})):(a=Object.assign(Object.assign({},Tm(e.encode.update,["x","xc","x2","width"])),{y:{signal:r("min","datum")},y2:{signal:r("max","datum")},clip:{value:!0}}),l={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},e.encode.update=Object.assign(Object.assign({},Eu(e.encode.update,["x","xc","x2"])),{width:{field:{group:"width"}}}));for(const s of BT){const u=D0(s,t.markDef,t.config);e.encode.update[s]?(a[s]=e.encode.update[s],delete e.encode.update[s]):u&&(a[s]=Ho(u)),u&&(e.encode.update[s]={value:0})}const c=[];if(((n=t.stack.groupbyChannels)===null||n===void 0?void 0:n.length)>0)for(const s of t.stack.groupbyChannels){const u=t.fieldDef(s),d=hi(u);d&&c.push(d),(u?.bin||u?.timeUnit)&&c.push(hi(u,{binSuffix:"end"}))}return a=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((s,u)=>{if(e.encode.update[u])return Object.assign(Object.assign({},s),{[u]:e.encode.update[u]});{const d=D0(u,t.markDef,t.config);return d!==void 0?Object.assign(Object.assign({},s),{[u]:Ho(d)}):s}},a),a.stroke&&(a.strokeForeground={value:!0},a.strokeOffset={value:0}),[{type:"group",from:{facet:{data:t.requestDataName(Fo.Main),name:QP+t.requestDataName(Fo.Main),groupby:c,aggregate:{fields:[f({suffix:"start"}),f({suffix:"start"}),f({suffix:"end"}),f({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:a},marks:[{type:"group",encode:{update:l},marks:[e]}]}]}function v2e(t){var n;const{encoding:e,stack:o,mark:f,markDef:r,config:a}=t,l=e.order;if(!(!Ir(l)&&hf(l)&&FT(l.value)||!l&&FT(oo("order",r,a)))){if((Ir(l)||ti(l))&&!o)return GU(l,{expr:"datum"});if(Tp(f)){const c=r.orient==="horizontal"?"y":"x",i=e[c];if(ti(i)){const s=i.sort;if(Ir(s))return{field:hi(i,{prefix:c,suffix:"sort_index",expr:"datum"})};if($f(s))return{field:hi({aggregate:a8(t.encoding)?s.op:void 0,field:s.field},{expr:"datum"})};if(EV(s)){const u=t.fieldDef(s.encoding);return{field:hi(u,{expr:"datum"}),order:s.order}}else return s===null?void 0:{field:hi(i,{binSuffix:!((n=t.stack)===null||n===void 0)&&n.impute?"mid":void 0,expr:"datum"})}}return}}}function N8(t,n={fromPrefix:""}){const{mark:e,markDef:o,encoding:f,config:r}=t,a=Rs(o.clip,y2e(t),x2e(t)),l=HU(o),c=f.key,i=v2e(t),s=b2e(t),u=oo("aria",o,r),d=Ob[e].postEncodingTransform?Ob[e].postEncodingTransform(t):null;return[Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:t.getName("marks"),type:Ob[e].vgMark},a?{clip:!0}:{}),l?{style:l}:{}),c?{key:c.field}:{}),i?{sort:i}:{}),s||{}),u===!1?{aria:u}:{}),{from:{data:n.fromPrefix+t.requestDataName(Fo.Main)},encode:{update:Ob[e].encodeEntry(t)}}),d?{transform:d}:{})]}function y2e(t){const n=t.getScaleComponent("x"),e=t.getScaleComponent("y");return n?.get("selectionExtent")||e?.get("selectionExtent")?!0:void 0}function x2e(t){const n=t.component.projection;return n&&!n.isFit?!0:void 0}function b2e(t){if(!t.component.selection)return null;const n=Xr(t.component.selection).length;let e=n,o=t.parent;for(;o&&e===0;)e=Xr(o.component.selection).length,o=o.parent;return e?{interactive:n>0||!!t.encoding.tooltip}:null}class PH extends SH{constructor(n,e,o,f={},r){var a;super(n,"unit",e,o,r,void 0,gP(n)?n.view:void 0),this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection=[],this.children=[];const l=eh(n.mark)?Object.assign({},n.mark):{type:n.mark},c=l.type;l.filled===void 0&&(l.filled=Y_e(l,r,{graticule:n.data&&y8(n.data)}));const i=this.encoding=Z1e(n.encoding||{},c,l.filled,r);this.markDef=$_e(l,i,r),this.size=H_e({encoding:i,size:gP(n)?Object.assign(Object.assign(Object.assign({},f),n.width?{width:n.width}:{}),n.height?{height:n.height}:{}):f}),this.stack=hq(c,i),this.specifiedScales=this.initScales(c,i),this.specifiedAxes=this.initAxes(i),this.specifiedLegends=this.initLegends(i),this.specifiedProjection=n.projection,this.selection=((a=n.params)!==null&&a!==void 0?a:[]).filter(s=>d8(s))}get hasProjection(){const{encoding:n}=this,e=this.mark===xV,o=n&&G0e.some(f=>la(n[f]));return e||o}scaleDomain(n){const e=this.specifiedScales[n];return e?e.domain:void 0}axis(n){return this.specifiedAxes[n]}legend(n){return this.specifiedLegends[n]}initScales(n,e){return s3.reduce((o,f)=>{var r;const a=Ws(e[f]);return a&&(o[f]=this.initScale((r=a.scale)!==null&&r!==void 0?r:{})),o},{})}initScale(n){const{domain:e,range:o}=n,f=ku(n);return Ir(e)&&(f.domain=e.map(Xu)),Ir(o)&&(f.range=o.map(Xu)),f}initAxes(n){return gh.reduce((e,o)=>{const f=n[o];if(la(f)||o===cs&&la(n.x2)||o===ol&&la(n.y2)){const r=la(f)?f.axis:void 0;e[o]=r&&this.initAxis(Object.assign({},r))}return e},{})}initAxis(n){const e=Xr(n),o={};for(const f of e){const r=n[f];o[f]=fx(r)?qU(r):Xu(r)}return o}initLegends(n){return nge.reduce((e,o)=>{const f=Ws(n[o]);if(f&&ige(o)){const r=f.legend;e[o]=r&&ku(r)}return e},{})}parseData(){this.component.data=N3(this)}parseLayoutSize(){S_e(this)}parseSelections(){this.component.selection=fxe(this,this.selection)}parseMarkGroup(){this.component.mark=p2e(this)}parseAxesAndHeaders(){this.component.axes=R_e(this)}assembleSelectionTopLevelSignals(n){return Pye(this,n)}assembleSignals(){return[...Wq(this),...Oye(this,[])]}assembleSelectionData(n){return Dye(this,n)}assembleLayout(){return null}assembleLayoutSignals(){return M8(this)}assembleMarks(){var n;let e=(n=this.component.mark)!==null&&n!==void 0?n:[];return(!this.parent||!o1(this.parent))&&(e=Mq(this,e)),e.map(this.correctDataNames)}assembleGroupStyle(){const{style:n}=this.view||{};if(n!==void 0)return n;if(this.encoding.x||this.encoding.y)return"cell"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(n){return m0(this.encoding,n)}fieldDef(n){const e=this.encoding[n];return th(e)}typedFieldDef(n){const e=this.fieldDef(n);return wc(e)?e:null}}class B8 extends I8{constructor(n,e,o,f,r){super(n,"layer",e,o,r,n.resolve,n.view);const a=Object.assign(Object.assign(Object.assign({},f),n.width?{width:n.width}:{}),n.height?{height:n.height}:{});this.children=n.layer.map((l,c)=>{if(k3(l))return new B8(l,this,this.getName(`layer_${c}`),a,r);if(nd(l))return new PH(l,this,this.getName(`layer_${c}`),a,r);throw new Error(LE(l))})}parseData(){this.component.data=N3(this);for(const n of this.children)n.parseData()}parseLayoutSize(){A_e(this)}parseSelections(){this.component.selection={};for(const n of this.children){n.parseSelections();for(const e of Xr(n.component.selection))this.component.selection[e]=n.component.selection[e]}}parseMarkGroup(){for(const n of this.children)n.parseMarkGroup()}parseAxesAndHeaders(){N_e(this)}assembleSelectionTopLevelSignals(n){return this.children.reduce((e,o)=>o.assembleSelectionTopLevelSignals(e),n)}assembleSignals(){return this.children.reduce((n,e)=>n.concat(e.assembleSignals()),Wq(this))}assembleLayoutSignals(){return this.children.reduce((n,e)=>n.concat(e.assembleLayoutSignals()),M8(this))}assembleSelectionData(n){return this.children.reduce((e,o)=>o.assembleSelectionData(e),n)}assembleGroupStyle(){const n=new Set;for(const o of this.children)for(const f of ki(o.assembleGroupStyle()))n.add(f);const e=Array.from(n);return e.length>1?e:e.length===1?e[0]:void 0}assembleTitle(){let n=super.assembleTitle();if(n)return n;for(const e of this.children)if(n=e.assembleTitle(),n)return n}assembleLayout(){return null}assembleMarks(){return Iye(this,this.children.flatMap(n=>n.assembleMarks()))}assembleLegends(){return this.children.reduce((n,e)=>n.concat(e.assembleLegends()),cH(this))}}function j8(t,n,e,o,f){if(g3(t))return new Uv(t,n,e,f);if(k3(t))return new B8(t,n,e,o,f);if(nd(t))return new PH(t,n,e,o,f);if(_ve(t))return new P_e(t,n,e,f);throw new Error(LE(t))}var _2e=globalThis&&globalThis.__rest||function(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);f(h.name==="width"||h.name==="height")&&h.value!==void 0?(n[h.name]=+h.value,!1):!0);const{params:u}=n,d=_2e(n,["params"]);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({$schema:"https://vega.github.io/schema/vega/v5.json"},t.description?{description:t.description}:{}),d),l?{title:l}:{}),c?{style:c}:{}),i?{encode:{update:i}}:{}),{data:r}),a.length>0?{projections:a}:{}),t.assembleGroup([...s,...t.assembleSelectionTopLevelSignals([]),...sq(u)])),f?{config:f}:{}),o?{usermeta:o}:{})}const A2e=F0e.version;var M2e=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",version:A2e,compile:w2e,normalize:_q,deepEqual:Ff,duplicate:ha,never:_U,pick:Tm,omit:Eu,stringify:No,hash:Ba,isNullOrFalse:FT,contains:Fa,some:O0,every:yE,mergeDeep:wU,unique:Nf,isEqual:j0e,setEqual:kU,hasIntersection:xE,prefixGenerator:NT,fieldIntersection:bE,isEmpty:_o,keys:Xr,vals:ql,entries:ip,isBoolean:hy,varName:Xo,logicalExpr:Bv,deleteNestedProperty:T2,titleCase:ex,accessPathWithDatum:_E,flatAccessWithDatum:TU,replacePathInField:bc,replaceAll:L0,removePathFromField:wE,accessPathDepth:Am,getFirstDefined:Rs,uniqueId:MU,resetIdCounter:V0e,internalField:SU,isInternalField:EU,normalizeAngle:dy,isNumeric:e3});function DH(t){const[n,e]=/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(t).slice(1,3);return{library:n,version:e}}var S2e="vega-themes",E2e="2.10.0",C2e="Themes for stylized Vega and Vega-Lite visualizations.",O2e=["vega","vega-lite","themes","style"],L2e="BSD-3-Clause",P2e={name:"UW Interactive Data Lab",url:"https://idl.cs.washington.edu"},D2e=[{name:"Emily Gu",url:"https://github.com/emilygu"},{name:"Arvind Satyanarayan",url:"http://arvindsatya.com"},{name:"Jeffrey Heer",url:"https://idl.cs.washington.edu"},{name:"Dominik Moritz",url:"https://www.domoritz.de"}],I2e="build/vega-themes.js",z2e="build/vega-themes.module.js",R2e="build/vega-themes.min.js",F2e="build/vega-themes.min.js",N2e="build/vega-themes.module.d.ts",B2e={type:"git",url:"https://github.com/vega/vega-themes.git"},j2e=["src","build"],U2e={prebuild:"yarn clean",build:"rollup -c",clean:"rimraf build && rimraf examples/build","copy:data":"rsync -r node_modules/vega-datasets/data/* examples/data","copy:build":"rsync -r build/* examples/build","deploy:gh":"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples",preversion:"yarn lint",serve:"browser-sync start -s -f build examples --serveStatic examples",start:"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'",prepare:"beemo create-config",eslintbase:"beemo eslint .",format:"yarn eslintbase --fix",lint:"yarn eslintbase",release:"auto shipit"},V2e={"@auto-it/conventional-commits":"^10.32.2","@auto-it/first-time-contributor":"^10.32.2","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.0.6","rollup-plugin-ts":"^1.4.7",auto:"^10.32.2","browser-sync":"^2.27.7",concurrently:"^6.4.0","gh-pages":"^3.2.3",rollup:"^2.60.0","rollup-plugin-bundle-size":"^1.0.3","rollup-plugin-terser":"^7.0.2",typescript:"^4.4.4",vega:"^5.19.1","vega-lite":"^5.0.0","vega-lite-dev-config":"^0.20.0"},q2e={vega:"*","vega-lite":"*"},H2e={name:S2e,version:E2e,description:C2e,keywords:O2e,license:L2e,author:P2e,contributors:D2e,main:I2e,module:z2e,unpkg:R2e,jsdelivr:F2e,types:N2e,repository:B2e,files:j2e,scripts:U2e,devDependencies:V2e,peerDependencies:q2e};const jg="#fff",$2e="#888",G2e={background:"#333",title:{color:jg,subtitleColor:jg},style:{"guide-label":{fill:jg},"guide-title":{fill:jg}},axis:{domainColor:jg,gridColor:$2e,tickColor:jg}},qp="#4572a7",W2e={background:"#fff",arc:{fill:qp},area:{fill:qp},line:{stroke:qp,strokeWidth:2},path:{stroke:qp},rect:{fill:qp},shape:{stroke:qp},symbol:{fill:qp,strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}},Hp="#30a2da",j4="#cbcbcb",Y2e="#999",X2e="#333",eD="#f0f0f0",tD="#333",Z2e={arc:{fill:Hp},area:{fill:Hp},axis:{domainColor:j4,grid:!0,gridColor:j4,gridWidth:1,labelColor:Y2e,labelFontSize:10,titleColor:X2e,tickColor:j4,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisBand:{grid:!1},background:eD,group:{fill:eD},legend:{labelColor:tD,labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:tD,titleFontSize:14,titlePadding:10},line:{stroke:Hp,strokeWidth:2},path:{stroke:Hp,strokeWidth:.5},rect:{fill:Hp},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},point:{filled:!0,shape:"circle"},shape:{stroke:Hp},bar:{binSpacing:2,fill:Hp,stroke:null},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},$p="#000",J2e={group:{fill:"#e5e5e5"},arc:{fill:$p},area:{fill:$p},line:{stroke:$p},path:{stroke:$p},rect:{fill:$p},shape:{stroke:$p},symbol:{fill:$p,size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},K2e=22,Q2e="normal",nD="Benton Gothic, sans-serif",rD=11.5,ewe="normal",Gp="#82c6df",U4="Benton Gothic Bold, sans-serif",iD="normal",aD=13,K1={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]},twe={background:"#ffffff",title:{anchor:"start",color:"#000000",font:U4,fontSize:K2e,fontWeight:Q2e},arc:{fill:Gp},area:{fill:Gp},line:{stroke:Gp,strokeWidth:2},path:{stroke:Gp},rect:{fill:Gp},shape:{stroke:Gp},symbol:{fill:Gp,size:30},axis:{labelFont:nD,labelFontSize:rD,labelFontWeight:ewe,titleFont:U4,titleFontSize:aD,titleFontWeight:iD},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:nD,labelFontSize:rD,symbolType:"square",titleFont:U4,titleFontSize:aD,titleFontWeight:iD},range:{category:K1["category-6"],diverging:K1["fireandice-6"],heatmap:K1["fire-7"],ordinal:K1["fire-7"],ramp:K1["fire-7"]}},Wp="#ab5787",Lb="#979797",nwe={background:"#f9f9f9",arc:{fill:Wp},area:{fill:Wp},line:{stroke:Wp},path:{stroke:Wp},rect:{fill:Wp},shape:{stroke:Wp},symbol:{fill:Wp,size:30},axis:{domainColor:Lb,domainWidth:.5,gridWidth:.2,labelColor:Lb,tickColor:Lb,tickWidth:.2,titleColor:Lb},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},Yp="#3e5c69",rwe={background:"#fff",arc:{fill:Yp},area:{fill:Yp},line:{stroke:Yp},path:{stroke:Yp},rect:{fill:Yp},shape:{stroke:Yp},symbol:{fill:Yp},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},uc="#1696d2",oD="#000000",iwe="#FFFFFF",Pb="Lato",V4="Lato",awe="Lato",owe="#DEDDDD",swe=18,Q1={"main-colors":["#1696d2","#d2d2d2","#000000","#fdbf11","#ec008b","#55b748","#5c5859","#db2b27"],"shades-blue":["#CFE8F3","#A2D4EC","#73BFE2","#46ABDB","#1696D2","#12719E","#0A4C6A","#062635"],"shades-gray":["#F5F5F5","#ECECEC","#E3E3E3","#DCDBDB","#D2D2D2","#9D9D9D","#696969","#353535"],"shades-yellow":["#FFF2CF","#FCE39E","#FDD870","#FCCB41","#FDBF11","#E88E2D","#CA5800","#843215"],"shades-magenta":["#F5CBDF","#EB99C2","#E46AA7","#E54096","#EC008B","#AF1F6B","#761548","#351123"],"shades-green":["#DCEDD9","#BCDEB4","#98CF90","#78C26D","#55B748","#408941","#2C5C2D","#1A2E19"],"shades-black":["#D5D5D4","#ADABAC","#848081","#5C5859","#332D2F","#262223","#1A1717","#0E0C0D"],"shades-red":["#F8D5D4","#F1AAA9","#E9807D","#E25552","#DB2B27","#A4201D","#6E1614","#370B0A"],"one-group":["#1696d2","#000000"],"two-groups-cat-1":["#1696d2","#000000"],"two-groups-cat-2":["#1696d2","#fdbf11"],"two-groups-cat-3":["#1696d2","#db2b27"],"two-groups-seq":["#a2d4ec","#1696d2"],"three-groups-cat":["#1696d2","#fdbf11","#000000"],"three-groups-seq":["#a2d4ec","#1696d2","#0a4c6a"],"four-groups-cat-1":["#000000","#d2d2d2","#fdbf11","#1696d2"],"four-groups-cat-2":["#1696d2","#ec0008b","#fdbf11","#5c5859"],"four-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a"],"five-groups-cat-1":["#1696d2","#fdbf11","#d2d2d2","#ec008b","#000000"],"five-groups-cat-2":["#1696d2","#0a4c6a","#d2d2d2","#fdbf11","#332d2f"],"five-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a","#000000"],"six-groups-cat-1":["#1696d2","#ec008b","#fdbf11","#000000","#d2d2d2","#55b748"],"six-groups-cat-2":["#1696d2","#d2d2d2","#ec008b","#fdbf11","#332d2f","#0a4c6a"],"six-groups-seq":["#cfe8f3","#a2d4ec","#73bfe2","#46abdb","#1696d2","#12719e"],"diverging-colors":["#ca5800","#fdbf11","#fdd870","#fff2cf","#cfe8f3","#73bfe2","#1696d2","#0a4c6a"]},lwe={background:iwe,title:{anchor:"start",fontSize:swe,font:Pb},axisX:{domain:!0,domainColor:oD,domainWidth:1,grid:!1,labelFontSize:12,labelFont:V4,labelAngle:0,tickColor:oD,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:Pb},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:owe,gridWidth:1,labelFontSize:12,labelFont:V4,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:Pb,titleAngle:0,titleY:-10,titleX:18},legend:{labelFontSize:12,labelFont:V4,symbolSize:100,titleFontSize:12,titlePadding:10,titleFont:Pb,orient:"right",offset:10},view:{stroke:"transparent"},range:{category:Q1["six-groups-cat-1"],diverging:Q1["diverging-colors"],heatmap:Q1["diverging-colors"],ordinal:Q1["six-groups-seq"],ramp:Q1["shades-blue"]},area:{fill:uc},rect:{fill:uc},line:{color:uc,stroke:uc,strokeWidth:5},trail:{color:uc,stroke:uc,strokeWidth:0,size:1},path:{stroke:uc,strokeWidth:.5},point:{filled:!0},text:{font:awe,color:uc,fontSize:11,align:"center",fontWeight:400,size:11},style:{bar:{fill:uc,stroke:null}},arc:{fill:uc},shape:{stroke:uc},symbol:{fill:uc,size:30}},Xp="#3366CC",sD="#ccc",Db="Arial, sans-serif",uwe={arc:{fill:Xp},area:{fill:Xp},path:{stroke:Xp},rect:{fill:Xp},shape:{stroke:Xp},symbol:{stroke:Xp},circle:{fill:Xp},background:"#fff",padding:{top:10,right:10,bottom:10,left:10},style:{"guide-label":{font:Db,fontSize:12},"guide-title":{font:Db,fontSize:12},"group-title":{font:Db,fontSize:12}},title:{font:Db,fontSize:14,fontWeight:"bold",dy:-3,anchor:"start"},axis:{gridColor:sD,tickColor:sD,domain:!1,grid:!0},range:{category:["#4285F4","#DB4437","#F4B400","#0F9D58","#AB47BC","#00ACC1","#FF7043","#9E9D24","#5C6BC0","#F06292","#00796B","#C2185B"],heatmap:["#c6dafc","#5e97f6","#2a56c6"]}},U8=t=>t*(1/3+1),lD=U8(9),uD=U8(10),cD=U8(12),ev="Segoe UI",fD="wf_standard-font, helvetica, arial, sans-serif",hD="#252423",tv="#605E5C",dD="transparent",cwe="#C8C6C4",qc="#118DFF",fwe="#12239E",hwe="#E66C37",dwe="#6B007B",pwe="#E044A7",gwe="#744EC2",mwe="#D9B300",vwe="#D64550",IH=qc,zH="#DEEFFF",pD=[zH,IH],ywe=[zH,"#c7e4ff","#b0d9ff","#9aceff","#83c3ff","#6cb9ff","#55aeff","#3fa3ff","#2898ff",IH],xwe={view:{stroke:dD},background:dD,font:ev,header:{titleFont:fD,titleFontSize:cD,titleColor:hD,labelFont:ev,labelFontSize:uD,labelColor:tv},axis:{ticks:!1,grid:!1,domain:!1,labelColor:tv,labelFontSize:lD,titleFont:fD,titleColor:hD,titleFontSize:cD,titleFontWeight:"normal"},axisQuantitative:{tickCount:3,grid:!0,gridColor:cwe,gridDash:[1,5],labelFlush:!1},axisBand:{tickExtra:!0},axisX:{labelPadding:5},axisY:{labelPadding:10},bar:{fill:qc},line:{stroke:qc,strokeWidth:3,strokeCap:"round",strokeJoin:"round"},text:{font:ev,fontSize:lD,fill:tv},arc:{fill:qc},area:{fill:qc,line:!0,opacity:.6},path:{stroke:qc},rect:{fill:qc},point:{fill:qc,filled:!0,size:75},shape:{stroke:qc},symbol:{fill:qc,strokeWidth:1.5,size:50},legend:{titleFont:ev,titleFontWeight:"bold",titleColor:tv,labelFont:ev,labelFontSize:uD,labelColor:tv,symbolType:"circle",symbolSize:75},range:{category:[qc,fwe,hwe,dwe,pwe,gwe,mwe,vwe],diverging:pD,heatmap:pD,ordinal:ywe}},bwe=H2e.version;var _we=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",dark:G2e,excel:W2e,fivethirtyeight:Z2e,ggplot2:J2e,googlecharts:uwe,latimes:twe,powerbi:xwe,quartz:nwe,urbaninstitute:lwe,version:bwe,vox:rwe});/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */function wwe(t,n){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(e[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var f=0,o=Object.getOwnPropertySymbols(t);fn(bi(o)?o:gD(o,e))).join(", ")}]`;if(Ei(t)){let o="";const f=t,{title:r,image:a}=f,l=wwe(f,["title","image"]);r&&(o+=`

${n(r)}

`),a&&(o+=``);const c=Object.keys(l);if(c.length>0){o+="";for(const i of c){let s=l[i];s!==void 0&&(Ei(s)&&(s=gD(s,e)),o+=``)}o+="
${n(i)}:${n(s)}
"}return o||"{}"}return n(t)}function Twe(t){const n=[];return function(e,o){if(typeof o!="object"||o===null)return o;const f=n.indexOf(this)+1;return n.length=f,n.length>t?"[Object]":n.indexOf(o)>=0?"[Circular]":(n.push(o),o)}}function gD(t,n){return JSON.stringify(t,Twe(n))}var Awe=`#vg-tooltip-element { + visibility: hidden; + padding: 8px; + position: fixed; + z-index: 1000; + font-family: sans-serif; + font-size: 11px; + border-radius: 3px; + box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); + /* The default theme is the light theme. */ + background-color: rgba(255, 255, 255, 0.95); + border: 1px solid #d9d9d9; + color: black; +} +#vg-tooltip-element.visible { + visibility: visible; +} +#vg-tooltip-element h2 { + margin-top: 0; + margin-bottom: 10px; + font-size: 13px; +} +#vg-tooltip-element img { + max-width: 200px; + max-height: 200px; +} +#vg-tooltip-element table { + border-spacing: 0; +} +#vg-tooltip-element table tr { + border: none; +} +#vg-tooltip-element table tr td { + overflow: hidden; + text-overflow: ellipsis; + padding-top: 2px; + padding-bottom: 2px; +} +#vg-tooltip-element table tr td.key { + color: #808080; + max-width: 150px; + text-align: right; + padding-right: 4px; +} +#vg-tooltip-element table tr td.value { + display: block; + max-width: 300px; + max-height: 7em; + text-align: left; +} +#vg-tooltip-element.dark-theme { + background-color: rgba(32, 32, 32, 0.9); + border: 1px solid #f5f5f5; + color: white; +} +#vg-tooltip-element.dark-theme td.key { + color: #bfbfbf; +} +`;const RH="vg-tooltip-element",Mwe={offsetX:10,offsetY:10,id:RH,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:Swe,maxDepth:2,formatTooltip:kwe};function Swe(t){return String(t).replace(/&/g,"&").replace(/window.innerWidth&&(f=+t.clientX-e-n.width);let r=t.clientY+o;return r+n.height>window.innerHeight&&(r=+t.clientY-o-n.height),{x:f,y:r}}class Owe{constructor(n){this.options=Object.assign(Object.assign({},Mwe),n);const e=this.options.id;if(this.el=null,this.call=this.tooltipHandler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){const o=document.createElement("style");o.setAttribute("id",this.options.styleId),o.innerHTML=Ewe(e);const f=document.head;f.childNodes.length>0?f.insertBefore(o,f.childNodes[0]):f.appendChild(o)}}tooltipHandler(n,e,o,f){var r;if(this.el=document.getElementById(this.options.id),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",this.options.id),this.el.classList.add("vg-tooltip"),((r=document.fullscreenElement)!==null&&r!==void 0?r:document.body).appendChild(this.el)),f==null||f===""){this.el.classList.remove("visible",`${this.options.theme}-theme`);return}this.el.innerHTML=this.options.formatTooltip(f,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible",`${this.options.theme}-theme`);const{x:a,y:l}=Cwe(e,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY);this.el.setAttribute("style",`top: ${l}px; left: ${a}px`)}}function Lwe(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function mD(t,n,e,o,f,r,a){try{var l=t[r](a),c=l.value}catch(i){e(i);return}l.done?n(c):Promise.resolve(c).then(o,f)}function B2(t){return function(){var n=this,e=arguments;return new Promise(function(o,f){var r=t.apply(n,e);function a(c){mD(r,o,f,a,l,"next",c)}function l(c){mD(r,o,f,a,l,"throw",c)}a(void 0)})}}var FH=Object.prototype,l0=FH.hasOwnProperty,Rf,V8=typeof Symbol=="function"?Symbol:{},B3=V8.iterator||"@@iterator",Pwe=V8.asyncIterator||"@@asyncIterator",j2=V8.toStringTag||"@@toStringTag";function NH(t,n,e,o){var f=n&&n.prototype instanceof fA?n:fA,r=Object.create(f.prototype),a=new hA(o||[]);return r._invoke=Fwe(t,e,a),r}function q8(t,n,e){try{return{type:"normal",arg:t.call(n,e)}}catch(o){return{type:"throw",arg:o}}}var vD="suspendedStart",Dwe="suspendedYield",yD="executing",Ib="completed",Kc={};function fA(){}function j3(){}function Fm(){}var H8={};H8[B3]=function(){return this};var q4=Object.getPrototypeOf,zb=q4&&q4(q4($8([])));zb&&zb!==FH&&l0.call(zb,B3)&&(H8=zb);var s1=Fm.prototype=fA.prototype=Object.create(H8);j3.prototype=s1.constructor=Fm;Fm.constructor=j3;Fm[j2]=j3.displayName="GeneratorFunction";function BH(t){["next","throw","return"].forEach(function(n){t[n]=function(e){return this._invoke(n,e)}})}function jH(t){var n=typeof t=="function"&&t.constructor;return n?n===j3||(n.displayName||n.name)==="GeneratorFunction":!1}function Iwe(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,Fm):(t.__proto__=Fm,j2 in t||(t[j2]="GeneratorFunction")),t.prototype=Object.create(s1),t}function zwe(t){return{__await:t}}function U3(t,n){function e(r,a,l,c){var i=q8(t[r],t,a);if(i.type==="throw")c(i.arg);else{var s=i.arg,u=s.value;return u&&typeof u=="object"&&l0.call(u,"__await")?n.resolve(u.__await).then(function(d){e("next",d,l,c)},function(d){e("throw",d,l,c)}):n.resolve(u).then(function(d){s.value=d,l(s)},function(d){return e("throw",d,l,c)})}}var o;function f(r,a){function l(){return new n(function(c,i){e(r,a,c,i)})}return o=o?o.then(l,l):l()}this._invoke=f}BH(U3.prototype);U3.prototype[Pwe]=function(){return this};function Rwe(t,n,e,o,f){f===void 0&&(f=Promise);var r=new U3(NH(t,n,e,o),f);return jH(n)?r:r.next().then(function(a){return a.done?a.value:r.next()})}function Fwe(t,n,e){var o=vD;return function(r,a){if(o===yD)throw new Error("Generator is already running");if(o===Ib){if(r==="throw")throw a;return VH()}for(e.method=r,e.arg=a;;){var l=e.delegate;if(l){var c=UH(l,e);if(c){if(c===Kc)continue;return c}}if(e.method==="next")e.sent=e._sent=e.arg;else if(e.method==="throw"){if(o===vD)throw o=Ib,e.arg;e.dispatchException(e.arg)}else e.method==="return"&&e.abrupt("return",e.arg);o=yD;var i=q8(t,n,e);if(i.type==="normal"){if(o=e.done?Ib:Dwe,i.arg===Kc)continue;return{value:i.arg,done:e.done}}else i.type==="throw"&&(o=Ib,e.method="throw",e.arg=i.arg)}}}function UH(t,n){var e=t.iterator[n.method];if(e===Rf){if(n.delegate=null,n.method==="throw"){if(t.iterator.return&&(n.method="return",n.arg=Rf,UH(t,n),n.method==="throw"))return Kc;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return Kc}var o=q8(e,t.iterator,n.arg);if(o.type==="throw")return n.method="throw",n.arg=o.arg,n.delegate=null,Kc;var f=o.arg;if(!f)return n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,Kc;if(f.done)n[t.resultName]=f.value,n.next=t.nextLoc,n.method!=="return"&&(n.method="next",n.arg=Rf);else return f;return n.delegate=null,Kc}BH(s1);s1[j2]="Generator";s1[B3]=function(){return this};s1.toString=function(){return"[object Generator]"};function Nwe(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function H4(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function hA(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(Nwe,this),this.reset(!0)}function Bwe(t){var n=[];for(var e in t)n.push(e);return n.reverse(),function o(){for(;n.length;){var f=n.pop();if(f in t)return o.value=f,o.done=!1,o}return o.done=!0,o}}function $8(t){if(t){var n=t[B3];if(n)return n.call(t);if(typeof t.next=="function")return t;if(!isNaN(t.length)){var e=-1,o=function f(){for(;++e=0;--f){var r=this.tryEntries[f],a=r.completion;if(r.tryLoc==="root")return o("end");if(r.tryLoc<=this.prev){var l=l0.call(r,"catchLoc"),c=l0.call(r,"finallyLoc");if(l&&c){if(this.prev=0;--o){var f=this.tryEntries[o];if(f.tryLoc<=this.prev&&l0.call(f,"finallyLoc")&&this.prev=0;--e){var o=this.tryEntries[e];if(o.finallyLoc===n)return this.complete(o.completion,o.afterLoc),H4(o),Kc}},catch:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e];if(o.tryLoc===n){var f=o.completion;if(f.type==="throw"){var r=f.arg;H4(o)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(n,e,o){return this.delegate={iterator:$8(n),resultName:e,nextLoc:o},this.method==="next"&&(this.arg=Rf),Kc}};var jf={wrap:NH,isGeneratorFunction:jH,AsyncIterator:U3,mark:Iwe,awrap:zwe,async:Rwe,keys:Bwe,values:$8},jwe=Za;Za.Node=j0;Za.create=Za;function Za(t){var n=this;if(n instanceof Za||(n=new Za),n.tail=null,n.head=null,n.length=0,t&&typeof t.forEach=="function")t.forEach(function(f){n.push(f)});else if(arguments.length>0)for(var e=0,o=arguments.length;e1)e=n;else if(this.head)o=this.head.next,e=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var f=0;o!==null;f++)e=t(e,o.value,f),o=o.next;return e};Za.prototype.reduceReverse=function(t,n){var e,o=this.tail;if(arguments.length>1)e=n;else if(this.tail)o=this.tail.prev,e=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var f=this.length-1;o!==null;f--)e=t(e,o.value,f),o=o.prev;return e};Za.prototype.toArray=function(){for(var t=new Array(this.length),n=0,e=this.head;e!==null;n++)t[n]=e.value,e=e.next;return t};Za.prototype.toArrayReverse=function(){for(var t=new Array(this.length),n=0,e=this.tail;e!==null;n++)t[n]=e.value,e=e.prev;return t};Za.prototype.slice=function(t,n){n=n||this.length,n<0&&(n+=this.length),t=t||0,t<0&&(t+=this.length);var e=new Za;if(nthis.length&&(n=this.length);for(var o=0,f=this.head;f!==null&&othis.length&&(n=this.length);for(var o=this.length,f=this.tail;f!==null&&o>n;o--)f=f.prev;for(;f!==null&&o>t;o--,f=f.prev)e.push(f.value);return e};Za.prototype.splice=function(t,n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var e=0,o=this.head;o!==null&&e1;class $we{constructor(n){if(typeof n=="number"&&(n={max:n}),n||(n={}),n.max&&(typeof n.max!="number"||n.max<0))throw new TypeError("max must be a non-negative number");this[i0]=n.max||1/0;var e=n.length||$4;if(this[Ug]=typeof e!="function"?$4:e,this[Vv]=n.stale||!1,n.maxAge&&typeof n.maxAge!="number")throw new TypeError("maxAge must be a number");this[u0]=n.maxAge||0,this[Ch]=n.dispose,this[xD]=n.noDisposeOnSet||!1,this[qH]=n.updateAgeOnGet||!1,this.reset()}set max(n){if(typeof n!="number"||n<0)throw new TypeError("max must be a non-negative number");this[i0]=n||1/0,nv(this)}get max(){return this[i0]}set allowStale(n){this[Vv]=!!n}get allowStale(){return this[Vv]}set maxAge(n){if(typeof n!="number")throw new TypeError("maxAge must be a non-negative number");this[u0]=n,nv(this)}get maxAge(){return this[u0]}set lengthCalculator(n){typeof n!="function"&&(n=$4),n!==this[Ug]&&(this[Ug]=n,this[Dh]=0,this[tl].forEach(e=>{e.length=this[Ug](e.value,e.key),this[Dh]+=e.length})),nv(this)}get lengthCalculator(){return this[Ug]}get length(){return this[Dh]}get itemCount(){return this[tl].length}rforEach(n,e){e=e||this;for(var o=this[tl].tail;o!==null;){var f=o.prev;bD(this,n,o,e),o=f}}forEach(n,e){e=e||this;for(var o=this[tl].head;o!==null;){var f=o.next;bD(this,n,o,e),o=f}}keys(){return this[tl].toArray().map(n=>n.key)}values(){return this[tl].toArray().map(n=>n.value)}reset(){this[Ch]&&this[tl]&&this[tl].length&&this[tl].forEach(n=>this[Ch](n.key,n.value)),this[Hc]=new Map,this[tl]=new Hwe,this[Dh]=0}dump(){return this[tl].map(n=>U2(this,n)?!1:{k:n.key,v:n.value,e:n.now+(n.maxAge||0)}).toArray().filter(n=>n)}dumpLru(){return this[tl]}set(n,e,o){if(o=o||this[u0],o&&typeof o!="number")throw new TypeError("maxAge must be a number");var f=o?Date.now():0,r=this[Ug](e,n);if(this[Hc].has(n)){if(r>this[i0])return sm(this,this[Hc].get(n)),!1;var a=this[Hc].get(n),l=a.value;return this[Ch]&&(this[xD]||this[Ch](n,l.value)),l.now=f,l.maxAge=o,l.value=e,this[Dh]+=r-l.length,l.length=r,this.get(n),nv(this),!0}var c=new Gwe(n,e,r,f,o);return c.length>this[i0]?(this[Ch]&&this[Ch](n,e),!1):(this[Dh]+=c.length,this[tl].unshift(c),this[Hc].set(n,this[tl].head),nv(this),!0)}has(n){if(!this[Hc].has(n))return!1;var e=this[Hc].get(n).value;return!U2(this,e)}get(n){return G4(this,n,!0)}peek(n){return G4(this,n,!1)}pop(){var n=this[tl].tail;return n?(sm(this,n),n.value):null}del(n){sm(this,this[Hc].get(n))}load(n){this.reset();for(var e=Date.now(),o=n.length-1;o>=0;o--){var f=n[o],r=f.e||0;if(r===0)this.set(f.k,f.v);else{var a=r-e;a>0&&this.set(f.k,f.v,a)}}}prune(){this[Hc].forEach((n,e)=>G4(this,e,!1))}}var G4=(t,n,e)=>{var o=t[Hc].get(n);if(o){var f=o.value;if(U2(t,f)){if(sm(t,o),!t[Vv])return}else e&&(t[qH]&&(o.value.now=Date.now()),t[tl].unshiftNode(o));return f.value}},U2=(t,n)=>{if(!n||!n.maxAge&&!t[u0])return!1;var e=Date.now()-n.now;return n.maxAge?e>n.maxAge:t[u0]&&e>t[u0]},nv=t=>{if(t[Dh]>t[i0])for(var n=t[tl].tail;t[Dh]>t[i0]&&n!==null;){var e=n.prev;sm(t,n),n=e}},sm=(t,n)=>{if(n){var e=n.value;t[Ch]&&t[Ch](e.key,e.value),t[Dh]-=e.length,t[Hc].delete(e.key),t[tl].removeNode(n)}};class Gwe{constructor(n,e,o,f,r){this.key=n,this.value=e,this.length=o,this.now=f,this.maxAge=r||0}}var bD=(t,n,e,o)=>{var f=e.value;U2(t,f)&&(sm(t,e),t[Vv]||(f=void 0)),f&&n.call(o,f.value,f.key,t)},Wwe=$we,Ywe=["includePrerelease","loose","rtl"],Xwe=t=>t?typeof t!="object"?{loose:!0}:Ywe.filter(n=>t[n]).reduce((n,e)=>(n[e]=!0,n),{}):{},G8=Xwe,Qc={exports:{}},Zwe="2.0.0",Jwe=256,Kwe=Number.MAX_SAFE_INTEGER||9007199254740991,Qwe=16,W8={SEMVER_SPEC_VERSION:Zwe,MAX_LENGTH:Jwe,MAX_SAFE_INTEGER:Kwe,MAX_SAFE_COMPONENT_LENGTH:Qwe},e3e=typeof process=="object"&&process.env&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?function(){for(var t=arguments.length,n=new Array(t),e=0;e{},V3=e3e;(function(t,n){var e=W8.MAX_SAFE_COMPONENT_LENGTH,o=V3;n=t.exports={};var f=n.re=[],r=n.src=[],a=n.t={},l=0,c=(i,s,u)=>{var d=l++;o(i,d,s),a[i]=d,r[d]=s,f[d]=new RegExp(s,u?"g":void 0)};c("NUMERICIDENTIFIER","0|[1-9]\\d*"),c("NUMERICIDENTIFIERLOOSE","[0-9]+"),c("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),c("MAINVERSION","(".concat(r[a.NUMERICIDENTIFIER],")\\.")+"(".concat(r[a.NUMERICIDENTIFIER],")\\.")+"(".concat(r[a.NUMERICIDENTIFIER],")")),c("MAINVERSIONLOOSE","(".concat(r[a.NUMERICIDENTIFIERLOOSE],")\\.")+"(".concat(r[a.NUMERICIDENTIFIERLOOSE],")\\.")+"(".concat(r[a.NUMERICIDENTIFIERLOOSE],")")),c("PRERELEASEIDENTIFIER","(?:".concat(r[a.NUMERICIDENTIFIER],"|").concat(r[a.NONNUMERICIDENTIFIER],")")),c("PRERELEASEIDENTIFIERLOOSE","(?:".concat(r[a.NUMERICIDENTIFIERLOOSE],"|").concat(r[a.NONNUMERICIDENTIFIER],")")),c("PRERELEASE","(?:-(".concat(r[a.PRERELEASEIDENTIFIER],"(?:\\.").concat(r[a.PRERELEASEIDENTIFIER],")*))")),c("PRERELEASELOOSE","(?:-?(".concat(r[a.PRERELEASEIDENTIFIERLOOSE],"(?:\\.").concat(r[a.PRERELEASEIDENTIFIERLOOSE],")*))")),c("BUILDIDENTIFIER","[0-9A-Za-z-]+"),c("BUILD","(?:\\+(".concat(r[a.BUILDIDENTIFIER],"(?:\\.").concat(r[a.BUILDIDENTIFIER],")*))")),c("FULLPLAIN","v?".concat(r[a.MAINVERSION]).concat(r[a.PRERELEASE],"?").concat(r[a.BUILD],"?")),c("FULL","^".concat(r[a.FULLPLAIN],"$")),c("LOOSEPLAIN","[v=\\s]*".concat(r[a.MAINVERSIONLOOSE]).concat(r[a.PRERELEASELOOSE],"?").concat(r[a.BUILD],"?")),c("LOOSE","^".concat(r[a.LOOSEPLAIN],"$")),c("GTLT","((?:<|>)?=?)"),c("XRANGEIDENTIFIERLOOSE","".concat(r[a.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),c("XRANGEIDENTIFIER","".concat(r[a.NUMERICIDENTIFIER],"|x|X|\\*")),c("XRANGEPLAIN","[v=\\s]*(".concat(r[a.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(r[a.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(r[a.XRANGEIDENTIFIER],")")+"(?:".concat(r[a.PRERELEASE],")?").concat(r[a.BUILD],"?")+")?)?"),c("XRANGEPLAINLOOSE","[v=\\s]*(".concat(r[a.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(r[a.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(r[a.XRANGEIDENTIFIERLOOSE],")")+"(?:".concat(r[a.PRERELEASELOOSE],")?").concat(r[a.BUILD],"?")+")?)?"),c("XRANGE","^".concat(r[a.GTLT],"\\s*").concat(r[a.XRANGEPLAIN],"$")),c("XRANGELOOSE","^".concat(r[a.GTLT],"\\s*").concat(r[a.XRANGEPLAINLOOSE],"$")),c("COERCE","".concat("(^|[^\\d])(\\d{1,").concat(e,"})")+"(?:\\.(\\d{1,".concat(e,"}))?")+"(?:\\.(\\d{1,".concat(e,"}))?")+"(?:$|[^\\d])"),c("COERCERTL",r[a.COERCE],!0),c("LONETILDE","(?:~>?)"),c("TILDETRIM","(\\s*)".concat(r[a.LONETILDE],"\\s+"),!0),n.tildeTrimReplace="$1~",c("TILDE","^".concat(r[a.LONETILDE]).concat(r[a.XRANGEPLAIN],"$")),c("TILDELOOSE","^".concat(r[a.LONETILDE]).concat(r[a.XRANGEPLAINLOOSE],"$")),c("LONECARET","(?:\\^)"),c("CARETTRIM","(\\s*)".concat(r[a.LONECARET],"\\s+"),!0),n.caretTrimReplace="$1^",c("CARET","^".concat(r[a.LONECARET]).concat(r[a.XRANGEPLAIN],"$")),c("CARETLOOSE","^".concat(r[a.LONECARET]).concat(r[a.XRANGEPLAINLOOSE],"$")),c("COMPARATORLOOSE","^".concat(r[a.GTLT],"\\s*(").concat(r[a.LOOSEPLAIN],")$|^$")),c("COMPARATOR","^".concat(r[a.GTLT],"\\s*(").concat(r[a.FULLPLAIN],")$|^$")),c("COMPARATORTRIM","(\\s*)".concat(r[a.GTLT],"\\s*(").concat(r[a.LOOSEPLAIN],"|").concat(r[a.XRANGEPLAIN],")"),!0),n.comparatorTrimReplace="$1$2$3",c("HYPHENRANGE","^\\s*(".concat(r[a.XRANGEPLAIN],")")+"\\s+-\\s+"+"(".concat(r[a.XRANGEPLAIN],")")+"\\s*$"),c("HYPHENRANGELOOSE","^\\s*(".concat(r[a.XRANGEPLAINLOOSE],")")+"\\s+-\\s+"+"(".concat(r[a.XRANGEPLAINLOOSE],")")+"\\s*$"),c("STAR","(<|>)?=?\\s*\\*"),c("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),c("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Qc,Qc.exports);var _D=/^[0-9]+$/,HH=(t,n)=>{var e=_D.test(t),o=_D.test(n);return e&&o&&(t=+t,n=+n),t===n?0:e&&!o?-1:o&&!e?1:tHH(n,t),n3e={compareIdentifiers:HH,rcompareIdentifiers:t3e},Rb=V3,wD=W8.MAX_LENGTH,Fb=W8.MAX_SAFE_INTEGER,kD=Qc.exports.re,TD=Qc.exports.t,r3e=G8,Vg=n3e.compareIdentifiers;class $c{constructor(n,e){if(e=r3e(e),n instanceof $c){if(n.loose===!!e.loose&&n.includePrerelease===!!e.includePrerelease)return n;n=n.version}else if(typeof n!="string")throw new TypeError("Invalid Version: ".concat(n));if(n.length>wD)throw new TypeError("version is longer than ".concat(wD," characters"));Rb("SemVer",n,e),this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease;var o=n.trim().match(e.loose?kD[TD.LOOSE]:kD[TD.FULL]);if(!o)throw new TypeError("Invalid Version: ".concat(n));if(this.raw=n,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>Fb||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Fb||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Fb||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map(f=>{if(/^[0-9]+$/.test(f)){var r=+f;if(r>=0&&r=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);o===-1&&this.prerelease.push(0)}e&&(Vg(this.prerelease[0],e)===0?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: ".concat(n))}return this.format(),this.raw=this.version,this}}var Y8=$c,AD=Y8,i3e=(t,n,e)=>new AD(t,e).compare(new AD(n,e)),l1=i3e,a3e=l1,o3e=(t,n,e)=>a3e(t,n,e)===0,s3e=o3e,l3e=l1,u3e=(t,n,e)=>l3e(t,n,e)!==0,c3e=u3e,f3e=l1,h3e=(t,n,e)=>f3e(t,n,e)>0,d3e=h3e,p3e=l1,g3e=(t,n,e)=>p3e(t,n,e)>=0,m3e=g3e,v3e=l1,y3e=(t,n,e)=>v3e(t,n,e)<0,x3e=y3e,b3e=l1,_3e=(t,n,e)=>b3e(t,n,e)<=0,w3e=_3e,k3e=s3e,T3e=c3e,A3e=d3e,M3e=m3e,S3e=x3e,E3e=w3e,C3e=(t,n,e,o)=>{switch(n){case"===":return typeof t=="object"&&(t=t.version),typeof e=="object"&&(e=e.version),t===e;case"!==":return typeof t=="object"&&(t=t.version),typeof e=="object"&&(e=e.version),t!==e;case"":case"=":case"==":return k3e(t,e,o);case"!=":return T3e(t,e,o);case">":return A3e(t,e,o);case">=":return M3e(t,e,o);case"<":return S3e(t,e,o);case"<=":return E3e(t,e,o);default:throw new TypeError("Invalid operator: ".concat(n))}},O3e=C3e,W4,MD;function L3e(){if(MD)return W4;MD=1;var t=Symbol("SemVer ANY");class n{static get ANY(){return t}constructor(s,u){if(u=e(u),s instanceof n){if(s.loose===!!u.loose)return s;s=s.value}a("comparator",s,u),this.options=u,this.loose=!!u.loose,this.parse(s),this.semver===t?this.value="":this.value=this.operator+this.semver.version,a("comp",this)}parse(s){var u=this.options.loose?o[f.COMPARATORLOOSE]:o[f.COMPARATOR],d=s.match(u);if(!d)throw new TypeError("Invalid comparator: ".concat(s));this.operator=d[1]!==void 0?d[1]:"",this.operator==="="&&(this.operator=""),d[2]?this.semver=new l(d[2],this.options.loose):this.semver=t}toString(){return this.value}test(s){if(a("Comparator.test",s,this.options.loose),this.semver===t||s===t)return!0;if(typeof s=="string")try{s=new l(s,this.options)}catch{return!1}return r(s,this.operator,this.semver,this.options)}intersects(s,u){if(!(s instanceof n))throw new TypeError("a Comparator is required");if((!u||typeof u!="object")&&(u={loose:!!u,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new c(s.value,u).test(this.value);if(s.operator==="")return s.value===""?!0:new c(this.value,u).test(s.semver);var d=(this.operator===">="||this.operator===">")&&(s.operator===">="||s.operator===">"),h=(this.operator==="<="||this.operator==="<")&&(s.operator==="<="||s.operator==="<"),m=this.semver.version===s.semver.version,g=(this.operator===">="||this.operator==="<=")&&(s.operator===">="||s.operator==="<="),p=r(this.semver,"<",s.semver,u)&&(this.operator===">="||this.operator===">")&&(s.operator==="<="||s.operator==="<"),v=r(this.semver,">",s.semver,u)&&(this.operator==="<="||this.operator==="<")&&(s.operator===">="||s.operator===">");return d||h||m&&g||p||v}}W4=n;var e=G8,o=Qc.exports.re,f=Qc.exports.t,r=O3e,a=V3,l=Y8,c=$H();return W4}function SD(t,n){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=P3e(t))||n&&t&&typeof t.length=="number"){e&&(t=e);var o=0,f=function(){};return{s:f,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(i){throw i},f}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var r=!0,a=!1,l;return{s:function(){e=e.call(t)},n:function(){var i=e.next();return r=i.done,i},e:function(i){a=!0,l=i},f:function(){try{!r&&e.return!=null&&e.return()}finally{if(a)throw l}}}}function P3e(t,n){if(!!t){if(typeof t=="string")return ED(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return ED(t,n)}}function ED(t,n){(n==null||n>t.length)&&(n=t.length);for(var e=0,o=new Array(n);ethis.parseRange(P.trim())).filter(P=>P.length),!this.set.length)throw new TypeError("Invalid SemVer Range: ".concat(E));if(this.set.length>1){var O=this.set[0];if(this.set=this.set.filter(P=>!d(P[0])),this.set.length===0)this.set=[O];else if(this.set.length>1){var R=SD(this.set),z;try{for(R.s();!(z=R.n()).done;){var L=z.value;if(L.length===1&&h(L[0])){this.set=[L];break}}}catch(P){R.e(P)}finally{R.f()}}}this.format()}format(){return this.range=this.set.map(E=>E.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(E){E=E.trim();var D=Object.keys(this.options).join(","),O="parseRange:".concat(D,":").concat(E),R=e.get(O);if(R)return R;var z=this.options.loose,L=z?l[c.HYPHENRANGELOOSE]:l[c.HYPHENRANGE];E=E.replace(L,S(this.options.includePrerelease)),r("hyphen replace",E),E=E.replace(l[c.COMPARATORTRIM],i),r("comparator trim",E),E=E.replace(l[c.TILDETRIM],s),E=E.replace(l[c.CARETTRIM],u),E=E.split(/\s+/).join(" ");var P=E.split(" ").map(Y=>g(Y,this.options)).join(" ").split(/\s+/).map(Y=>_(Y,this.options));z&&(P=P.filter(Y=>(r("loose invalid filter",Y,this.options),!!Y.match(l[c.COMPARATORLOOSE])))),r("range list",P);var N=new Map,B=P.map(Y=>new f(Y,this.options)),G=SD(B),W;try{for(G.s();!(W=G.n()).done;){var K=W.value;if(d(K))return[K];N.set(K.value,K)}}catch(Y){G.e(Y)}finally{G.f()}N.size>1&&N.has("")&&N.delete("");var te=[...N.values()];return e.set(O,te),te}intersects(E,D){if(!(E instanceof t))throw new TypeError("a Range is required");return this.set.some(O=>m(O,D)&&E.set.some(R=>m(R,D)&&O.every(z=>R.every(L=>z.intersects(L,D)))))}test(E){if(!E)return!1;if(typeof E=="string")try{E=new a(E,this.options)}catch{return!1}for(var D=0;DM.value==="<0.0.0-0",h=M=>M.value==="",m=(M,E)=>{for(var D=!0,O=M.slice(),R=O.pop();D&&O.length;)D=O.every(z=>R.intersects(z,E)),R=O.pop();return D},g=(M,E)=>(r("comp",M,E),M=x(M,E),r("caret",M),M=v(M,E),r("tildes",M),M=k(M,E),r("xrange",M),M=T(M,E),r("stars",M),M),p=M=>!M||M.toLowerCase()==="x"||M==="*",v=(M,E)=>M.trim().split(/\s+/).map(D=>y(D,E)).join(" "),y=(M,E)=>{var D=E.loose?l[c.TILDELOOSE]:l[c.TILDE];return M.replace(D,(O,R,z,L,P)=>{r("tilde",M,O,R,z,L,P);var N;return p(R)?N="":p(z)?N=">=".concat(R,".0.0 <").concat(+R+1,".0.0-0"):p(L)?N=">=".concat(R,".").concat(z,".0 <").concat(R,".").concat(+z+1,".0-0"):P?(r("replaceTilde pr",P),N=">=".concat(R,".").concat(z,".").concat(L,"-").concat(P," <").concat(R,".").concat(+z+1,".0-0")):N=">=".concat(R,".").concat(z,".").concat(L," <").concat(R,".").concat(+z+1,".0-0"),r("tilde return",N),N})},x=(M,E)=>M.trim().split(/\s+/).map(D=>w(D,E)).join(" "),w=(M,E)=>{r("caret",M,E);var D=E.loose?l[c.CARETLOOSE]:l[c.CARET],O=E.includePrerelease?"-0":"";return M.replace(D,(R,z,L,P,N)=>{r("caret",M,R,z,L,P,N);var B;return p(z)?B="":p(L)?B=">=".concat(z,".0.0").concat(O," <").concat(+z+1,".0.0-0"):p(P)?z==="0"?B=">=".concat(z,".").concat(L,".0").concat(O," <").concat(z,".").concat(+L+1,".0-0"):B=">=".concat(z,".").concat(L,".0").concat(O," <").concat(+z+1,".0.0-0"):N?(r("replaceCaret pr",N),z==="0"?L==="0"?B=">=".concat(z,".").concat(L,".").concat(P,"-").concat(N," <").concat(z,".").concat(L,".").concat(+P+1,"-0"):B=">=".concat(z,".").concat(L,".").concat(P,"-").concat(N," <").concat(z,".").concat(+L+1,".0-0"):B=">=".concat(z,".").concat(L,".").concat(P,"-").concat(N," <").concat(+z+1,".0.0-0")):(r("no pr"),z==="0"?L==="0"?B=">=".concat(z,".").concat(L,".").concat(P).concat(O," <").concat(z,".").concat(L,".").concat(+P+1,"-0"):B=">=".concat(z,".").concat(L,".").concat(P).concat(O," <").concat(z,".").concat(+L+1,".0-0"):B=">=".concat(z,".").concat(L,".").concat(P," <").concat(+z+1,".0.0-0")),r("caret return",B),B})},k=(M,E)=>(r("replaceXRanges",M,E),M.split(/\s+/).map(D=>b(D,E)).join(" ")),b=(M,E)=>{M=M.trim();var D=E.loose?l[c.XRANGELOOSE]:l[c.XRANGE];return M.replace(D,(O,R,z,L,P,N)=>{r("xRange",M,O,R,z,L,P,N);var B=p(z),G=B||p(L),W=G||p(P),K=W;return R==="="&&K&&(R=""),N=E.includePrerelease?"-0":"",B?R===">"||R==="<"?O="<0.0.0-0":O="*":R&&K?(G&&(L=0),P=0,R===">"?(R=">=",G?(z=+z+1,L=0,P=0):(L=+L+1,P=0)):R==="<="&&(R="<",G?z=+z+1:L=+L+1),R==="<"&&(N="-0"),O="".concat(R+z,".").concat(L,".").concat(P).concat(N)):G?O=">=".concat(z,".0.0").concat(N," <").concat(+z+1,".0.0-0"):W&&(O=">=".concat(z,".").concat(L,".0").concat(N," <").concat(z,".").concat(+L+1,".0-0")),r("xRange return",O),O})},T=(M,E)=>(r("replaceStars",M,E),M.trim().replace(l[c.STAR],"")),_=(M,E)=>(r("replaceGTE0",M,E),M.trim().replace(l[E.includePrerelease?c.GTE0PRE:c.GTE0],"")),S=M=>(E,D,O,R,z,L,P,N,B,G,W,K,te)=>(p(O)?D="":p(R)?D=">=".concat(O,".0.0").concat(M?"-0":""):p(z)?D=">=".concat(O,".").concat(R,".0").concat(M?"-0":""):L?D=">=".concat(D):D=">=".concat(D).concat(M?"-0":""),p(B)?N="":p(G)?N="<".concat(+B+1,".0.0-0"):p(W)?N="<".concat(B,".").concat(+G+1,".0-0"):K?N="<=".concat(B,".").concat(G,".").concat(W,"-").concat(K):M?N="<".concat(B,".").concat(G,".").concat(+W+1,"-0"):N="<=".concat(N),"".concat(D," ").concat(N).trim()),A=(M,E,D)=>{for(var O=0;O0){var z=M[R].semver;if(z.major===E.major&&z.minor===E.minor&&z.patch===E.patch)return!0}return!1}return!0};return Y4}var D3e=$H(),I3e=(t,n,e)=>{try{n=new D3e(n,e)}catch{return!1}return n.test(t)},GH=I3e;function z3e(t,n,e){var o=t.open(n),f=1e4,r=250,a=new URL(n),l=a.origin,c=~~(f/r);function i(u){u.source===o&&(c=0,t.removeEventListener("message",i,!1))}t.addEventListener("message",i,!1);function s(){c<=0||(o.postMessage(e,l),setTimeout(s,r),c-=1)}setTimeout(s,r)}var R3e=`.vega-embed { + position: relative; + display: inline-block; + box-sizing: border-box; +} +.vega-embed.has-actions { + padding-right: 38px; +} +.vega-embed details:not([open]) > :not(summary) { + display: none !important; +} +.vega-embed summary { + list-style: none; + position: absolute; + top: 0; + right: 0; + padding: 6px; + z-index: 1000; + background: white; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); + color: #1b1e23; + border: 1px solid #aaa; + border-radius: 999px; + opacity: 0.2; + transition: opacity 0.4s ease-in; + cursor: pointer; + line-height: 0px; +} +.vega-embed summary::-webkit-details-marker { + display: none; +} +.vega-embed summary:active { + box-shadow: #aaa 0px 0px 0px 1px inset; +} +.vega-embed summary svg { + width: 14px; + height: 14px; +} +.vega-embed details[open] summary { + opacity: 0.7; +} +.vega-embed:hover summary, .vega-embed:focus-within summary { + opacity: 1 !important; + transition: opacity 0.2s ease; +} +.vega-embed .vega-actions { + position: absolute; + z-index: 1001; + top: 35px; + right: -9px; + display: flex; + flex-direction: column; + padding-bottom: 8px; + padding-top: 8px; + border-radius: 4px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2); + border: 1px solid #d9d9d9; + background: white; + animation-duration: 0.15s; + animation-name: scale-in; + animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); + text-align: left; +} +.vega-embed .vega-actions a { + padding: 8px 16px; + font-family: sans-serif; + font-size: 14px; + font-weight: 600; + white-space: nowrap; + color: #434a56; + text-decoration: none; +} +.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus { + background-color: #f7f7f9; + color: black; +} +.vega-embed .vega-actions::before, .vega-embed .vega-actions::after { + content: ""; + display: inline-block; + position: absolute; +} +.vega-embed .vega-actions::before { + left: auto; + right: 14px; + top: -16px; + border: 8px solid rgba(0, 0, 0, 0); + border-bottom-color: #d9d9d9; +} +.vega-embed .vega-actions::after { + left: auto; + right: 15px; + top: -14px; + border: 7px solid rgba(0, 0, 0, 0); + border-bottom-color: #fff; +} +.vega-embed .chart-wrapper.fit-x { + width: 100%; +} +.vega-embed .chart-wrapper.fit-y { + height: 100%; +} + +.vega-embed-wrapper { + max-width: 100%; + overflow: auto; + padding-right: 14px; +} + +@keyframes scale-in { + from { + opacity: 0; + transform: scale(0.6); + } + to { + opacity: 1; + transform: scale(1); + } +} +`;String.prototype.startsWith||(String.prototype.startsWith=function(t,n){return this.substr(!n||n<0?0:+n,t.length)===t});function WH(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(i){throw i},f}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var r=!0,a=!1,l;return{s:function(){e=e.call(t)},n:function(){var i=e.next();return r=i.done,i},e:function(i){a=!0,l=i},f:function(){try{!r&&e.return!=null&&e.return()}finally{if(a)throw l}}}}function B3e(t,n){if(!!t){if(typeof t=="string")return OD(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return OD(t,n)}}function OD(t,n){(n==null||n>t.length)&&(n=t.length);for(var e=0,o=new Array(n);et,"vega-lite":(t,n)=>by.compile(t,{config:n}).spec},q3e=` + + + + +`,H3e="chart-wrapper";function $3e(t){return typeof t=="function"}function PD(t,n,e,o){var f="".concat(n,'
'),r="
".concat(e,""),a=window.open("");a.document.write(f+t+r),a.document.title="".concat(Sv[o]," JSON Source")}function G3e(t,n){if(t.$schema){var e=DH(t.$schema);if(n&&n!==e.library){var o;console.warn("The given visualization spec is written in ".concat(Sv[e.library],", but mode argument sets ").concat((o=Sv[n])!==null&&o!==void 0?o:n,"."))}var f=e.library;return GH(V2[f],"^".concat(e.version.slice(1)))||console.warn("The input spec uses ".concat(Sv[f]," ").concat(e.version,", but the current version of ").concat(Sv[f]," is v").concat(V2[f],".")),f}return"mark"in t||"encoding"in t||"layer"in t||"hconcat"in t||"vconcat"in t||"facet"in t||"repeat"in t?"vega-lite":"marks"in t||"signals"in t||"scales"in t||"axes"in t?"vega":n??"vega"}function W3e(t){return!!(t&&"load"in t)}function DD(t){return W3e(t)?t:Gc.loader(t)}function Y3e(t){var n,e,o=(n=(e=t.usermeta)===null||e===void 0?void 0:e.embedOptions)!==null&&n!==void 0?n:{};return bi(o.defaultStyle)&&(o.defaultStyle=!1),o}function X3e(t,n){return dA.apply(this,arguments)}function dA(){return dA=B2(jf.mark(function t(n,e){var o,f,r,a,l,c,i,s,u,d,h,m=arguments;return jf.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:if(r=m.length>2&&m[2]!==void 0?m[2]:{},!bi(e)){p.next=10;break}return l=DD(r.loader),p.t0=JSON,p.next=6,l.load(e);case 6:p.t1=p.sent,a=p.t0.parse.call(p.t0,p.t1),p.next=11;break;case 10:a=e;case 11:return c=Y3e(a),i=c.loader,(!l||i)&&(l=DD((s=r.loader)!==null&&s!==void 0?s:i)),p.next=16,ID(c,l);case 16:return u=p.sent,p.next=19,ID(r,l);case 19:return d=p.sent,h=Wd(Wd({},WH(d,u)),{},{config:Um((o=d.config)!==null&&o!==void 0?o:{},(f=u.config)!==null&&f!==void 0?f:{})}),p.next=23,J3e(n,a,h,l);case 23:return p.abrupt("return",p.sent);case 24:case"end":return p.stop()}},t)})),dA.apply(this,arguments)}function ID(t,n){return pA.apply(this,arguments)}function pA(){return pA=B2(jf.mark(function t(n,e){var o,f,r;return jf.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:if(!bi(n.config)){l.next=8;break}return l.t1=JSON,l.next=4,e.load(n.config);case 4:l.t2=l.sent,l.t0=l.t1.parse.call(l.t1,l.t2),l.next=9;break;case 8:l.t0=(o=n.config)!==null&&o!==void 0?o:{};case 9:if(f=l.t0,!bi(n.patch)){l.next=18;break}return l.t4=JSON,l.next=14,e.load(n.patch);case 14:l.t5=l.sent,l.t3=l.t4.parse.call(l.t4,l.t5),l.next=19;break;case 18:l.t3=n.patch;case 19:return r=l.t3,l.abrupt("return",Wd(Wd(Wd({},n),r?{patch:r}:{}),f?{config:f}:{}));case 21:case"end":return l.stop()}},t)})),pA.apply(this,arguments)}function Z3e(t){var n,e=t.getRootNode?t.getRootNode():document;return e instanceof ShadowRoot?{root:e,rootContainer:e}:{root:document,rootContainer:(n=document.head)!==null&&n!==void 0?n:document.body}}function J3e(t,n){return gA.apply(this,arguments)}function gA(){return gA=B2(jf.mark(function t(n,e){var o,f,r,a,l,c,i,s,u,d,h,m,g,p,v,y,x,w,k,b,T,_,S,A,M,E,D,O,R,z,L,P,N,B,G,W,K,te,Y,Z,re,U,q,$,ne,H,Q,ee,ie,ae,ue,le=arguments;return jf.wrap(function(fe){for(;;)switch(fe.prev=fe.next){case 0:if(ue=function(){te&&document.removeEventListener("click",te),P.finalize()},s=le.length>2&&le[2]!==void 0?le[2]:{},u=le.length>3?le[3]:void 0,d=s.theme?Um(_we[s.theme],(o=s.config)!==null&&o!==void 0?o:{}):s.config,h=hp(s.actions)?s.actions:WH({},j3e,(f=s.actions)!==null&&f!==void 0?f:{}),m=Wd(Wd({},U3e),s.i18n),g=(r=s.renderer)!==null&&r!==void 0?r:"canvas",p=(a=s.logLevel)!==null&&a!==void 0?a:Gc.Warn,v=(l=s.downloadFileName)!==null&&l!==void 0?l:"visualization",y=typeof n=="string"?document.querySelector(n):n,y){fe.next=12;break}throw new Error("".concat(n," does not exist"));case 12:if(s.defaultStyle!==!1&&(x="vega-embed-style",w=Z3e(y),k=w.root,b=w.rootContainer,k.getElementById(x)||(T=document.createElement("style"),T.id=x,T.innerHTML=s.defaultStyle===void 0||s.defaultStyle===!0?R3e.toString():s.defaultStyle,b.appendChild(T))),_=G3e(e,s.mode),S=V3e[_](e,d),_==="vega-lite"&&S.$schema&&(A=DH(S.$schema),GH(V2.vega,"^".concat(A.version.slice(1)))||console.warn("The compiled spec uses Vega ".concat(A.version,", but current version is v").concat(V2.vega,"."))),y.classList.add("vega-embed"),h&&y.classList.add("has-actions"),y.innerHTML="",M=y,h&&(E=document.createElement("div"),E.classList.add(H3e),y.appendChild(E),M=E),D=s.patch,D&&(S=D instanceof Function?D(S):X2(S,D,!0,!1).newDocument),s.formatLocale&&Gc.formatLocale(s.formatLocale),s.timeFormatLocale&&Gc.timeFormatLocale(s.timeFormatLocale),s.expressionFunctions)for(O in s.expressionFunctions)R=s.expressionFunctions[O],"fn"in R?Gc.expressionFunction(O,R.fn,R.visitor):R instanceof Function&&Gc.expressionFunction(O,R);return z=s.ast,L=Gc.parse(S,_==="vega-lite"?{}:d,{ast:z}),P=new(s.viewClass||Gc.View)(L,Wd({loader:u,logLevel:p,renderer:g},z?{expr:(c=(i=Gc.expressionInterpreter)!==null&&i!==void 0?i:s.expr)!==null&&c!==void 0?c:p0e}:{})),P.addSignalListener("autosize",(me,_e)=>{var we=_e.type;we=="fit-x"?(M.classList.add("fit-x"),M.classList.remove("fit-y")):we=="fit-y"?(M.classList.remove("fit-x"),M.classList.add("fit-y")):we=="fit"?M.classList.add("fit-x","fit-y"):M.classList.remove("fit-x","fit-y")}),s.tooltip!==!1&&(N=$3e(s.tooltip)?s.tooltip:new Owe(s.tooltip===!0?{}:s.tooltip).call,P.tooltip(N)),B=s.hover,B===void 0&&(B=_==="vega"),B&&(G=typeof B=="boolean"?{}:B,W=G.hoverSet,K=G.updateSet,P.hover(W,K)),s&&(s.width!=null&&P.width(s.width),s.height!=null&&P.height(s.height),s.padding!=null&&P.padding(s.padding)),fe.next=37,P.initialize(M,s.bind).runAsync();case 37:if(h!==!1){if(Y=y,s.defaultStyle!==!1&&(Z=document.createElement("details"),Z.title=m.CLICK_TO_VIEW_ACTIONS,y.append(Z),Y=Z,re=document.createElement("summary"),re.innerHTML=q3e,Z.append(re),te=me=>{Z.contains(me.target)||Z.removeAttribute("open")},document.addEventListener("click",te)),U=document.createElement("div"),Y.append(U),U.classList.add("vega-actions"),h===!0||h.export!==!1){q=N3e(["svg","png"]);try{for(ne=function(){var _e=$.value;if(h===!0||h.export===!0||h.export[_e]){var we=m["".concat(_e.toUpperCase(),"_ACTION")],Te=document.createElement("a");Te.text=we,Te.href="#",Te.target="_blank",Te.download="".concat(v,".").concat(_e),Te.addEventListener("mousedown",function(){var Oe=B2(jf.mark(function de(ye){var Me;return jf.wrap(function(Ee){for(;;)switch(Ee.prev=Ee.next){case 0:return ye.preventDefault(),Ee.next=3,P.toImageURL(_e,s.scaleFactor);case 3:Me=Ee.sent,this.href=Me;case 5:case"end":return Ee.stop()}},de,this)}));return function(de){return Oe.apply(this,arguments)}}()),U.append(Te)}},q.s();!($=q.n()).done;)ne()}catch(me){q.e(me)}finally{q.f()}}(h===!0||h.source!==!1)&&(H=document.createElement("a"),H.text=m.SOURCE_ACTION,H.href="#",H.addEventListener("click",function(me){var _e,we;PD(E5(e),(_e=s.sourceHeader)!==null&&_e!==void 0?_e:"",(we=s.sourceFooter)!==null&&we!==void 0?we:"",_),me.preventDefault()}),U.append(H)),_==="vega-lite"&&(h===!0||h.compiled!==!1)&&(Q=document.createElement("a"),Q.text=m.COMPILED_ACTION,Q.href="#",Q.addEventListener("click",function(me){var _e,we;PD(E5(S),(_e=s.sourceHeader)!==null&&_e!==void 0?_e:"",(we=s.sourceFooter)!==null&&we!==void 0?we:"","vega"),me.preventDefault()}),U.append(Q)),(h===!0||h.editor!==!1)&&(ie=(ee=s.editorUrl)!==null&&ee!==void 0?ee:"https://vega.github.io/editor/",ae=document.createElement("a"),ae.text=m.EDITOR_ACTION,ae.href="#",ae.addEventListener("click",function(me){z3e(window,ie,{config:d,mode:_,renderer:g,spec:E5(e)}),me.preventDefault()}),U.append(ae))}return fe.abrupt("return",{view:P,spec:e,vgSpec:S,finalize:ue,embedOptions:s});case 39:case"end":return fe.stop()}},t)})),gA.apply(this,arguments)}const K3e=new Set(["width","height"]);function Q3e(t,n){for(const[e,o]of Object.entries(n))o&&(!!o&&{}.toString.call(o)==="[object Function]"?o(t.data(e)):t.change(e,Gc.changeset().remove(()=>!0).insert(o)))}function Bb(t={},n={},e=new Set){const o=Object.keys(t),f=Object.keys(n);return t===n||o.length===f.length&&o.filter(r=>!e.has(r)).every(r=>t[r]===n[r])}function zD(t,n){const e=Object.keys(n);for(const o of e)try{t.removeSignalListener(o,n[o])}catch(f){console.warn("Cannot remove invalid signal listener.",f)}return e.length>0}function Z4(t,n){const e=Object.keys(n);for(const o of e)try{t.addSignalListener(o,n[o])}catch(f){console.warn("Cannot add invalid signal listener.",f)}return e.length>0}function e5e(t){return new Set(t.flatMap(n=>Object.keys(n)))}function t5e(t,n){if(t===n)return!1;const e={width:!1,height:!1,isExpensive:!1},o="width"in t||"width"in n,f="height"in t||"height"in n;return o&&(!("width"in t)||!("width"in n)||t.width!==n.width)&&("width"in t&&typeof t.width=="number"?e.width=t.width:e.isExpensive=!0),f&&(!("height"in t)||!("height"in n)||t.height!==n.height)&&("height"in t&&typeof t.height=="number"?e.height=t.height:e.isExpensive=!0),[...e5e([t,n])].filter(a=>a!=="width"&&a!=="height").some(a=>!(a in t)||!(a in n)||!bU(t[a],n[a]))&&(e.isExpensive=!0),e.width!==!1||e.height!==!1||e.isExpensive?e:!1}function RD(t,n){const{width:e,height:o}=n;return typeof e<"u"&&typeof o<"u"?{...t,width:e,height:o}:typeof e<"u"?{...t,width:e}:typeof o<"u"?{...t,height:o}:t}function n5e(t){let n;return{c(){n=y0("div")},m(e,o){Yf(e,n,o),t[11](n)},p:Mu,i:Mu,o:Mu,d(e){e&&Xf(n),t[11](null)}}}function r5e(t,n,e){let{options:o}=n,{spec:f}=n,{view:r}=n,{signalListeners:a={}}=n,{data:l={}}=n;const c=AG();let i,s={},u={},d={},h={},m;ND(()=>{p()});async function g(){p();try{e(6,i=await X3e(m,f,o)),e(1,r=i.view),Z4(r,a)&&r.runAsync(),y(r)}catch(k){v(k)}}function p(){i&&(i.finalize(),e(6,i=void 0),e(1,r=void 0))}function v(k){c("onError",{error:k}),console.warn(k)}function y(k){x(),c("onNewView",{view:k})}async function x(){l&&Object.keys(l).length>0&&i!==void 0&&(e(1,r=i.view),Q3e(r,l),await r.resize().runAsync())}function w(k){mA[k?"unshift":"push"](()=>{m=k,e(0,m)})}return t.$$set=k=>{"options"in k&&e(2,o=k.options),"spec"in k&&e(3,f=k.spec),"view"in k&&e(1,r=k.view),"signalListeners"in k&&e(4,a=k.signalListeners),"data"in k&&e(5,l=k.data)},t.$$.update=()=>{if(t.$$.dirty&1056&&(Bb(l,h)||x(),e(10,h=l)),t.$$.dirty&991&&m!==void 0){if(!Bb(o,s,K3e))g();else{const k=t5e(RD(f,o),RD(d,s)),b=a,T=u;if(k){if(k.isExpensive)g();else if(i!==void 0){const _=!Bb(b,T);e(1,r=i.view),k.width!==!1&&r.width(k.width),k.height!==!1&&r.height(k.height),_&&(T&&zD(r,T),b&&Z4(r,b)),r.runAsync()}}else!Bb(b,T)&&i!==void 0&&(e(1,r=i.view),T&&zD(r,T),b&&Z4(r,b),r.runAsync())}e(7,s=o),e(8,u=a),e(9,d=f)}},[m,r,o,f,a,l,i,s,u,d,h,w]}class i5e extends _y{constructor(n){super(),wy(this,n,r5e,n5e,ky,{options:2,spec:3,view:1,signalListeners:4,data:5})}}function a5e(t){let n,e,o;function f(a){t[6](a)}let r={spec:t[1],data:t[2],signalListeners:t[3],options:t[4]};return t[0]!==void 0&&(r.view=t[0]),n=new i5e({props:r}),mA.push(()=>MG(n,"view",f)),n.$on("onNewView",t[7]),n.$on("onError",t[8]),{c(){Rd(n.$$.fragment)},m(a,l){Fd(n,a,l),o=!0},p(a,[l]){const c={};l&2&&(c.spec=a[1]),l&4&&(c.data=a[2]),l&8&&(c.signalListeners=a[3]),l&16&&(c.options=a[4]),!e&&l&1&&(e=!0,c.view=a[0],SG(()=>e=!1)),n.$set(c)},i(a){o||(Uf(n.$$.fragment,a),o=!0)},o(a){Vf(n.$$.fragment,a),o=!1},d(a){Nd(n,a)}}}const o5e="vega";function s5e(t,n,e){let o,{spec:f}=n,{options:r={}}=n,{data:a={}}=n,{signalListeners:l={}}=n,{view:c=void 0}=n;function i(d){c=d,e(0,c)}function s(d){J4.call(this,t,d)}function u(d){J4.call(this,t,d)}return t.$$set=d=>{"spec"in d&&e(1,f=d.spec),"options"in d&&e(5,r=d.options),"data"in d&&e(2,a=d.data),"signalListeners"in d&&e(3,l=d.signalListeners),"view"in d&&e(0,c=d.view)},t.$$.update=()=>{t.$$.dirty&32&&e(4,o={...r,mode:o5e})},[c,f,a,l,o,r,i,s,u]}class l5e extends _y{constructor(n){super(),wy(this,n,s5e,a5e,ky,{spec:1,options:5,data:2,signalListeners:3,view:0})}}const rv="#e2e8f0",iv="#111827";function u5e(t){return{axis:{labelFont:"sans-serif",labelColor:t?rv:iv,titleFont:"sans-serif",titleColor:t?rv:iv,tickColor:"#aaa",gridColor:"#aaa",titleFontWeight:"normal",labelFontWeight:"normal"},legend:{labelColor:t?rv:iv,labelFont:"sans-serif",titleColor:t?rv:iv,titleFont:"sans-serif",titleFontWeight:"normal",labelFontWeight:"normal"},title:{color:t?rv:iv,font:"sans-serif",fontWeight:"normal",anchor:"middle"}}}function c5e(t){let n,e;return n=new hW({props:{size:"large",unpadded_box:!0,$$slots:{default:[g5e]},$$scope:{ctx:t}}}),{c(){Rd(n.$$.fragment)},m(o,f){Fd(n,o,f),e=!0},p(o,f){const r={};f&268435456&&(r.$$scope={dirty:f,ctx:o}),n.$set(r)},i(o){e||(Uf(n.$$.fragment,o),e=!0)},o(o){Vf(n.$$.fragment,o),e=!1},d(o){Nd(n,o)}}}function f5e(t){let n,e,o;return{c(){n=y0("div"),e=y0("img"),_C(e.src,o=t[3])||Ma(e,"src",o),Ma(e,"class","svelte-1fe5ixn"),Ma(n,"class","matplotlib layout svelte-1fe5ixn")},m(f,r){Yf(f,n,r),Oh(n,e)},p(f,r){r&8&&!_C(e.src,o=f[3])&&Ma(e,"src",o)},i:Mu,o:Mu,d(f){f&&Xf(n)}}}function h5e(t){let n,e,o,f;e=new l5e({props:{spec:t[2]}});let r=t[1]&&FD(t);return{c(){n=y0("div"),Rd(e.$$.fragment),o=K4(),r&&r.c(),Ma(n,"class","altair layout svelte-1fe5ixn")},m(a,l){Yf(a,n,l),Fd(e,n,null),Oh(n,o),r&&r.m(n,null),f=!0},p(a,l){const c={};l&4&&(c.spec=a[2]),e.$set(c),a[1]?r?r.p(a,l):(r=FD(a),r.c(),r.m(n,null)):r&&(r.d(1),r=null)},i(a){f||(Uf(e.$$.fragment,a),f=!0)},o(a){Vf(e.$$.fragment,a),f=!1},d(a){a&&Xf(n),Nd(e),r&&r.d()}}}function d5e(t){let n;return{c(){n=y0("div"),Ma(n,"id","bokehDiv"),Ma(n,"class","gradio-bokeh svelte-1fe5ixn")},m(e,o){Yf(e,n,o)},p:Mu,i:Mu,o:Mu,d(e){e&&Xf(n)}}}function p5e(t){let n;return{c(){n=y0("div")},m(e,o){Yf(e,n,o),t[12](n)},p:Mu,i:Mu,o:Mu,d(e){e&&Xf(n),t[12](null)}}}function g5e(t){let n,e;return n=new qD({}),{c(){Rd(n.$$.fragment)},m(o,f){Fd(n,o,f),e=!0},i(o){e||(Uf(n.$$.fragment,o),e=!0)},o(o){Vf(n.$$.fragment,o),e=!1},d(o){Nd(n,o)}}}function FD(t){let n,e;return{c(){n=y0("div"),e=PG(t[1]),Ma(n,"class","caption layout svelte-1fe5ixn")},m(o,f){Yf(o,n,f),Oh(n,e)},p(o,f){f&2&&DG(e,o[1])},d(o){o&&Xf(n)}}}function m5e(t){let n,e,o,f;const r=[p5e,d5e,h5e,f5e,c5e],a=[];function l(c,i){return c[0]&&c[4]=="plotly"?0:c[4]=="bokeh"?1:c[4]=="altair"?2:c[4]=="matplotlib"?3:4}return n=l(t),e=a[n]=r[n](t),{c(){e.c(),o=EG()},m(c,i){a[n].m(c,i),Yf(c,o,i),f=!0},p(c,[i]){let s=n;n=l(c),n===s?a[n].p(c,i):(CG(),Vf(a[s],1,1,()=>{a[s]=null}),OG(),e=a[n],e?e.p(c,i):(e=a[n]=r[n](c),e.c()),Uf(e,1),e.m(o.parentNode,o))},i(c){f||(Uf(e),f=!0)},o(c){Vf(e),f=!1},d(c){a[n].d(c),c&&Xf(o)}}}function v5e(t,n,e){let o,f,r,a,{value:l}=n,{target:c}=n,i=null,{colors:s=[]}=n,{theme:u}=n,{caption:d}=n,{bokeh_version:h}=n;function m(O){let R=s[O%s.length];return R&&R in S5?S5[R]?.primary:R||S5[BG(O)].primary}function g(O,R,z){if(document&&document.getElementById("bokehDiv")&&(document.getElementById("bokehDiv").innerHTML=""),R=="bokeh"&&window.Bokeh){z||(k(),z=!0);let L=JSON.parse(O);window.Bokeh.embed.embed_item(L,"bokehDiv")}}let p,v;const y=`https://cdn.bokeh.org/bokeh/release/bokeh-${h}.min.js`,x=[`https://cdn.pydata.org/bokeh/release/bokeh-widgets-${h}.min.js`,`https://cdn.pydata.org/bokeh/release/bokeh-tables-${h}.min.js`,`https://cdn.pydata.org/bokeh/release/bokeh-gl-${h}.min.js`,`https://cdn.pydata.org/bokeh/release/bokeh-api-${h}.min.js`];function w(){return x.map((O,R)=>{const z=document.createElement("script");return z.onload=()=>A(R+1),z.src=O,document.head.appendChild(z),z})}function k(){const O=document.createElement("script");return O.onload=E,O.src=y,document.head.appendChild(O),e(10,a=!0),O}function b(){if(!v){v=document.getElementById("plotly.js-style-global");const O=v.cloneNode();c.appendChild(O);for(const R of v.sheet.cssRules)O.sheet.insertRule(R.cssText)}}const T=h?k():null;let _=[];const S=[];Array(5).fill(0).map((O,R)=>M(R));const A=O=>{r=="bokeh"&&S[O]()};function M(O){return new Promise((R,z)=>{S[O]=R})}function E(){A(0),_=w()}LG(()=>{if(r=="plotly"){b();let O=JSON.parse(f);O.layout.title?O.layout.margin={autoexpand:!0}:O.layout.margin={l:0,r:0,b:0,t:0},gW.react(p,O)}}),ND(()=>{T in document.children&&(document.removeChild(T),_.forEach(O=>document.removeChild(O)))});function D(O){mA[O?"unshift":"push"](()=>{p=O,e(5,p)})}return t.$$set=O=>{"value"in O&&e(0,l=O.value),"target"in O&&e(6,c=O.target),"colors"in O&&e(7,s=O.colors),"theme"in O&&e(8,u=O.theme),"caption"in O&&e(1,d=O.caption),"bokeh_version"in O&&e(9,h=O.bokeh_version)},t.$$.update=()=>{if(t.$$.dirty&256&&e(11,o=u=="dark"),t.$$.dirty&1&&e(3,f=l?.plot),t.$$.dirty&1&&e(4,r=l?.type),t.$$.dirty&1048&&g(f,r,a),t.$$.dirty&2077&&r=="altair"){e(2,i=JSON.parse(f));const O=u5e(o);switch(e(2,i.config=O,i),l.chart||""){case"scatter":i.encoding.color&&i.encoding.color.type=="nominal"?e(2,i.encoding.color.scale.range=i.encoding.color.scale.range.map((R,z)=>m(z)),i):i.encoding.color&&i.encoding.color.type=="quantitative"&&(e(2,i.encoding.color.scale.range=["#eff6ff","#1e3a8a"],i),e(2,i.encoding.color.scale.range.interpolate="hsl",i));break;case"line":i.layer.forEach(R=>{R.encoding.color&&(R.encoding.color.scale.range=R.encoding.color.scale.range.map((z,L)=>m(L)))});break;case"bar":i.encoding.color&&e(2,i.encoding.color.scale.range=i.encoding.color.scale.range.map((R,z)=>m(z)),i);break}}},e(10,a=window.Bokeh===void 0),[l,d,i,f,r,p,c,s,u,h,a,o,D]}class y5e extends _y{constructor(n){super(),wy(this,n,v5e,m5e,ky,{value:0,target:6,colors:7,theme:8,caption:1,bokeh_version:9})}}function x5e(t){let n,e,o,f,r,a;n=new dW({props:{show_label:t[6],label:t[5]||"Plot",Icon:qD}});const l=[t[4]];let c={};for(let i=0;i{"value"in p&&e(0,o=p.value),"elem_id"in p&&e(1,f=p.elem_id),"elem_classes"in p&&e(2,r=p.elem_classes),"visible"in p&&e(3,a=p.visible),"loading_status"in p&&e(4,l=p.loading_status),"label"in p&&e(5,c=p.label),"show_label"in p&&e(6,i=p.show_label),"target"in p&&e(7,s=p.target),"style"in p&&e(8,u=p.style),"theme"in p&&e(9,d=p.theme),"caption"in p&&e(10,h=p.caption),"bokeh_version"in p&&e(11,m=p.bokeh_version)},[o,f,r,a,l,c,i,s,u,d,h,m,g]}class w5e extends _y{constructor(n){super(),wy(this,n,_5e,b5e,ky,{value:0,elem_id:1,elem_classes:2,visible:3,loading_status:4,label:5,show_label:6,target:7,style:8,theme:9,caption:10,bokeh_version:11})}}var D5e=w5e;const I5e=["static"];export{D5e as Component,I5e as modes}; +//# sourceMappingURL=index.756cf7e0.js.map diff --git a/gradio/templates/frontend/assets/index.756cf7e0.js.map b/gradio/templates/frontend/assets/index.756cf7e0.js.map new file mode 100644 index 0000000000000000000000000000000000000000..8157a4a9bb55fc22dbc498c558f27508f8aa6b3c --- /dev/null +++ b/gradio/templates/frontend/assets/index.756cf7e0.js.map @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94fd71611b5178db4a9db1ae7e478e06cfe2300128499f4657b27fa418755ca3 +size 11507951 diff --git a/gradio/templates/frontend/assets/index.84ff132c.css b/gradio/templates/frontend/assets/index.84ff132c.css new file mode 100644 index 0000000000000000000000000000000000000000..78067c2729600b4ee3e7e9c6442a129e8ffe9894 --- /dev/null +++ b/gradio/templates/frontend/assets/index.84ff132c.css @@ -0,0 +1 @@ +.gradio-bokeh.svelte-1fe5ixn.svelte-1fe5ixn{display:flex;justify-content:center}.layout.svelte-1fe5ixn.svelte-1fe5ixn{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--size-full);height:var(--size-full);color:var(--body-text-color)}.altair.svelte-1fe5ixn.svelte-1fe5ixn{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--size-full);height:var(--size-full)}.caption.svelte-1fe5ixn.svelte-1fe5ixn{font-size:var(--text-sm)}.matplotlib.svelte-1fe5ixn img.svelte-1fe5ixn{object-fit:contain} diff --git a/gradio/templates/frontend/assets/index.89ce7356.css b/gradio/templates/frontend/assets/index.89ce7356.css new file mode 100644 index 0000000000000000000000000000000000000000..c02568c42d3cf011dc008a256fdece5721dbccab --- /dev/null +++ b/gradio/templates/frontend/assets/index.89ce7356.css @@ -0,0 +1 @@ +.hide.svelte-ydeks8{display:none} diff --git a/gradio/templates/frontend/assets/index.8b2a7651.css b/gradio/templates/frontend/assets/index.8b2a7651.css new file mode 100644 index 0000000000000000000000000000000000000000..14e404a17a006e0cc8dd1c7e51df22ea863e0a66 --- /dev/null +++ b/gradio/templates/frontend/assets/index.8b2a7651.css @@ -0,0 +1 @@ +.input-number.svelte-x6nxfm{transition:.15s;box-shadow:var(--shadow-drop);background:var(--background-fill-secondary)}.input-number.svelte-x6nxfm:hover{box-shadow:var(--shadow-drop-lg)}.range.svelte-x6nxfm{display:flex}.item.svelte-x6nxfm{flex:1 1 0%}.dropdown-menu.svelte-1cqwepf{box-shadow:var(--shadow-drop)}.dropdown-item.svelte-1cqwepf{display:block;transition:.15s;cursor:pointer;background:var(--background-fill-primary);padding:var(--size-2) var(--size-3);white-space:nowrap}.dropdown-item.svelte-1cqwepf:first-child{border-top-right-radius:var(--radius-md);border-top-left-radius:var(--radius-md)}.dropdown-item.svelte-1cqwepf:last-child{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.dropdown-item.svelte-1cqwepf:hover{font-weight:var(--weight-semibold)}.input-checkbox.svelte-1nw19ca.svelte-1nw19ca{display:inline-block}svg.svelte-1nw19ca.svelte-1nw19ca{width:var(--size-4);height:var(--size-3)}.selected.svelte-1nw19ca svg.svelte-1nw19ca{opacity:1}.input-checkbox.svelte-1nw19ca.svelte-1nw19ca{display:flex;gap:var(--size-1);cursor:pointer;border-radius:var(--radius-md);padding:var(--size-2) var(--size-3)}.checkbox.svelte-1nw19ca.svelte-1nw19ca{display:flex;justify-content:center;align-items:center;border:1px solid var(--border-color-primary);background:var(--background-fill-primary);width:var(--size-4);height:var(--size-4)}.checkbox-item.svelte-1nw19ca.svelte-1nw19ca{transition:.15s;box-shadow:var(--shadow-drop);background:var(--background-fill-primary)}.checkbox-item.svelte-1nw19ca.svelte-1nw19ca:hover{box-shadow:var(--shadow-drop-lg)}.checkbox-item.selected.svelte-1nw19ca.svelte-1nw19ca{background:var(--color-accent-base);color:#fff}svg.svelte-1cbhr6k.svelte-1cbhr6k{width:var(--size-4);height:var(--size-3)}.selected.svelte-1cbhr6k svg.svelte-1cbhr6k{opacity:1}.input-checkbox-group.svelte-1cbhr6k.svelte-1cbhr6k{display:flex;flex-wrap:wrap;gap:var(--size-2)}.checkbox-item.svelte-1cbhr6k.svelte-1cbhr6k{display:flex;align-items:center;gap:var(--size-1);transition:.15s;cursor:pointer;box-shadow:var(--shadow-drop);border-radius:var(--radius-md);background:var(--background-fill-primary);padding:var(--size-2) var(--size-3);font-weight:var(--weight-semibold)}.checkbox-item.svelte-1cbhr6k.svelte-1cbhr6k:hover{box-shadow:var(--shadow-drop-lg)}.checkbox.svelte-1cbhr6k.svelte-1cbhr6k{display:flex;justify-content:center;align-items:center;border:1px solid var(--border-color-primary);background:var(--background-fill-primary);width:var(--size-4);height:var(--size-4)}.selected.svelte-1cbhr6k .checkbox.svelte-1cbhr6k{background:var(--color-accent-base)}.checkbox-item.svelte-1cbhr6k.svelte-1cbhr6k{transition:.15s;box-shadow:var(--shadow-drop);background:var(--background-fill-primary)}.checkbox-item.selected.svelte-1cbhr6k.svelte-1cbhr6k{background:var(--color-accent-base);color:#fff}input.svelte-1sxprr7.svelte-1sxprr7::-webkit-slider-thumb,.range.svelte-1sxprr7.svelte-1sxprr7::-moz-range-thumb{-webkit-appearance:none;appearance:none;cursor:pointer;border-radius:var(--radius-md);width:var(--size-5);height:var(--size-5)}.input-slider.svelte-1sxprr7.svelte-1sxprr7{text-align:center}.range.svelte-1sxprr7.svelte-1sxprr7{display:flex}input.svelte-1sxprr7.svelte-1sxprr7{transition:.15s;box-shadow:var(--shadow-drop);border-radius:var(--radius-md);background:var(--background-fill-primary);width:var(--size-full);height:var(--size-3)}input.svelte-1sxprr7.svelte-1sxprr7:hover{box-shadow:var(--shadow-drop-lg)}input.svelte-1sxprr7.svelte-1sxprr7::-webkit-slider-thumb,input.svelte-1sxprr7.svelte-1sxprr7::-moz-range-thumb{box-shadow:var(--shadow-drop);background:linear-gradient(to bottom,var(--color-orange-300),var(--color-orange-500))}.original.svelte-1sxprr7.svelte-1sxprr7{display:inline-block;margin:var(--size-1) auto;border-radius:var(--radius-md);padding:var(--size-0-5) var(--size-2)}.range.svelte-1sxprr7>div.svelte-1sxprr7{flex:1 1 0%;height:var(--size-4)}.input-radio.svelte-1nekfre{display:flex;flex-wrap:wrap;gap:var(--size-2)}.radio-item.svelte-1nekfre{display:flex;align-items:center;gap:var(--size-2);transition:.15s;cursor:pointer;border-radius:var(--radius-md);background:var(--background-fill-primary);padding:var(--size-2) var(--size-3);font-weight:var(--weight-semibold)}.radio-item.svelte-1nekfre:hover{box-shadow:var(--shadow-drop-lg)}.radio-circle.svelte-1nekfre{box-sizing:border-box;border-radius:var(--radius-full);width:var(--size-4);height:var(--size-4)}.radio-item.selected.svelte-1nekfre{box-shadow:var(--shadow-drop);background:var(--color-accent-base);color:#fff}.image-preview.svelte-h0dntu{display:flex;position:relative;justify-content:center;align-items:center;background:var(--background-fill-primary);width:var(--size-full);height:var(--size-60)}.interpretation.svelte-h0dntu{display:flex;position:absolute;top:0;left:0;justify-content:center;align-items:center;opacity:.9;transition:.15s;width:var(--size-full);height:var(--size-full)}.interpretation.svelte-h0dntu:hover{opacity:.2}img.svelte-h0dntu{width:var(--size-full);height:var(--size-full);object-fit:contain}.range.svelte-13lmfcp{display:flex}.item.svelte-13lmfcp{display:flex;height:var(--size-4)}.input-text.svelte-15c0u2m{border-radius:var(--radius-md);padding:var(--size-2);width:var(--size-full);overflow-wrap:break-word}.text-span.svelte-15c0u2m{padding:var(--size-1)} diff --git a/gradio/templates/frontend/assets/index.8c95658b.js b/gradio/templates/frontend/assets/index.8c95658b.js new file mode 100644 index 0000000000000000000000000000000000000000..a909287486bd06e7dc684edcc5d21953622a83c5 --- /dev/null +++ b/gradio/templates/frontend/assets/index.8c95658b.js @@ -0,0 +1,7 @@ +import{c as F,e as I,s as ce,t as c,N as me,P as _e,g as Ue,T as E,p as Qe,h as Ze,j as J,E as v,b as se,k as Ge,l as Ve,m as Ke,n as Je,o as ne,q as Ye,f as We,i as et,r as tt}from"./index.8f4ac20d.js";import{html as rt}from"./index.3b4ef889.js";import"./index.37b24c07.js";import"./Blocks.5efe22d4.js";import"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import"./BlockLabel.7ce695d8.js";import"./Empty.ae5c2506.js";/* empty css */import"./Copy.d6bfc6ec.js";import"./Download.5a6e5fa3.js";import"./index.cef508a9.js";import"./index.ec481f8e.js";import"./index.de6da618.js";class X{constructor(e,r,s,n,i,o,a){this.type=e,this.value=r,this.from=s,this.hash=n,this.end=i,this.children=o,this.positions=a,this.hashProp=[[I.contextHash,n]]}static create(e,r,s,n,i){let o=n+(n<<8)+e+(r<<4)|0;return new X(e,r,s,o,i,[],[])}addChild(e,r){e.prop(I.contextHash)!=this.hash&&(e=new E(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(r)}toTree(e,r=this.end){let s=this.children.length-1;return s>=0&&(r=Math.max(r,this.positions[s]+this.children[s].length+this.from)),new E(e.types[this.type],this.children,this.positions,r-this.from).balance({makeTree:(i,o,a)=>new E(F.none,i,o,a,this.hashProp)})}}var f;(function(t){t[t.Document=1]="Document",t[t.CodeBlock=2]="CodeBlock",t[t.FencedCode=3]="FencedCode",t[t.Blockquote=4]="Blockquote",t[t.HorizontalRule=5]="HorizontalRule",t[t.BulletList=6]="BulletList",t[t.OrderedList=7]="OrderedList",t[t.ListItem=8]="ListItem",t[t.ATXHeading1=9]="ATXHeading1",t[t.ATXHeading2=10]="ATXHeading2",t[t.ATXHeading3=11]="ATXHeading3",t[t.ATXHeading4=12]="ATXHeading4",t[t.ATXHeading5=13]="ATXHeading5",t[t.ATXHeading6=14]="ATXHeading6",t[t.SetextHeading1=15]="SetextHeading1",t[t.SetextHeading2=16]="SetextHeading2",t[t.HTMLBlock=17]="HTMLBlock",t[t.LinkReference=18]="LinkReference",t[t.Paragraph=19]="Paragraph",t[t.CommentBlock=20]="CommentBlock",t[t.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",t[t.Escape=22]="Escape",t[t.Entity=23]="Entity",t[t.HardBreak=24]="HardBreak",t[t.Emphasis=25]="Emphasis",t[t.StrongEmphasis=26]="StrongEmphasis",t[t.Link=27]="Link",t[t.Image=28]="Image",t[t.InlineCode=29]="InlineCode",t[t.HTMLTag=30]="HTMLTag",t[t.Comment=31]="Comment",t[t.ProcessingInstruction=32]="ProcessingInstruction",t[t.URL=33]="URL",t[t.HeaderMark=34]="HeaderMark",t[t.QuoteMark=35]="QuoteMark",t[t.ListMark=36]="ListMark",t[t.LinkMark=37]="LinkMark",t[t.EmphasisMark=38]="EmphasisMark",t[t.CodeMark=39]="CodeMark",t[t.CodeText=40]="CodeText",t[t.CodeInfo=41]="CodeInfo",t[t.LinkTitle=42]="LinkTitle",t[t.LinkLabel=43]="LinkLabel"})(f||(f={}));class st{constructor(e,r){this.start=e,this.content=r,this.marks=[],this.parsers=[]}}class nt{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return N(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,r=0,s=0){for(let n=r;n=e.stack[r.depth+1].value+r.baseIndent)return!0;if(r.indent>=r.baseIndent+4)return!1;let s=(t.type==f.OrderedList?ee:W)(r,e,!1);return s>0&&(t.type!=f.BulletList||Y(r,e,!1)<0)&&r.text.charCodeAt(r.pos+s-1)==t.value}const ge={[f.Blockquote](t,e,r){return r.next!=62?!1:(r.markers.push(m(f.QuoteMark,e.lineStart+r.pos,e.lineStart+r.pos+1)),r.moveBase(r.pos+(C(r.text.charCodeAt(r.pos+1))?2:1)),t.end=e.lineStart+r.text.length,!0)},[f.ListItem](t,e,r){return r.indent-1?!1:(r.moveBaseColumn(r.baseIndent+t.value),!0)},[f.OrderedList]:ie,[f.BulletList]:ie,[f.Document](){return!0}};function C(t){return t==32||t==9||t==10||t==13}function N(t,e=0){for(;er&&C(t.charCodeAt(e-1));)e--;return e}function ke(t){if(t.next!=96&&t.next!=126)return-1;let e=t.pos+1;for(;e-1&&t.depth==e.stack.length||s<3?-1:1}function be(t,e){for(let r=t.stack.length-1;r>=0;r--)if(t.stack[r].type==e)return!0;return!1}function W(t,e,r){return(t.next==45||t.next==43||t.next==42)&&(t.pos==t.text.length-1||C(t.text.charCodeAt(t.pos+1)))&&(!r||be(e,f.BulletList)||t.skipSpace(t.pos+2)=48&&n<=57;){s++;if(s==t.text.length)return-1;n=t.text.charCodeAt(s)}return s==t.pos||s>t.pos+9||n!=46&&n!=41||st.pos+1||t.next!=49)?-1:s+1-t.pos}function Se(t){if(t.next!=35)return-1;let e=t.pos+1;for(;e6?-1:r}function we(t){if(t.next!=45&&t.next!=61||t.indent>=t.baseIndent+4)return-1;let e=t.pos+1;for(;e/,Ae=/\?>/,Z=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/i.exec(s);if(i)return t.append(m(f.Comment,r,r+1+i[0].length));let o=/^\?[^]*?\?>/.exec(s);if(o)return t.append(m(f.ProcessingInstruction,r,r+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(s);return a?t.append(m(f.HTMLTag,r,r+1+a[0].length)):-1},Emphasis(t,e,r){if(e!=95&&e!=42)return-1;let s=r+1;for(;t.char(s)==e;)s++;let n=t.slice(r-1,r),i=t.slice(s,s+1),o=R.test(n),a=R.test(i),l=/\s|^$/.test(n),h=/\s|^$/.test(i),u=!h&&(!a||l||o),p=!l&&(!o||h||a),d=u&&(e==42||!p||o),L=p&&(e==42||!u||a);return t.append(new A(e==95?He:Pe,r,s,(d?1:0)|(L?2:0)))},HardBreak(t,e,r){if(e==92&&t.char(r+1)==10)return t.append(m(f.HardBreak,r,r+2));if(e==32){let s=r+1;for(;t.char(s)==32;)s++;if(t.char(s)==10&&s>=r+2)return t.append(m(f.HardBreak,r,s+1))}return-1},Link(t,e,r){return e==91?t.append(new A(P,r,r+1,1)):-1},Image(t,e,r){return e==33&&t.char(r+1)==91?t.append(new A(le,r,r+2,1)):-1},LinkEnd(t,e,r){if(e!=93)return-1;for(let s=t.parts.length-1;s>=0;s--){let n=t.parts[s];if(n instanceof A&&(n.type==P||n.type==le)){if(!n.side||t.skipSpace(n.to)==r&&!/[(\[]/.test(t.slice(r+1,r+2)))return t.parts[s]=null,-1;let i=t.takeContent(s),o=t.parts[s]=ut(t,i,n.type==P?f.Link:f.Image,n.from,r+1);if(n.type==P)for(let a=0;ae?m(f.URL,e+r,i+r):i==t.length?null:!1}}function Ne(t,e,r){let s=t.charCodeAt(e);if(s!=39&&s!=34&&s!=40)return!1;let n=s==40?41:s;for(let i=e+1,o=!1;i=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,r){return this.text.slice(e-this.offset,r-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,r,s,n,i){return this.append(new A(e,r,s,(n?1:0)|(i?2:0)))}addElement(e){return this.append(e)}resolveMarkers(e){for(let s=e;s=e;l--){let g=this.parts[l];if(g instanceof A&&g.side&1&&g.type==n.type&&!(i&&(n.side&1||g.side&2)&&(g.to-g.from+o)%3==0&&((g.to-g.from)%3||o%3))){a=g;break}}if(!a)continue;let h=n.type.resolve,u=[],p=a.from,d=n.to;if(i){let g=Math.min(2,a.to-a.from,o);p=a.to-g,d=n.from+g,h=g==1?"Emphasis":"StrongEmphasis"}a.type.mark&&u.push(this.elt(a.type.mark,p,a.to));for(let g=l+1;g=0;r--){let s=this.parts[r];if(s instanceof A&&s.type==e)return r}return null}takeContent(e){let r=this.resolveMarkers(e);return this.parts.length=e,r}skipSpace(e){return N(this.text,e-this.offset)+this.offset}elt(e,r,s,n){return typeof e=="string"?m(this.parser.getNodeType(e),r,s,n):new Me(e,r)}}function V(t,e){if(!e.length)return t;if(!t.length)return e;let r=t.slice(),s=0;for(let n of e){for(;s(e?e-1:0))return!1;if(this.fragmentEnd<0){let i=this.fragment.to;for(;i>0&&this.input.read(i-1,i)!=` +`;)i--;this.fragmentEnd=i?i-1:0}let s=this.cursor;s||(s=this.cursor=this.fragment.tree.cursor(),s.firstChild());let n=e+this.fragment.offset;for(;s.to<=n;)if(!s.parent())return!1;for(;;){if(s.from>=n)return this.fragment.from<=r;if(!s.childAfter(n))return!1}}matches(e){let r=this.cursor.tree;return r&&r.prop(I.contextHash)==e}takeNodes(e){let r=this.cursor,s=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),i=e.absoluteLineStart,o=i,a=e.block.children.length,l=o,h=a;for(;;){if(r.to-s>n){if(r.type.isAnonymous&&r.firstChild())continue;break}if(e.dontInject.add(r.tree),e.addNode(r.tree,r.from-s),r.type.is("Block")&&(pt.indexOf(r.type.id)<0?(o=r.to-s,a=e.block.children.length):(o=l,a=h,l=r.to-s,h=e.block.children.length)),!r.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-i}}const mt=ce({"Blockquote/...":c.quote,HorizontalRule:c.contentSeparator,"ATXHeading1/... SetextHeading1/...":c.heading1,"ATXHeading2/... SetextHeading2/...":c.heading2,"ATXHeading3/...":c.heading3,"ATXHeading4/...":c.heading4,"ATXHeading5/...":c.heading5,"ATXHeading6/...":c.heading6,"Comment CommentBlock":c.comment,Escape:c.escape,Entity:c.character,"Emphasis/...":c.emphasis,"StrongEmphasis/...":c.strong,"Link/... Image/...":c.link,"OrderedList/... BulletList/...":c.list,"BlockQuote/...":c.quote,"InlineCode CodeText":c.monospace,URL:c.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":c.processingInstruction,"CodeInfo LinkLabel":c.labelName,LinkTitle:c.string,Paragraph:c.content}),gt=new j(new me(Ee).extend(mt),Object.keys(z).map(t=>z[t]),Object.keys(z).map(t=>at[t]),Object.keys(z),lt,ge,Object.keys(_).map(t=>_[t]),Object.keys(_),[]);function kt(t,e,r){let s=[];for(let n=t.firstChild,i=e;;n=n.nextSibling){let o=n?n.from:r;if(o>i&&s.push({from:i,to:o}),!n)break;i=n.to}return s}function Lt(t){let{codeParser:e,htmlParser:r}=t;return{wrap:Qe((n,i)=>{let o=n.type.id;if(e&&(o==f.CodeBlock||o==f.FencedCode)){let a="";if(o==f.FencedCode){let h=n.node.getChild(f.CodeInfo);h&&(a=i.read(h.from,h.to))}let l=e(a);if(l)return{parser:l,overlay:h=>h.type.id==f.CodeText}}else if(r&&(o==f.HTMLBlock||o==f.HTMLTag))return{parser:r,overlay:kt(n.node,n.from,n.to)};return null})}}const bt={resolve:"Strikethrough",mark:"StrikethroughMark"},St={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":c.strikethrough}},{name:"StrikethroughMark",style:c.processingInstruction}],parseInline:[{name:"Strikethrough",parse(t,e,r){if(e!=126||t.char(r+1)!=126||t.char(r+2)==126)return-1;let s=t.slice(r-1,r),n=t.slice(r+2,r+3),i=/\s|^$/.test(s),o=/\s|^$/.test(n),a=R.test(s),l=R.test(n);return t.addDelimiter(bt,r,r+2,!o&&(!l||i||a),!i&&(!a||o||l))},after:"Emphasis"}]};function y(t,e,r=0,s,n=0){let i=0,o=!0,a=-1,l=-1,h=!1,u=()=>{s.push(t.elt("TableCell",n+a,n+l,t.parser.parseInline(e.slice(a,l),n+a)))};for(let p=r;p-1)&&i++,o=!1,s&&(a>-1&&u(),s.push(t.elt("TableDelimiter",p+n,p+n+1))),a=l=-1):(h||d!=32&&d!=9)&&(a<0&&(a=p),l=p+1),h=!h&&d==92}return a>-1&&(i++,s&&u()),i}function fe(t,e){for(let r=e;rn instanceof ue)||!fe(e.text,e.basePos))return!1;let s=t.scanLine(t.absoluteLineEnd+1).text;return Oe.test(s)&&y(t,e.text,e.basePos)==y(t,s,e.basePos)},before:"SetextHeading"}]};class Ct{nextLine(){return!1}finish(e,r){return e.addLeafElement(r,e.elt("Task",r.start,r.start+r.content.length,[e.elt("TaskMarker",r.start,r.start+3),...e.parser.parseInline(r.content.slice(3),r.start+3)])),!0}}const At={defineNodes:[{name:"Task",block:!0,style:c.list},{name:"TaskMarker",style:c.atom}],parseBlock:[{name:"TaskList",leaf(t,e){return/^\[[ xX]\]/.test(e.content)&&t.parentType().name=="ListItem"?new Ct:null},after:"SetextHeading"}]},xt=[wt,At,St];function Re(t,e,r){return(s,n,i)=>{if(n!=t||s.char(i+1)==t)return-1;let o=[s.elt(r,i,i+1)];for(let a=i+1;a"}}),Te=new I,De=gt.configure({props:[We.add(t=>!t.is("Block")||t.is("Document")||K(t)!=null?void 0:(e,r)=>({from:r.doc.lineAt(e.from).to,to:e.to})),Te.add(K),et.add({Document:()=>null}),tt.add({Document:ze})]});function K(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function Mt(t,e){let r=t;for(;;){let s=r.nextSibling,n;if(!s||(n=K(s.type))!=null&&n<=e)break;r=s}return r.to}const Ht=Je.of((t,e,r)=>{for(let s=J(t).resolveInner(r,-1);s&&!(s.fromr)return{from:r,to:i}}return null});function te(t){return new Ze(ze,t,[Ht],"markdown")}const Pt=te(De),vt=De.configure([xt,Et,Bt,It]),Xe=te(vt);function Nt(t,e){return r=>{if(r&&t){let s=null;if(r=/\S*/.exec(r)[0],typeof t=="function"?s=t(r):s=ne.matchLanguageName(t,r,!0),s instanceof ne)return s.support?s.support.language.parser:Ye.getSkippingParser(s.load());if(s)return s.parser}return e?e.parser:null}}class D{constructor(e,r,s,n,i,o,a){this.node=e,this.from=r,this.to=s,this.spaceBefore=n,this.spaceAfter=i,this.type=o,this.item=a}blank(e,r=!0){let s=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;s.length0;n--)s+=" ";return s+(r?this.spaceAfter:"")}}marker(e,r){let s=this.node.name=="OrderedList"?String(+je(this.item,e)[2]+r):"";return this.spaceBefore+s+this.type+this.spaceAfter}}function Fe(t,e){let r=[];for(let n=t;n&&n.name!="Document";n=n.parent)(n.name=="ListItem"||n.name=="Blockquote"||n.name=="FencedCode")&&r.push(n);let s=[];for(let n=r.length-1;n>=0;n--){let i=r[n],o,a=e.lineAt(i.from),l=i.from-a.from;if(i.name=="FencedCode")s.push(new D(i,l,l,"","","",null));else if(i.name=="Blockquote"&&(o=/^[ \t]*>( ?)/.exec(a.text.slice(l))))s.push(new D(i,l,l+o[0].length,"",o[1],">",null));else if(i.name=="ListItem"&&i.parent.name=="OrderedList"&&(o=/^([ \t]*)\d+([.)])([ \t]*)/.exec(a.text.slice(l)))){let h=o[3],u=o[0].length;h.length>=4&&(h=h.slice(0,h.length-4),u-=4),s.push(new D(i.parent,l,l+u,o[1],h,o[2],i))}else if(i.name=="ListItem"&&i.parent.name=="BulletList"&&(o=/^([ \t]*)([-+*])([ \t]{1,4}\[[ xX]\])?([ \t]+)/.exec(a.text.slice(l)))){let h=o[4],u=o[0].length;h.length>4&&(h=h.slice(0,h.length-4),u-=4);let p=o[2];o[3]&&(p+=o[3].replace(/[xX]/," ")),s.push(new D(i.parent,l,l+u,o[1],h,p,i))}}return s}function je(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function U(t,e,r,s=0){for(let n=-1,i=t;;){if(i.name=="ListItem"){let a=je(i,e),l=+a[2];if(n>=0){if(l!=n+1)return;r.push({from:i.from+a[1].length,to:i.from+a[0].length,insert:String(n+2+s)})}n=l}let o=i.nextSibling;if(!o)break;i=o}}const yt=({state:t,dispatch:e})=>{let r=J(t),{doc:s}=t,n=null,i=t.changeByRange(o=>{if(!o.empty||!Xe.isActiveAt(t,o.from))return n={range:o};let a=o.from,l=s.lineAt(a),h=Fe(r.resolveInner(a,-1),s);for(;h.length&&h[h.length-1].from>a-l.from;)h.pop();if(!h.length)return n={range:o};let u=h[h.length-1];if(u.to-u.spaceAfter.length>a-l.from)return n={range:o};let p=a>=u.to-u.spaceAfter.length&&!/\S/.test(l.text.slice(u.to));if(u.item&&p)if(u.node.firstChild.to>=a||l.from>0&&!/[^\s>]/.test(s.lineAt(l.from-1).text)){let k=h.length>1?h[h.length-2]:null,b,w="";k&&k.item?(b=l.from+k.from,w=k.marker(s,1)):b=l.from+(k?k.to:0);let x=[{from:b,to:a,insert:w}];return u.node.name=="OrderedList"&&U(u.item,s,x,-2),k&&k.node.name=="OrderedList"&&U(k.item,s,x),{range:v.cursor(b+w.length),changes:x}}else{let k="";for(let b=0,w=h.length-2;b<=w;b++)k+=h[b].blank(b\s*$/.exec(k.text);if(b&&b.index==u.from){let w=t.changes([{from:k.from+b.index,to:k.to},{from:l.from+u.from,to:l.to}]);return{range:o.map(w),changes:w}}}let d=[];u.node.name=="OrderedList"&&U(u.item,s,d);let L=u.item&&u.item.from]*/.exec(l.text)[0].length>=u.to)for(let k=0,b=h.length-1;k<=b;k++)S+=k==b&&!L?h[k].marker(s,1):h[k].blank(kl.from&&/\s/.test(l.text.charAt(g-l.from-1));)g--;return S=t.lineBreak+S,d.push({from:g,to:a,insert:S}),{range:v.cursor(g+S.length),changes:d}});return n?!1:(e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0)};function de(t){return t.name=="QuoteMark"||t.name=="ListMark"}function Ot(t,e){let r=t.resolveInner(e,-1),s=e;de(r)&&(s=r.from,r=r.parent);for(let n;n=r.childBefore(s);)if(de(n))s=n.from;else if(n.name=="OrderedList"||n.name=="BulletList")r=n.lastChild,s=r.to;else break;return r}const Rt=({state:t,dispatch:e})=>{let r=J(t),s=null,n=t.changeByRange(i=>{let o=i.from,{doc:a}=t;if(i.empty&&Xe.isActiveAt(t,i.from)){let l=a.lineAt(o),h=Fe(Ot(r,o),a);if(h.length){let u=h[h.length-1],p=u.to-u.spaceAfter.length+(u.spaceAfter?1:0);if(o-l.from>p&&!/\S/.test(l.text.slice(p,o-l.from)))return{range:v.cursor(l.from+p),changes:{from:l.from+p,to:o}};if(o-l.from==p){let d=l.from+u.from;if(u.item&&u.node.from= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n let tree = new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n return tree;\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"URL\"] = 33] = \"URL\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n})(Type || (Type = {}));\n/// Data structure used to accumulate a block's content during [leaf\n/// block parsing](#BlockParser.leaf).\nclass LeafBlock {\n /// @internal\n constructor(\n /// The start position of the block.\n start, \n /// The block's text content.\n content) {\n this.start = start;\n this.content = content;\n /// @internal\n this.marks = [];\n /// The block parsers active for this block.\n this.parsers = [];\n }\n}\n/// Data structure used during block-level per-line parsing.\nclass Line {\n constructor() {\n /// The line's full text.\n this.text = \"\";\n /// The base indent provided by the composite contexts (that have\n /// been handled so far).\n this.baseIndent = 0;\n /// The string position corresponding to the base indent.\n this.basePos = 0;\n /// The number of contexts handled @internal\n this.depth = 0;\n /// Any markers (i.e. block quote markers) parsed for the contexts. @internal\n this.markers = [];\n /// The position of the next non-whitespace character beyond any\n /// list, blockquote, or other composite block markers.\n this.pos = 0;\n /// The column of the next non-whitespace character.\n this.indent = 0;\n /// The character code of the character after `pos`.\n this.next = -1;\n }\n /// @internal\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /// @internal\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /// Skip whitespace after the given position, return the position of\n /// the next non-space character or the end of the line if there's\n /// only space after `from`.\n skipSpace(from) { return skipSpace(this.text, from); }\n /// @internal\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /// Move the line's base position forward to the given position.\n /// This should only be called by composite [block\n /// parsers](#BlockParser.parse) or [markup skipping\n /// functions](#NodeSpec.composite).\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /// Move the line's base position forward to the given _column_.\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /// Store a composite-block-level marker. Should be called from\n /// [markup skipping functions](#NodeSpec.composite) when they\n /// consume any non-whitespace characters.\n addMarker(elt) {\n this.markers.push(elt);\n }\n /// Find the column position at `to`, optionally starting at a given\n /// position and column.\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /// Find the position corresponding to the given column.\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /// @internal\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Open */ : 0) | (canClose ? 2 /* Close */ : 0)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/// Inline parsing functions get access to this context, and use it to\n/// read the content and emit syntax nodes.\nclass InlineContext {\n /// @internal\n constructor(\n /// The parser that is being used.\n parser, \n /// The text of this inline section.\n text, \n /// The starting offset of the section in the document.\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /// @internal\n this.parts = [];\n }\n /// Get the character code at the given (document-relative)\n /// position.\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /// The position of the end of this inline section.\n get end() { return this.offset + this.text.length; }\n /// Get a substring of this inline section. Again uses\n /// document-relative positions.\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /// @internal\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /// Add a [delimiter](#DelimiterType) at this given position. `open`\n /// and `close` indicate whether this delimiter is opening, closing,\n /// or both. Returns the end of the delimiter, for convenient\n /// returning from [parse functions](#InlineParser.parse).\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Open */ : 0) | (close ? 2 /* Close */ : 0)));\n }\n /// Add an inline element. Returns the end of the element.\n addElement(elt) {\n return this.append(elt);\n }\n /// Resolve markers between this.parts.length and from, wrapping matched markers in the\n /// appropriate node and updating the content of this.parts. @internal\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Open */) || (part.side & 2 /* Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /// Find an opening delimiter of the given type. Returns `null` if\n /// no delimiter is found, or an index that can be passed to\n /// [`takeContent`](#InlineContext.takeContent) otherwise.\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type)\n return i;\n }\n return null;\n }\n /// Remove all inline elements and delimiters starting from the\n /// given index (which you should get from\n /// [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n /// resolve delimiters inside of them, and return them as an array\n /// of elements.\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /// Skip space after the given (document) position, returning either\n /// the position of the next non-space character or the end of the\n /// section.\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n cx.dontInject.add(cur.tree);\n cx.addNode(cur.tree, cur.from - off);\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n URL: tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/// The default CommonMark parser.\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/// Create a Markdown extension to enable nested parsing on code\n/// blocks and/or embedded HTML.\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/// An extension that implements\n/// [GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\n/// Strikethrough syntax using `~~` delimiters.\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/// This extension provides\n/// [GFM-style](https://github.github.com/gfm/#tables-extension-)\n/// tables, using syntax like this:\n///\n/// ```\n/// | head 1 | head 2 |\n/// | --- | --- |\n/// | cell 1 | cell 2 |\n/// ```\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.scanLine(cx.absoluteLineEnd + 1).text;\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/// Extension providing\n/// [GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\n/// task list items, where list items can be prefixed with `[ ]` or\n/// `[x]` to add a checkbox.\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\n/// Extension bundle containing [`Table`](#Table),\n/// [`TaskList`](#TaskList) and [`Strikethrough`](#Strikethrough).\nconst GFM = [Table, TaskList, Strikethrough];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/// Extension providing\n/// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\n/// superscript using `^` markers.\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/// Extension providing\n/// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\n/// subscript using `~` markers.\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/// Extension that parses two colons with only letters, underscores,\n/// and numbers between them as `Emoji` nodes.\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n","import { EditorSelection, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { defineLanguageFacet, foldNodeProp, indentNodeProp, languageDataProp, foldService, syntaxTree, Language, LanguageDescription, ParseContext, LanguageSupport } from '@codemirror/language';\nimport { parser, GFM, Subscript, Superscript, Emoji, MarkdownParser, parseCode } from '@lezer/markdown';\nimport { html } from '@codemirror/lang-html';\nimport { NodeProp } from '@lezer/common';\n\nconst data = /*@__PURE__*/defineLanguageFacet({ block: { open: \"\" } });\nconst headingProp = /*@__PURE__*/new NodeProp();\nconst commonmark = /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/foldNodeProp.add(type => {\n return !type.is(\"Block\") || type.is(\"Document\") || isHeading(type) != null ? undefined\n : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });\n }),\n /*@__PURE__*/headingProp.add(isHeading),\n /*@__PURE__*/indentNodeProp.add({\n Document: () => null\n }),\n /*@__PURE__*/languageDataProp.add({\n Document: data\n })\n ]\n});\nfunction isHeading(type) {\n let match = /^(?:ATX|Setext)Heading(\\d)$/.exec(type.name);\n return match ? +match[1] : undefined;\n}\nfunction findSectionEnd(headerNode, level) {\n let last = headerNode;\n for (;;) {\n let next = last.nextSibling, heading;\n if (!next || (heading = isHeading(next.type)) != null && heading <= level)\n break;\n last = next;\n }\n return last.to;\n}\nconst headerIndent = /*@__PURE__*/foldService.of((state, start, end) => {\n for (let node = syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {\n if (node.from < start)\n break;\n let heading = node.type.prop(headingProp);\n if (heading == null)\n continue;\n let upto = findSectionEnd(node, heading);\n if (upto > end)\n return { from: end, to: upto };\n }\n return null;\n});\nfunction mkLang(parser) {\n return new Language(data, parser, [headerIndent], \"markdown\");\n}\n/**\nLanguage support for strict CommonMark.\n*/\nconst commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);\nconst extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji]);\n/**\nLanguage support for [GFM](https://github.github.com/gfm/) plus\nsubscript, superscript, and emoji syntax.\n*/\nconst markdownLanguage = /*@__PURE__*/mkLang(extended);\nfunction getCodeParser(languages, defaultLanguage) {\n return (info) => {\n if (info && languages) {\n let found = null;\n // Strip anything after whitespace\n info = /\\S*/.exec(info)[0];\n if (typeof languages == \"function\")\n found = languages(info);\n else\n found = LanguageDescription.matchLanguageName(languages, info, true);\n if (found instanceof LanguageDescription)\n return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());\n else if (found)\n return found.parser;\n }\n return defaultLanguage ? defaultLanguage.parser : null;\n };\n}\n\nclass Context {\n constructor(node, from, to, spaceBefore, spaceAfter, type, item) {\n this.node = node;\n this.from = from;\n this.to = to;\n this.spaceBefore = spaceBefore;\n this.spaceAfter = spaceAfter;\n this.type = type;\n this.item = item;\n }\n blank(maxWidth, trailing = true) {\n let result = this.spaceBefore + (this.node.name == \"Blockquote\" ? \">\" : \"\");\n if (maxWidth != null) {\n while (result.length < maxWidth)\n result += \" \";\n return result;\n }\n else {\n for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)\n result += \" \";\n return result + (trailing ? this.spaceAfter : \"\");\n }\n }\n marker(doc, add) {\n let number = this.node.name == \"OrderedList\" ? String((+itemNumber(this.item, doc)[2] + add)) : \"\";\n return this.spaceBefore + number + this.type + this.spaceAfter;\n }\n}\nfunction getContext(node, doc) {\n let nodes = [];\n for (let cur = node; cur && cur.name != \"Document\"; cur = cur.parent) {\n if (cur.name == \"ListItem\" || cur.name == \"Blockquote\" || cur.name == \"FencedCode\")\n nodes.push(cur);\n }\n let context = [];\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i], match;\n let line = doc.lineAt(node.from), startPos = node.from - line.from;\n if (node.name == \"FencedCode\") {\n context.push(new Context(node, startPos, startPos, \"\", \"\", \"\", null));\n }\n else if (node.name == \"Blockquote\" && (match = /^[ \\t]*>( ?)/.exec(line.text.slice(startPos)))) {\n context.push(new Context(node, startPos, startPos + match[0].length, \"\", match[1], \">\", null));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"OrderedList\" &&\n (match = /^([ \\t]*)\\d+([.)])([ \\t]*)/.exec(line.text.slice(startPos)))) {\n let after = match[3], len = match[0].length;\n if (after.length >= 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"BulletList\" &&\n (match = /^([ \\t]*)([-+*])([ \\t]{1,4}\\[[ xX]\\])?([ \\t]+)/.exec(line.text.slice(startPos)))) {\n let after = match[4], len = match[0].length;\n if (after.length > 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n let type = match[2];\n if (match[3])\n type += match[3].replace(/[xX]/, ' ');\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));\n }\n }\n return context;\n}\nfunction itemNumber(item, doc) {\n return /^(\\s*)(\\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));\n}\nfunction renumberList(after, doc, changes, offset = 0) {\n for (let prev = -1, node = after;;) {\n if (node.name == \"ListItem\") {\n let m = itemNumber(node, doc);\n let number = +m[2];\n if (prev >= 0) {\n if (number != prev + 1)\n return;\n changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });\n }\n prev = number;\n }\n let next = node.nextSibling;\n if (!next)\n break;\n node = next;\n }\n}\n/**\nThis command, when invoked in Markdown context with cursor\nselection(s), will create a new line with the markup for\nblockquotes and lists that were active on the old line. If the\ncursor was directly after the end of the markup for the old line,\ntrailing whitespace and list markers are removed from that line.\n\nThe command does nothing in non-Markdown context, so it should\nnot be used as the only binding for Enter (even in a Markdown\ndocument, HTML and code regions might use a different language).\n*/\nconst insertNewlineContinueMarkup = ({ state, dispatch }) => {\n let tree = syntaxTree(state), { doc } = state;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty || !markdownLanguage.isActiveAt(state, range.from))\n return dont = { range };\n let pos = range.from, line = doc.lineAt(pos);\n let context = getContext(tree.resolveInner(pos, -1), doc);\n while (context.length && context[context.length - 1].from > pos - line.from)\n context.pop();\n if (!context.length)\n return dont = { range };\n let inner = context[context.length - 1];\n if (inner.to - inner.spaceAfter.length > pos - line.from)\n return dont = { range };\n let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\\S/.test(line.text.slice(inner.to));\n // Empty line in list\n if (inner.item && emptyLine) {\n // First list item or blank line before: delete a level of markup\n if (inner.node.firstChild.to >= pos ||\n line.from > 0 && !/[^\\s>]/.test(doc.lineAt(line.from - 1).text)) {\n let next = context.length > 1 ? context[context.length - 2] : null;\n let delTo, insert = \"\";\n if (next && next.item) { // Re-add marker for the list at the next level\n delTo = line.from + next.from;\n insert = next.marker(doc, 1);\n }\n else {\n delTo = line.from + (next ? next.to : 0);\n }\n let changes = [{ from: delTo, to: pos, insert }];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes, -2);\n if (next && next.node.name == \"OrderedList\")\n renumberList(next.item, doc, changes);\n return { range: EditorSelection.cursor(delTo + insert.length), changes };\n }\n else { // Move this line down\n let insert = \"\";\n for (let i = 0, e = context.length - 2; i <= e; i++) {\n insert += context[i].blank(i < e ? context[i + 1].from - insert.length : null, i < e);\n }\n insert += state.lineBreak;\n return { range: EditorSelection.cursor(pos + insert.length), changes: { from: line.from, insert } };\n }\n }\n if (inner.node.name == \"Blockquote\" && emptyLine && line.from) {\n let prevLine = doc.lineAt(line.from - 1), quoted = />\\s*$/.exec(prevLine.text);\n // Two aligned empty quoted lines in a row\n if (quoted && quoted.index == inner.from) {\n let changes = state.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },\n { from: line.from + inner.from, to: line.to }]);\n return { range: range.map(changes), changes };\n }\n }\n let changes = [];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes);\n let continued = inner.item && inner.item.from < line.from;\n let insert = \"\";\n // If not dedented\n if (!continued || /^[\\s\\d.)\\-+*>]*/.exec(line.text)[0].length >= inner.to) {\n for (let i = 0, e = context.length - 1; i <= e; i++) {\n insert += i == e && !continued ? context[i].marker(doc, 1)\n : context[i].blank(i < e ? context[i + 1].from - insert.length : null);\n }\n }\n let from = pos;\n while (from > line.from && /\\s/.test(line.text.charAt(from - line.from - 1)))\n from--;\n insert = state.lineBreak + insert;\n changes.push({ from, to: pos, insert });\n return { range: EditorSelection.cursor(from + insert.length), changes };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\nfunction isMark(node) {\n return node.name == \"QuoteMark\" || node.name == \"ListMark\";\n}\nfunction contextNodeForDelete(tree, pos) {\n let node = tree.resolveInner(pos, -1), scan = pos;\n if (isMark(node)) {\n scan = node.from;\n node = node.parent;\n }\n for (let prev; prev = node.childBefore(scan);) {\n if (isMark(prev)) {\n scan = prev.from;\n }\n else if (prev.name == \"OrderedList\" || prev.name == \"BulletList\") {\n node = prev.lastChild;\n scan = node.to;\n }\n else {\n break;\n }\n }\n return node;\n}\n/**\nThis command will, when invoked in a Markdown context with the\ncursor directly after list or blockquote markup, delete one level\nof markup. When the markup is for a list, it will be replaced by\nspaces on the first invocation (a further invocation will delete\nthe spaces), to make it easy to continue a list.\n\nWhen not after Markdown block markup, this command will return\nfalse, so it is intended to be bound alongside other deletion\ncommands, with a higher precedence than the more generic commands.\n*/\nconst deleteMarkupBackward = ({ state, dispatch }) => {\n let tree = syntaxTree(state);\n let dont = null, changes = state.changeByRange(range => {\n let pos = range.from, { doc } = state;\n if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {\n let line = doc.lineAt(pos);\n let context = getContext(contextNodeForDelete(tree, pos), doc);\n if (context.length) {\n let inner = context[context.length - 1];\n let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);\n // Delete extra trailing space after markup\n if (pos - line.from > spaceEnd && !/\\S/.test(line.text.slice(spaceEnd, pos - line.from)))\n return { range: EditorSelection.cursor(line.from + spaceEnd),\n changes: { from: line.from + spaceEnd, to: pos } };\n if (pos - line.from == spaceEnd) {\n let start = line.from + inner.from;\n // Replace a list item marker with blank space\n if (inner.item && inner.node.from < inner.item.from && /\\S/.test(line.text.slice(inner.from, inner.to)))\n return { range, changes: { from: start, to: line.from + inner.to, insert: inner.blank(inner.to - inner.from) } };\n // Delete one level of indentation\n if (start < pos)\n return { range: EditorSelection.cursor(start), changes: { from: start, to: pos } };\n }\n }\n }\n return dont = { range };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete\" }));\n return true;\n};\n\n/**\nA small keymap with Markdown-specific bindings. Binds Enter to\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)\nand Backspace to\n[`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).\n*/\nconst markdownKeymap = [\n { key: \"Enter\", run: insertNewlineContinueMarkup },\n { key: \"Backspace\", run: deleteMarkupBackward }\n];\nconst htmlNoMatch = /*@__PURE__*/html({ matchClosingTags: false });\n/**\nMarkdown language support.\n*/\nfunction markdown(config = {}) {\n let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage } = config;\n if (!(parser instanceof MarkdownParser))\n throw new RangeError(\"Base parser provided to `markdown` should be a Markdown parser\");\n let extensions = config.extensions ? [config.extensions] : [];\n let support = [htmlNoMatch.support], defaultCode;\n if (defaultCodeLanguage instanceof LanguageSupport) {\n support.push(defaultCodeLanguage.support);\n defaultCode = defaultCodeLanguage.language;\n }\n else if (defaultCodeLanguage) {\n defaultCode = defaultCodeLanguage;\n }\n let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;\n extensions.push(parseCode({ codeParser, htmlParser: htmlNoMatch.language.parser }));\n if (addKeymap)\n support.push(Prec.high(keymap.of(markdownKeymap)));\n return new LanguageSupport(mkLang(parser.configure(extensions)), support);\n}\n\nexport { commonmarkLanguage, deleteMarkupBackward, insertNewlineContinueMarkup, markdown, markdownKeymap, markdownLanguage };\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.8f4ac20d.js b/gradio/templates/frontend/assets/index.8f4ac20d.js new file mode 100644 index 0000000000000000000000000000000000000000..f07fad333c2809b6ca64916331a3debbecc371c8 --- /dev/null +++ b/gradio/templates/frontend/assets/index.8f4ac20d.js @@ -0,0 +1,13 @@ +import{S as si,i as ri,s as oi,A as io,B as te,f as Ce,D as Yt,E as vi,p as Ae,_ as Pe,F as mt,q as Xl,r as Yc,b as xr,c as ce,m as fe,o as W,a3 as Zl,ah as bn,a5 as wn,t as $,l as ue,G as gt,O as kn,I as Ql,k as Vn,n as Fn,ac as ea,e as ta,v as ia,a7 as na,a as sa,g as ra,h as oa,j as la}from"./index.37b24c07.js";import"./Blocks.5efe22d4.js";import{a as aa}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{B as ha}from"./BlockLabel.7ce695d8.js";import{E as Xc}from"./Empty.ae5c2506.js";/* empty css */import{C as Zc,a as ca}from"./Copy.d6bfc6ec.js";import{D as Qc}from"./Download.5a6e5fa3.js";function ef(n){let e,t;return{c(){e=io("svg"),t=io("path"),te(t,"fill","currentColor"),te(t,"d","m31 16l-7 7l-1.41-1.41L28.17 16l-5.58-5.59L24 9l7 7zM1 16l7-7l1.41 1.41L3.83 16l5.58 5.59L8 23l-7-7zm11.42 9.484L17.64 6l1.932.517L14.352 26z"),te(e,"width","100%"),te(e,"height","100%"),te(e,"viewBox","0 0 32 32")},m(i,s){Ce(i,e,s),Yt(e,t)},p:vi,i:vi,o:vi,d(i){i&&Ae(e)}}}class Sr extends si{constructor(e){super(),ri(this,e,null,ef,oi,{})}}class _{constructor(){}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),Je.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){let i=[];return this.decompose(e,t,i,0),Je.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new xi(this),r=new xi(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new xi(this,e)}iterRange(e,t=this.length){return new fa(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new ua(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?_.empty:e.length<=32?new ee(e):Je.from(ee.split(e,[]))}}class ee extends _{constructor(e,t=tf(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new nf(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new ee(no(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=un(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ee(l,o.length+r.length));else{let a=l.length>>1;i.push(new ee(l.slice(0,a)),new ee(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof ee))return super.replace(e,t,i);let s=un(this.text,un(i.text,no(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new ee(s,r):Je.from(ee.split(s,[]),r)}sliceString(e,t=this.length,i=` +`){let s="";for(let r=0,o=0;r<=t&&oe&&o&&(s+=i),er&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new ee(i,s)),i=[],s=-1);return s>-1&&t.push(new ee(i,s)),t}}class Je extends _{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if(i.lines=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines>5-1&&a.lines>h>>5+1){let c=this.children.slice();return c[s]=a,new Je(c,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` +`){let s="";for(let r=0,o=0;re&&r&&(s+=i),eo&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof Je))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let p of e)p.flatten(d);return new ee(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,c=[];function f(d){let p;if(d.lines>r&&d instanceof Je)for(let g of d.children)f(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ee&&a&&(p=c[c.length-1])instanceof ee&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,c[c.length-1]=new ee(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,c.push(d))}function u(){a!=0&&(l.push(c.length==1?c[0]:Je.from(c,h)),h=-1,a=c.length=0)}for(let d of e)f(d);return u(),l.length==1?l[0]:new Je(l,t)}}_.empty=new ee([""],0);function tf(n){let e=-1;for(let t of n)e+=t.length+1;return e}function un(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r=t&&(a>i&&(l=l.slice(0,i-s)),s0?1:(e instanceof ee?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ee?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof ee){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ee?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class fa{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new xi(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class ua{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(_.prototype[Symbol.iterator]=function(){return this.iter()},xi.prototype[Symbol.iterator]=fa.prototype[Symbol.iterator]=ua.prototype[Symbol.iterator]=function(){return this});class nf{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}}let Kt="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(n=>n?parseInt(n,36):1);for(let n=1;nn)return Kt[e-1]<=n;return!1}function so(n){return n>=127462&&n<=127487}const ro=8205;function Oe(n,e,t=!0,i=!0){return(t?da:rf)(n,e,i)}function da(n,e,t){if(e==n.length)return e;e&&pa(n.charCodeAt(e))&&ma(n.charCodeAt(e-1))&&e--;let i=me(n,e);for(e+=Ee(i);e=0&&so(me(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function rf(n,e,t){for(;e>0;){let i=da(n,e-2,t);if(i=56320&&n<57344}function ma(n){return n>=55296&&n<56320}function me(n,e){let t=n.charCodeAt(e);if(!ma(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return pa(i)?(t-55296<<10)+(i-56320)+65536:t}function ga(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function Ee(n){return n<65536?1:2}const Ps=/\r\n?|\n/;var he=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(he||(he={}));class Qe{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return r+(e-s);r+=l}else{if(i!=he.Simple&&h>=e&&(i==he.TrackDel&&se||i==he.TrackBefore&&se))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i=0&&s<=t&&l>=e)return st?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Qe(e)}static create(e){return new Qe(e)}}class ne extends Qe{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Es(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return Rs(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length0&&ft(i,t,r.text),r.forward(c),l+=c}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(c=!1){if(!c&&!s.length)return;ou||f<0||u>t)throw new RangeError(`Invalid change range ${f} to ${u} (in doc of length ${t})`);let p=d?typeof d=="string"?_.of(d.split(i||Ps)):d:_.empty,g=p.length;if(f==u&&g==0)return;fo&&pe(s,f-o,-1),pe(s,u-f,g),ft(r,s,p),o=u}}return h(e),a(!l),l}static empty(e){return new ne(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length=0&&t<=0&&t==n[s+1]?n[s]+=e:e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function ft(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,c,f),s=h,r=c}}}function Rs(n,e,t,i=!1){let s=[],r=i?[]:null,o=new Di(n),l=new Di(e);for(let a=-1;;)if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);pe(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let f=Math.min(c,l.len);h+=f,c-=f,l.forward(f)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}class Di{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?_.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?_.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Dt{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new Dt(i,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return w.range(e,t);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return w.range(this.anchor,i)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(e.anchor,e.head)}static create(e,t,i){return new Dt(e,t,i)}}class w{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:w.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let t=0;te.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new w(e.ranges.map(t=>Dt.fromJSON(t)),e.main)}static single(e,t=e){return new w([w.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;se?4:0))}static normalized(e,t=0){let i=e[t];e.sort((s,r)=>s.from-r.from),t=e.indexOf(i);for(let s=1;sr.head?w.range(a,l):w.range(l,a))}}return new w(e,t)}}function ba(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let Cr=0;class D{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=Cr++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}static define(e={}){return new D(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:Ar),!!e.static,e.enables)}of(e){return new dn([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new dn(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new dn(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}}function Ar(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}class dn{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=Cr++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let f of this.dependencies)f=="doc"?a=!0:f=="selection"?h=!0:(((t=e[f.id])!==null&&t!==void 0?t:1)&1)==0&&c.push(e[f.id]);return{create(f){return f.values[o]=i(f),1},update(f,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Ls(f,c)){let d=i(f);if(l?!oo(d,f.values[o],s):!s(d,f.values[o]))return f.values[o]=d,1}return 0},reconfigure:(f,u)=>{let d=i(f),p=u.config.address[r];if(p!=null){let g=xn(u,p);if(this.dependencies.every(y=>y instanceof D?u.facet(y)===f.facet(y):y instanceof Me?u.field(y,!1)==f.field(y,!1):!0)||(l?oo(d,g,s):s(d,g)))return f.values[o]=g,0}return f.values[o]=d,1}}}}function oo(n,e,t){if(n.length!=e.length)return!1;for(let i=0;in[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let c=0;ci===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(lo).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}init(e){return[this,lo.of({field:this,create:e})]}get extension(){return this}}const At={lowest:4,low:3,default:2,high:1,highest:0};function ci(n){return e=>new wa(e,n)}const Fi={highest:ci(At.highest),high:ci(At.high),default:ci(At.default),low:ci(At.low),lowest:ci(At.lowest)};class wa{constructor(e,t){this.inner=e,this.prec=t}}class Hn{of(e){return new Is(this,e)}reconfigure(e){return Hn.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Is{constructor(e,t){this.compartment=e,this.inner=t}}class vn{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let u of lf(e,t,o))u instanceof Me?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let c=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=c&&c[u]||[];if(d.every(y=>y.type==0))if(l[p.id]=a.length<<1|1,Ar(g,d))a.push(i.facet(p));else{let y=p.combine(d.map(b=>b.value));a.push(i&&p.compare(y,i.facet(p))?i.facet(p):y)}else{for(let y of d)y.type==0?(l[y.id]=a.length<<1|1,a.push(y.value)):(l[y.id]=h.length<<1,h.push(b=>y.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(y=>of(y,p,d))}}let f=h.map(u=>u(l));return new vn(e,o,f,l,a,r)}}function lf(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof Is&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof Is){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof wa)r(o.inner,o.prec);else if(o instanceof Me)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof dn)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,At.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,At.default),i.reduce((o,l)=>o.concat(l))}function Si(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function xn(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}const ka=D.define(),va=D.define({combine:n=>n.some(e=>e),static:!0}),xa=D.define({combine:n=>n.length?n[0]:void 0,static:!0}),Sa=D.define(),Ca=D.define(),Aa=D.define(),Ma=D.define({combine:n=>n.length?n[0]:!1});class _t{constructor(e,t){this.type=e,this.value=t}static define(){return new af}}class af{of(e){return new _t(this,e)}}class hf{constructor(e){this.map=e}of(e){return new R(this,e)}}class R{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new R(this.type,t)}is(e){return this.type==e}static define(e={}){return new hf(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}}R.reconfigure=R.define();R.appendConfig=R.define();class se{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&ba(i,t.newLength),r.some(l=>l.type==se.time)||(this.annotations=r.concat(se.time.of(Date.now())))}static create(e,t,i,s,r,o){return new se(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(se.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}se.time=_t.define();se.userEvent=_t.define();se.addToHistory=_t.define();se.remote=_t.define();function cf(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof se?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof se?n=r[0]:n=Ta(e,Ut(r),!1)}return n}function uf(n){let e=n.startState,t=e.facet(Aa),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=Da(i,Ns(e,r,n.changes.newLength),!0))}return i==n?n:se.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}const df=[];function Ut(n){return n==null?df:Array.isArray(n)?n:[n]}var Re=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(Re||(Re={}));const pf=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let _s;try{_s=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function mf(n){if(_s)return _s.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||pf.test(t)))return!0}return!1}function gf(n){return e=>{if(!/\S/.test(e))return Re.Space;if(mf(e))return Re.Word;for(let t=0;t-1)return Re.Word;return Re.Other}}class N{constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(a,l)),t=null),s.set(o.value.compartment,o.value.extension)):o.is(R.reconfigure)?(t=null,i=o.value):o.is(R.appendConfig)&&(t=null,i=Ut(i).concat(o.value));let r;t?r=e.startState.values.slice():(t=vn.resolve(i,s,this),r=new N(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,a)=>a.reconfigure(l,this),null).values),new N(t,e.newDoc,e.newSelection,r,(o,l)=>l.update(o,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:w.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ut(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return N.create({doc:e.doc,selection:w.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=vn.resolve(e.extensions||[],new Map),i=e.doc instanceof _?e.doc:_.of((e.doc||"").split(t.staticFacet(N.lineSeparator)||Ps)),s=e.selection?e.selection instanceof w?e.selection:w.single(e.selection.anchor,e.selection.head):w.single(0);return ba(s,i.length),t.staticFacet(va)||(s=s.asSingle()),new N(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(N.tabSize)}get lineBreak(){return this.facet(N.lineSeparator)||` +`}get readOnly(){return this.facet(Ma)}phrase(e,...t){for(let i of this.facet(N.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let s=[];for(let r of this.facet(ka))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){return gf(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:i,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=Oe(t,o,!1);if(r(t.slice(a,o))!=Re.Word)break;o=a}for(;ln.length?n[0]:4});N.lineSeparator=xa;N.readOnly=Ma;N.phrases=D.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(s=>n[s]==e[s])}});N.languageData=ka;N.changeFilter=Sa;N.transactionFilter=Ca;N.transactionExtender=Aa;Hn.reconfigure=R.define();function Vt(n,e,t={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,r))i[r]=t[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}class Pt{eq(e){return this==e}range(e,t=e){return Ti.create(e,t,this)}}Pt.prototype.startSide=Pt.prototype.endSide=0;Pt.prototype.point=!1;Pt.prototype.mapMode=he.TrackDel;class Ti{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new Ti(e,t,i)}}function Vs(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}class Mr{constructor(e,t,i,s){this.from=e,this.to=t,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,s){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new Mr(s,r,i,l):null,pos:o}}}class F{constructor(e,t,i,s){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=s}static create(e,t,i,s){return new F(e,t,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(Vs)),this.isEmpty)return t.length?F.of(t):this;let l=new Oa(this,null,-1).goto(0),a=0,h=[],c=new Et;for(;l.value||a=0){let f=t[a++];c.addInner(f.from,f.to,f.value)||h.push(f)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return Oi.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Oi.from(e).goto(t)}static compare(e,t,i,s,r=-1){let o=e.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=r),l=t.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=r),a=ao(o,l,i),h=new fi(o,a,r),c=new fi(l,a,r);i.iterGaps((f,u,d)=>ho(h,f,c,u,d,s)),i.empty&&i.length==0&&ho(h,0,c,0,0,s)}static eq(e,t,i=0,s){s==null&&(s=1e9);let r=e.filter(c=>!c.isEmpty&&t.indexOf(c)<0),o=t.filter(c=>!c.isEmpty&&e.indexOf(c)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ao(r,o),a=new fi(r,l,0).goto(i),h=new fi(o,l,0).goto(i);for(;;){if(a.to!=h.to||!Fs(a.active,h.active)||a.point&&(!h.point||!a.point.eq(h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(e,t,i,s,r=-1){let o=new fi(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point?(s.point(l,h,o.point,o.activeForPoint(o.to),a,o.pointRank),a=o.openEnd(h)+(o.to>h?1:0)):h>l&&(s.span(l,h,o.active,a),a=o.openEnd(h)),o.to>i)break;l=o.to,o.next()}return a}static of(e,t=!1){let i=new Et;for(let s of e instanceof Ti?[e]:t?yf(e):e)i.add(s.from,s.to,s.value);return i.finish()}}F.empty=new F([],[],null,-1);function yf(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(Vs);e=i}return n}F.empty.nextLayer=F.empty;class Et{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(e){this.chunks.push(new Mr(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new Et)).add(e,t,i)}addInner(e,t,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(F.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}}function ao(n,e,t){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Oa(o,t,i,r));return s.length==1?s[0]:new Oi(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)ts(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)ts(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),ts(this.heap,0)}}}function ts(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),t.compare(s)<0)break;n[i]=t,n[e]=s,e=i}}class fi{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Oi.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Ki(this.active,e),Ki(this.activeTo,e),Ki(this.activeRank,e),this.minActive=co(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:s,rank:r}=this.cursor;for(;t-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),i&&Ki(i,r)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let o=this.cursor.value;if(!o.point)this.addActive(i),this.cursor.frome&&s++,this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&!(this.activeRank[i]e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}}function ho(n,e,t,i,s,r){n.goto(e),t.goto(i);let o=i+s,l=i,a=i-e;for(;;){let h=n.to+a-t.to||n.endSide-t.endSide,c=h<0?n.to+a:t.to,f=Math.min(c,o);if(n.point||t.point?n.point&&t.point&&(n.point==t.point||n.point.eq(t.point))&&Fs(n.activeForPoint(n.to+a),t.activeForPoint(t.to))||r.comparePoint(l,f,n.point,t.point):f>l&&!Fs(n.active,t.active)&&r.compareRange(l,f,n.active,t.active),c>o)break;l=c,h<=0&&n.next(),h>=0&&t.next()}}function Fs(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;i--)n[i+1]=n[i];n[e]=t}function co(n,e){let t=-1,i=1e9;for(let s=0;s=e)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?t-r%t:1,s=Oe(n,s)}return i===!0?-1:n.length}const Ws="\u037C",fo=typeof Symbol>"u"?"__"+Ws:Symbol.for(Ws),zs=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),uo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class yt{constructor(e,t){this.rules=[];let{finish:i}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let c=[],f=/^@(\w+)\b/.exec(o[0]),u=f&&f[1]=="keyframes";if(f&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(y=>g.replace(/&/,y))).reduce((g,y)=>g.concat(y)),p,a);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,c,u)}else p!=null&&c.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(c.length||u)&&a.push((i&&!f&&!h?o.map(i):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=uo[fo]||1;return uo[fo]=e+1,Ws+e.toString(36)}static mount(e,t){(e[zs]||new bf(e)).mount(Array.isArray(t)?t:[t])}}let Gi=null;class bf{constructor(e){if(!e.head&&e.adoptedStyleSheets&&typeof CSSStyleSheet<"u"){if(Gi)return e.adoptedStyleSheets=[Gi.sheet].concat(e.adoptedStyleSheets),e[zs]=Gi;this.sheet=new CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),Gi=this}else{this.styleTag=(e.ownerDocument||e).createElement("style");let t=e.head||e;t.insertBefore(this.styleTag,t.firstChild)}this.modules=[],e[zs]=this}mount(e){let t=this.sheet,i=0,s=0;for(let r=0;r-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,o),t)for(let a=0;a",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},po=typeof navigator<"u"&&/Chrome\/(\d+)/.exec(navigator.userAgent);typeof navigator<"u"&&/Gecko\/\d+/.test(navigator.userAgent);var wf=typeof navigator<"u"&&/Mac/.test(navigator.platform),kf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),vf=wf||po&&+po[1]<57;for(var ae=0;ae<10;ae++)bt[48+ae]=bt[96+ae]=String(ae);for(var ae=1;ae<=24;ae++)bt[ae+111]="F"+ae;for(var ae=65;ae<=90;ae++)bt[ae]=String.fromCharCode(ae+32),Bi[ae]=String.fromCharCode(ae);for(var is in bt)Bi.hasOwnProperty(is)||(Bi[is]=bt[is]);function xf(n){var e=vf&&(n.ctrlKey||n.altKey||n.metaKey)||kf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Bi:bt)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function Sn(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Xt(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function Sf(n){let e=n.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function pn(n,e){if(!e.anchorNode)return!1;try{return Xt(n,e.anchorNode)}catch{return!1}}function Pi(n){return n.nodeType==3?Zt(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function Cn(n,e,t,i){return t?mo(n,e,t,i,-1)||mo(n,e,t,i,1):!1}function An(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function mo(n,e,t,i,s){for(;;){if(n==t&&e==i)return!0;if(e==(s<0?0:Ei(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;e=An(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[e+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=s<0?Ei(n):0}else return!1}}function Ei(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}const Ba={left:0,right:0,top:0,bottom:0};function Dr(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}function Cf(n){return{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function Af(n,e,t,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let c=n;c;)if(c.nodeType==1){let f,u=c==a.body;if(u)f=Cf(h);else{if(c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let g=c.getBoundingClientRect();f={left:g.left,right:g.left+c.clientWidth,top:g.top,bottom:g.top+c.clientHeight}}let d=0,p=0;if(s=="nearest")e.top0&&e.bottom>f.bottom+p&&(p=e.bottom-f.bottom+p+o)):e.bottom>f.bottom&&(p=e.bottom-f.bottom+o,t<0&&e.top-p0&&e.right>f.right+d&&(d=e.right-f.right+d+r)):e.right>f.right&&(d=e.right-f.right+r,t<0&&e.leftt)return f.domBoundsAround(e,t,h);if(u>=e&&s==-1&&(s=a,r=h),h>t&&f.dom.parentNode==this.dom){o=a,l=c;break}c=u,h=u+f.breakAfter}return{from:r,to:l<0?i+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o=0?this.children[o].dom:null}}markDirty(e=!1){this.dirty|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.dirty|=2),t.dirty&1)return;t.dirty|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.dirty&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,i=Tr){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function La(n,e,t,i,s,r,o,l,a){let{children:h}=n,c=h.length?h[e]:null,f=r.length?r[r.length-1]:null,u=f?f.breakAfter:o;if(!(e==i&&c&&!o&&!u&&r.length<2&&c.merge(t,s,r.length?f:null,t==0,l,a))){if(i0&&(!o&&r.length&&c.merge(t,c.length,r[0],!1,l,0)?c.breakAfter=r.shift().breakAfter:(t2);var M={mac:ko||/Mac/.test(Te.platform),windows:/Win/.test(Te.platform),linux:/Linux|X11/.test(Te.platform),ie:Wn,ie_version:Na?js.documentMode||6:$s?+$s[1]:qs?+qs[1]:0,gecko:bo,gecko_version:bo?+(/Firefox\/(\d+)/.exec(Te.userAgent)||[0,0])[1]:0,chrome:!!ns,chrome_version:ns?+ns[1]:0,ios:ko,android:/Android\b/.test(Te.userAgent),webkit:wo,safari:_a,webkit_version:wo?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:js.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const Of=256;class wt extends K{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,t,i){return i&&(!(i instanceof wt)||this.length-(t-e)+i.length>Of)?!1:(this.text=this.text.slice(0,e)+(i?i.text:"")+this.text.slice(t),this.markDirty(),!0)}split(e){let t=new wt(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new ge(this.dom,e)}domBoundsAround(e,t,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return Ks(this.dom,e,t)}}class tt extends K{constructor(e,t=[],i=0){super(),this.mark=e,this.children=t,this.length=i;for(let s of t)s.setParent(this)}setAttrs(e){if(Ea(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.dirty|=6)}sync(e){this.dom?this.dirty&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e)}merge(e,t,i,s,r,o){return i&&(!(i instanceof tt&&i.mark.eq(this.mark))||e&&r<=0||te&&t.push(i=e&&(s=r),i=a,r++}let o=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new tt(this.mark,t,o)}domAtPos(e){return Ha(this,e)}coordsAt(e,t){return za(this,e,t)}}function Ks(n,e,t){let i=n.nodeValue.length;e>i&&(e=i);let s=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?M.chrome||M.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return M.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?Dr(a,o<0):a||null}class ut extends K{constructor(e,t,i){super(),this.widget=e,this.length=t,this.side=i,this.prevWidget=null}static create(e,t,i){return new(e.customView||ut)(e,t,i)}split(e){let t=ut.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(){(!this.dom||!this.widget.updateDOM(this.dom))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,t,i,s,r,o){return i&&(!(i instanceof ut)||!this.widget.compare(i.widget)||e>0&&r<=0||t0?i.length-1:0;s=i[r],!(e>0?r==0:r==i.length-1||s.top0?-1:1);return this.length?s:Dr(s,this.side>0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class Va extends ut{domAtPos(e){let{topView:t,text:i}=this.widget;return t?Us(e,0,t,i,(s,r)=>s.domAtPos(r),s=>new ge(i,Math.min(s,i.nodeValue.length))):new ge(i,Math.min(e,i.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(e,t){let{topView:i,text:s}=this.widget;return i?Fa(e,t,i,s):Math.min(t,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(e,t){let{topView:i,text:s}=this.widget;return i?Us(e,t,i,s,(r,o,l)=>r.coordsAt(o,l),(r,o)=>Ks(s,r,o)):Ks(s,e,t)}destroy(){var e;super.destroy(),(e=this.widget.topView)===null||e===void 0||e.destroy()}get isEditable(){return!0}canReuseDOM(){return!0}}function Us(n,e,t,i,s,r){if(t instanceof tt){for(let o=t.dom.firstChild;o;o=o.nextSibling){let l=K.get(o);if(!l)return r(n,e);let a=Xt(o,i),h=l.length+(a?i.nodeValue.length:0);if(n0?-1:1);return i&&i.topt.top?{left:t.left,right:t.right,top:i.top,bottom:i.bottom}:t}get overrideDOMText(){return _.empty}}wt.prototype.children=ut.prototype.children=Qt.prototype.children=Tr;function Bf(n,e){let t=n.parent,i=t?t.children.indexOf(n):-1;for(;t&&i>=0;)if(e<0?i>0:ir&&e0;r--){let o=i[r-1];if(o.dom.parentNode==t)return o.domAtPos(o.length)}for(let r=s;r0&&e instanceof tt&&s.length&&(i=s[s.length-1])instanceof tt&&i.mark.eq(e.mark)?Wa(i,e.children[0],t-1):(s.push(e),e.setParent(n)),n.length+=e.length}function za(n,e,t){let i=null,s=-1,r=null,o=-1;function l(h,c){for(let f=0,u=0;f=c&&(d.children.length?l(d,c-u):!r&&(p>c||u==p&&d.getSide()>0)?(r=d,o=c-u):(u0?3e8:-4e8:t>0?1e8:-1e8,new Rt(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=ja(e,t);i=(r?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new Rt(e,i,s,t,e.widget||null,!0)}static line(e){return new Wi(e)}static set(e,t=!1){return F.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}E.none=F.empty;class zn extends E{constructor(e){let{start:t,end:i}=ja(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){return this==e||e instanceof zn&&this.tagName==e.tagName&&this.class==e.class&&Or(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}}zn.prototype.point=!1;class Wi extends E{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof Wi&&Or(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}}Wi.prototype.mapMode=he.TrackBefore;Wi.prototype.point=!0;class Rt extends E{constructor(e,t,i,s,r,o){super(t,i,r,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?he.TrackBefore:he.TrackAfter:he.TrackDel}get type(){return this.startSide=5}eq(e){return e instanceof Rt&&Ef(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}}Rt.prototype.point=!0;function ja(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}function Ef(n,e){return n==e||!!(n&&e&&n.compare(e))}function Ys(n,e,t,i=0){let s=t.length-1;s>=0&&t[s]+i>=n?t[s]=Math.max(t[s],e):t.push(n,e)}class ke extends K{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,i,s,r,o){if(i){if(!(i instanceof ke))return!1;this.dom||i.transferDOM(this)}return s&&this.setDeco(i?i.attrs:null),Ia(this,e,t,i?i.children:[],r,o),!0}split(e){let t=new ke;if(t.breakAfter=this.breakAfter,this.length==0)return t;let{i,off:s}=this.childPos(e);s&&(t.append(this.children[i].split(s),0),this.children[i].merge(s,this.children[i].length,null,!1,0,0),i++);for(let r=i;r0&&this.children[i-1].length==0;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=e,t}transferDOM(e){!this.dom||(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Or(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){Wa(this,e,t)}addLineDeco(e){let t=e.spec.attributes,i=e.spec.class;t&&(this.attrs=Gs(t,this.attrs||{})),i&&(this.attrs=Gs({class:i},this.attrs||{}))}domAtPos(e){return Ha(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.dirty|=6)}sync(e){var t;this.dom?this.dirty&4&&(Ea(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Js(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e);let i=this.dom.lastChild;for(;i&&K.get(i)instanceof tt;)i=i.lastChild;if(!i||!this.length||i.nodeName!="BR"&&((t=K.get(i))===null||t===void 0?void 0:t.isEditable)==!1&&(!M.ios||!this.children.some(s=>s instanceof wt))){let s=document.createElement("BR");s.cmIgnore=!0,this.dom.appendChild(s)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0;for(let t of this.children){if(!(t instanceof wt)||/[^ -~]/.test(t.text))return null;let i=Pi(t.dom);if(i.length!=1)return null;e+=i[0].width}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length}:null}coordsAt(e,t){return za(this,e,t)}become(e){return!1}get type(){return z.Text}static find(e,t){for(let i=0,s=0;i=t){if(r instanceof ke)return r;if(o>t)break}s=o+r.breakAfter}return null}}class Bt extends K{constructor(e,t,i){super(),this.widget=e,this.length=t,this.type=i,this.breakAfter=0,this.prevWidget=null}merge(e,t,i,s,r,o){return i&&(!(i instanceof Bt)||!this.widget.compare(i.widget)||e>0&&r<=0||t0;){if(this.textOff==this.text.length){let{value:r,lineBreak:o,done:l}=this.cursor.next(this.skip);if(this.skip=0,l)throw new Error("Ran out of text content when drawing inline views");if(o){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,e--;continue}else this.text=r,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(0,i)),this.getLine().append(Ji(new wt(this.text.slice(this.textOff,this.textOff+s)),t),i),this.atCursorPos=!0,this.textOff+=s,e-=s,i=0}}span(e,t,i,s){this.buildText(t-e,i,s),this.pos=t,this.openStart<0&&(this.openStart=s)}point(e,t,i,s,r,o){if(this.disallowBlockEffectsFor[o]&&i instanceof Rt){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(t>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=t-e;if(i instanceof Rt)if(i.block){let{type:a}=i;a==z.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Bt(i.widget||new vo("div"),l,a))}else{let a=ut.create(i.widget||new vo("span"),l,l?0:i.startSide),h=this.atCursorPos&&!a.isEditable&&r<=s.length&&(e0),c=!a.isEditable&&(en.some(e=>e)}),Ya=D.define({combine:n=>n.some(e=>e)});class Mn{constructor(e,t="nearest",i="nearest",s=5,r=5){this.range=e,this.y=t,this.x=i,this.yMargin=s,this.xMargin=r}map(e){return e.empty?this:new Mn(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}}const xo=R.define({map:(n,e)=>n.map(e)});function We(n,e,t){let i=n.facet(Ua);i.length?i[0](e):window.onerror?window.onerror(String(e),t,void 0,void 0,e):t?console.error(t+":",e):console.error(e)}const jn=D.define({combine:n=>n.length?n[0]:!0});let Rf=0;const yi=D.define();class ye{constructor(e,t,i,s){this.id=e,this.create=t,this.domEventHandlers=i,this.extension=s(this)}static define(e,t){const{eventHandlers:i,provide:s,decorations:r}=t||{};return new ye(Rf++,e,i,o=>{let l=[yi.of(o)];return r&&l.push(Ri.of(a=>{let h=a.plugin(o);return h?r(h):E.none})),s&&l.push(s(o)),l})}static fromClass(e,t){return ye.define(i=>new e(i),t)}}class ss{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(We(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(t){We(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){We(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const Xa=D.define(),Za=D.define(),Ri=D.define(),Qa=D.define(),eh=D.define(),bi=D.define();class et{constructor(e,t,i,s){this.fromA=e,this.toA=t,this.fromB=i,this.toB=s}join(e){return new et(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>i.toA)){if(s.toAc)break;r+=2}if(!a)return i;new et(a.fromA,a.toA,a.fromB,a.toB).addToSet(i),o=a.toA,l=a.toB}}}class Dn{constructor(e,t,i){this.view=e,this.state=t,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=ne.empty(this.startState.doc.length);for(let o of i)this.changes=this.changes.compose(o.changes);let s=[];this.changes.iterChangedRanges((o,l,a,h)=>s.push(new et(o,l,a,h))),this.changedRanges=s;let r=e.hasFocus;r!=e.inputState.notifiedFocused&&(e.inputState.notifiedFocused=r,this.flags|=1)}static create(e,t,i){return new Dn(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}var X=function(n){return n[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n}(X||(X={}));const Zs=X.LTR,Lf=X.RTL;function th(n){let e=[];for(let t=0;t=t){if(l.level==i)return o;(r<0||(s!=0?s<0?l.fromt:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}}const Y=[];function Ff(n,e){let t=n.length,i=e==Zs?1:2,s=e==Zs?2:1;if(!n||i==1&&!Vf.test(n))return ih(t);for(let o=0,l=i,a=i;o=0;u-=3)if(je[u+1]==-c){let d=je[u+2],p=d&2?i:d&4?d&1?s:i:0;p&&(Y[o]=Y[je[u]]=p),l=u;break}}else{if(je.length==189)break;je[l++]=o,je[l++]=h,je[l++]=a}else if((f=Y[o])==2||f==1){let u=f==i;a=u?0:1;for(let d=l-3;d>=0;d-=3){let p=je[d+2];if(p&2)break;if(u)je[d+2]|=2;else{if(p&4)break;je[d+2]|=4}}}for(let o=0;ol;){let c=h,f=Y[--h]!=2;for(;h>l&&f==(Y[h-1]!=2);)h--;r.push(new Jt(h,c,f?2:1))}else r.push(new Jt(l,o,0))}else for(let o=0;o1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){if(e.cmIgnore)return;let t=K.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+Math.min(t,i.offset))}}function So(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}class Co{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}}class Ao extends K{constructor(e){super(),this.view=e,this.compositionDeco=E.none,this.decorations=[],this.dynamicDecorationMap=[],this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new ke],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new et(0,0,0,e.state.doc.length)],0)}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(e){let t=e.changedRanges;this.minWidth>0&&t.length&&(t.every(({fromA:o,toA:l})=>lthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=E.none:(e.transactions.length||this.dirty)&&(this.compositionDeco=zf(this.view,e.changes)),(M.ie||M.chrome)&&!this.compositionDeco.size&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let i=this.decorations,s=this.updateDeco(),r=Kf(i,s,e.changes);return t=et.extendWithRanges(t,r),this.dirty==0&&t.length==0?!1:(this.updateInner(t,e.startState.doc.length),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t);let{observer:i}=this.view;i.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=M.chrome||M.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.sync(r),this.dirty=0,r&&(r.written||i.selectionRange.focusNode!=r.node)&&(this.forceSelection=!0),this.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to=0?e[s]:null;if(!r)break;let{fromA:o,toA:l,fromB:a,toB:h}=r,{content:c,breakAtStart:f,openStart:u,openEnd:d}=Br.build(this.view.state.doc,a,h,this.decorations,this.dynamicDecorationMap),{i:p,off:g}=i.findPos(l,1),{i:y,off:b}=i.findPos(o,-1);La(this,y,b,p,g,c,f,u,d)}}updateSelection(e=!1,t=!1){if((e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange(),!(t||this.mayControlSelection()))return;let i=this.forceSelection;this.forceSelection=!1;let s=this.view.state.selection.main,r=this.domAtPos(s.anchor),o=s.empty?r:this.domAtPos(s.head);if(M.gecko&&s.empty&&Wf(r)){let a=document.createTextNode("");this.view.observer.ignore(()=>r.node.insertBefore(a,r.node.childNodes[r.offset]||null)),r=o=new ge(a,0),i=!0}let l=this.view.observer.selectionRange;(i||!l.focusNode||!Cn(r.node,r.offset,l.anchorNode,l.anchorOffset)||!Cn(o.node,o.offset,l.focusNode,l.focusOffset))&&(this.view.observer.ignore(()=>{M.android&&M.chrome&&this.dom.contains(l.focusNode)&&Uf(l.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let a=Sn(this.view.root);if(a)if(s.empty){if(M.gecko){let h=qf(r.node,r.offset);if(h&&h!=3){let c=oh(r.node,r.offset,h==1?1:-1);c&&(r=new ge(c,h==1?0:c.nodeValue.length))}}a.collapse(r.node,r.offset),s.bidiLevel!=null&&l.cursorBidiLevel!=null&&(l.cursorBidiLevel=s.bidiLevel)}else if(a.extend){a.collapse(r.node,r.offset);try{a.extend(o.node,o.offset)}catch{}}else{let h=document.createRange();s.anchor>s.head&&([r,o]=[o,r]),h.setEnd(o.node,o.offset),h.setStart(r.node,r.offset),a.removeAllRanges(),a.addRange(h)}}),this.view.observer.setSelectionRange(r,o)),this.impreciseAnchor=r.precise?null:new ge(l.anchorNode,l.anchorOffset),this.impreciseHead=o.precise?null:new ge(l.focusNode,l.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let{view:e}=this,t=e.state.selection.main,i=Sn(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=ke.find(this,t.head);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let c=this.domAtPos(t.head+t.assoc);i.collapse(c.node,c.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let f=e.observer.selectionRange;e.docView.posFromDOM(f.anchorNode,f.anchorOffset)!=t.from&&i.collapse(s,r)}mayControlSelection(){let e=this.view.root.activeElement;return e==this.dom||pn(this.dom,this.view.observer.selectionRange)&&!(e&&this.dom.contains(e))}nearest(e){for(let t=e;t;){let i=K.get(t);if(i&&i.rootView==this)return i;t=t.parentNode}return null}posFromDOM(e,t){let i=this.nearest(e);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(e,t)+i.posAtStart}domAtPos(e){let{i:t,off:i}=this.childCursor().findPos(e,-1);for(;to||e==o&&r.type!=z.WidgetBefore&&r.type!=z.WidgetAfter&&(!s||t==2||this.children[s-1].breakAfter||this.children[s-1].type==z.WidgetBefore&&t>-2))return r.coordsAt(e-o,t);i=o}}measureVisibleLineHeights(e){let t=[],{from:i,to:s}=e,r=this.view.contentDOM.clientWidth,o=r>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==X.LTR;for(let h=0,c=0;cs)break;if(h>=i){let d=f.dom.getBoundingClientRect();if(t.push(d.height),o){let p=f.dom.lastChild,g=p?Pi(p):[];if(g.length){let y=g[g.length-1],b=a?y.right-d.left:d.right-y.left;b>l&&(l=b,this.minWidth=r,this.minWidthFrom=h,this.minWidthTo=u)}}}h=u+f.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return getComputedStyle(this.children[t].dom).direction=="rtl"?X.RTL:X.LTR}measureTextSize(){for(let s of this.children)if(s instanceof ke){let r=s.measureTextSize();if(r)return r}let e=document.createElement("div"),t,i;return e.className="cm-line",e.style.width="99999px",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let s=Pi(e.firstChild)[0];t=e.getBoundingClientRect().height,i=s?s.width/27:7,e.remove()}),{lineHeight:t,charWidth:i}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new Ra(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,s=0;;s++){let r=s==t.viewports.length?null:t.viewports[s],o=r?r.from-1:this.length;if(o>i){let l=t.lineBlockAt(o).bottom-t.lineBlockAt(i).top;e.push(E.replace({widget:new Mo(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return E.set(e)}updateDeco(){let e=this.view.state.facet(Ri).map((t,i)=>(this.dynamicDecorationMap[i]=typeof t=="function")?t(this.view):t);for(let t=e.length;tt.anchor?-1:1),s;if(!i)return;!t.empty&&(s=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(i={left:Math.min(i.left,s.left),top:Math.min(i.top,s.top),right:Math.max(i.right,s.right),bottom:Math.max(i.bottom,s.bottom)});let r=0,o=0,l=0,a=0;for(let c of this.view.state.facet(eh).map(f=>f(this.view)))if(c){let{left:f,right:u,top:d,bottom:p}=c;f!=null&&(r=Math.max(r,f)),u!=null&&(o=Math.max(o,u)),d!=null&&(l=Math.max(l,d)),p!=null&&(a=Math.max(a,p))}let h={left:i.left-r,top:i.top-l,right:i.right+o,bottom:i.bottom+a};Af(this.view.scrollDOM,h,t.head0&&t<=0)n=n.childNodes[e-1],e=Ei(n);else if(n.nodeType==1&&e=0)n=n.childNodes[e],e=0;else return null}}function qf(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e0;){let h=Oe(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln?e.left-n:Math.max(0,n-e.right)}function Yf(n,e){return e.top>n?e.top-n:Math.max(0,n-e.bottom)}function rs(n,e){return n.tope.top+1}function Do(n,e){return en.bottom?{top:n.top,left:n.left,right:n.right,bottom:e}:n}function er(n,e,t){let i,s,r,o,l=!1,a,h,c,f;for(let p=n.firstChild;p;p=p.nextSibling){let g=Pi(p);for(let y=0;yx||o==x&&r>v)&&(i=p,s=b,r=v,o=x,l=!v||(v>0?y0)),v==0?t>b.bottom&&(!c||c.bottomb.top)&&(h=p,f=b):c&&rs(c,b)?c=To(c,b.bottom):f&&rs(f,b)&&(f=Do(f,b.top))}}if(c&&c.bottom>=t?(i=a,s=c):f&&f.top<=t&&(i=h,s=f),!i)return{node:n,offset:0};let u=Math.max(s.left,Math.min(s.right,e));if(i.nodeType==3)return Oo(i,u,t);if(l&&i.contentEditable!="false")return er(i,u,t);let d=Array.prototype.indexOf.call(n.childNodes,i)+(e>=(s.left+s.right)/2?1:0);return{node:n,offset:d}}function Oo(n,e,t){let i=n.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;lt?c.top-t:t-c.bottom)-1;if(c.left-1<=e&&c.right+1>=e&&f=(c.left+c.right)/2,d=u;if((M.chrome||M.gecko)&&Zt(n,l).getBoundingClientRect().left==c.right&&(d=!u),f<=0)return{node:n,offset:l+(d?1:0)};s=l+(d?1:0),r=f}}}return{node:n,offset:s>-1?s:o>0?n.nodeValue.length:0}}function lh(n,{x:e,y:t},i,s=-1){var r;let o=n.contentDOM.getBoundingClientRect(),l=o.top+n.viewState.paddingTop,a,{docHeight:h}=n.viewState,c=t-l;if(c<0)return 0;if(c>h)return n.state.doc.length;for(let b=n.defaultLineHeight/2,v=!1;a=n.elementAtHeight(c),a.type!=z.Text;)for(;c=s>0?a.bottom+b:a.top-b,!(c>=0&&c<=h);){if(v)return i?null:0;v=!0,s=-s}t=l+c;let f=a.from;if(fn.viewport.to)return n.viewport.to==n.state.doc.length?n.state.doc.length:i?null:Bo(n,o,a,e,t);let u=n.dom.ownerDocument,d=n.root.elementFromPoint?n.root:u,p=d.elementFromPoint(e,t);p&&!n.contentDOM.contains(p)&&(p=null),p||(e=Math.max(o.left+1,Math.min(o.right-1,e)),p=d.elementFromPoint(e,t),p&&!n.contentDOM.contains(p)&&(p=null));let g,y=-1;if(p&&((r=n.docView.nearest(p))===null||r===void 0?void 0:r.isEditable)!=!1){if(u.caretPositionFromPoint){let b=u.caretPositionFromPoint(e,t);b&&({offsetNode:g,offset:y}=b)}else if(u.caretRangeFromPoint){let b=u.caretRangeFromPoint(e,t);b&&({startContainer:g,startOffset:y}=b,(!n.contentDOM.contains(g)||M.safari&&Xf(g,y,e)||M.chrome&&Zf(g,y,e))&&(g=void 0))}}if(!g||!n.docView.dom.contains(g)){let b=ke.find(n.docView,f);if(!b)return c>a.top+a.height/2?a.to:a.from;({node:g,offset:y}=er(b.dom,e,t))}return n.docView.posFromDOM(g,y)}function Bo(n,e,t,i,s){let r=Math.round((i-e.left)*n.defaultCharacterWidth);n.lineWrapping&&t.height>n.defaultLineHeight*1.5&&(r+=Math.floor((s-t.top)/n.defaultLineHeight)*n.viewState.heightOracle.lineLength);let o=n.state.sliceDoc(t.from,t.to);return t.from+Hs(o,r,n.state.tabSize)}function Xf(n,e,t){let i;if(n.nodeType!=3||e!=(i=n.nodeValue.length))return!1;for(let s=n.nextSibling;s;s=s.nextSibling)if(s.nodeType!=1||s.nodeName!="BR")return!1;return Zt(n,i-1,i).getBoundingClientRect().left>t}function Zf(n,e,t){if(e!=0)return!1;for(let s=n;;){let r=s.parentNode;if(!r||r.nodeType!=1||r.firstChild!=s)return!1;if(r.classList.contains("cm-line"))break;s=r}let i=n.nodeType==1?n.getBoundingClientRect():Zt(n,0,Math.max(n.nodeValue.length,1)).getBoundingClientRect();return t-i.left>5}function Qf(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=!i||!n.lineWrapping?null:n.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let a=n.dom.getBoundingClientRect(),h=n.textDirectionAt(s.from),c=n.posAtCoords({x:t==(h==X.LTR)?a.right-1:a.left+1,y:(r.top+r.bottom)/2});if(c!=null)return w.cursor(c,t?-1:1)}let o=ke.find(n.docView,e.head),l=o?t?o.posAtEnd:o.posAtStart:t?s.to:s.from;return w.cursor(l,t?-1:1)}function Po(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=e,a=null;;){let h=Hf(s,r,o,l,t),c=nh;if(!h){if(s.number==(t?n.state.doc.lines:1))return l;c=` +`,s=n.state.doc.line(s.number+(t?1:-1)),r=n.bidiSpans(s),h=w.cursor(t?s.from:s.to)}if(a){if(!a(c))return l}else{if(!i)return h;a=i(c)}l=h}}function eu(n,e,t){let i=n.state.charCategorizer(e),s=i(t);return r=>{let o=i(r);return s==Re.Space&&(s=o),s==o}}function tu(n,e,t,i){let s=e.head,r=t?1:-1;if(s==(t?n.state.doc.length:0))return w.cursor(s,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s),c=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let d=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-d.from))),l=(r<0?d.top:d.bottom)+c}let f=a.left+o,u=i??n.defaultLineHeight>>1;for(let d=0;;d+=10){let p=l+(u+d)*r,g=lh(n,{x:f,y:p},!1,r);if(pa.bottom||(r<0?gs))return w.cursor(g,e.assoc,void 0,o)}}function os(n,e,t){let i=n.state.facet(Qa).map(s=>s(n));for(;;){let s=!1;for(let r of i)r.between(t.from-1,t.from+1,(o,l,a)=>{t.from>o&&t.fromt.from?w.cursor(o,1):w.cursor(l,-1),s=!0)});if(!s)return t}}class iu{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.chromeScrollHack=-1,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.mouseSelection=null;for(let t in re){let i=re[t];e.contentDOM.addEventListener(t,s=>{!Eo(e,s)||this.ignoreDuringComposition(s)||t=="keydown"&&this.keydown(e,s)||(this.mustFlushObserver(s)&&e.observer.forceFlush(),this.runCustomHandlers(t,e,s)?s.preventDefault():i(e,s))},tr[t]),this.registeredEvents.push(t)}M.chrome&&M.chrome_version==102&&e.scrollDOM.addEventListener("wheel",()=>{this.chromeScrollHack<0?e.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout(()=>{this.chromeScrollHack=-1,e.contentDOM.style.pointerEvents=""},100)},{passive:!0}),this.notifiedFocused=e.hasFocus,M.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e,t){var i;let s;this.customHandlers=[];for(let r of t)if(s=(i=r.update(e).spec)===null||i===void 0?void 0:i.domEventHandlers){this.customHandlers.push({plugin:r.value,handlers:s});for(let o in s)this.registeredEvents.indexOf(o)<0&&o!="scroll"&&(this.registeredEvents.push(o),e.contentDOM.addEventListener(o,l=>{!Eo(e,l)||this.runCustomHandlers(o,e,l)&&l.preventDefault()}))}}runCustomHandlers(e,t,i){for(let s of this.customHandlers){let r=s.handlers[e];if(r)try{if(r.call(s.plugin,i,t)||i.defaultPrevented)return!0}catch(o){We(t.state,o)}}return!1}runScrollHandlers(e,t){this.lastScrollTop=e.scrollDOM.scrollTop,this.lastScrollLeft=e.scrollDOM.scrollLeft;for(let i of this.customHandlers){let s=i.handlers.scroll;if(s)try{s.call(i.plugin,t,e)}catch(r){We(e.state,r)}}}keydown(e,t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&Date.now()s.keyCode==t.keyCode))&&!t.ctrlKey||nu.indexOf(t.key)>-1&&t.ctrlKey&&!t.shiftKey)?(this.pendingIOSKey=i||t,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let t=this.pendingIOSKey;return t?(this.pendingIOSKey=void 0,Gt(e.contentDOM,t.key,t.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:M.safari&&!M.ios&&Date.now()-this.compositionEndedAt<100?(this.compositionEndedAt=0,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const ah=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],nu="dthko",hh=[16,17,18,20,91,92,224,225];class su{constructor(e,t,i,s){this.view=e,this.style=i,this.mustSelect=s,this.lastEvent=t;let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(N.allowMultipleSelections)&&ru(e,t),this.dragMove=ou(e,t),this.dragging=lu(e,t)&&dh(t)==1?null:!1,this.dragging===!1&&(t.preventDefault(),this.select(t))}move(e){if(e.buttons==0)return this.destroy();this.dragging===!1&&this.select(this.lastEvent=e)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(e){let t=this.style.get(e,this.extend,this.multiple);(this.mustSelect||!t.eq(this.view.state.selection)||t.main.assoc!=this.view.state.selection.main.assoc)&&this.view.dispatch({selection:t,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function ru(n,e){let t=n.state.facet(qa);return t.length?t[0](e):M.mac?e.metaKey:e.ctrlKey}function ou(n,e){let t=n.state.facet($a);return t.length?t[0](e):M.mac?!e.altKey:!e.ctrlKey}function lu(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=Sn(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function Eo(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=K.get(t))&&i.ignoreEvent(e))return!1;return!0}const re=Object.create(null),tr=Object.create(null),ch=M.ie&&M.ie_version<15||M.ios&&M.webkit_version<604;function au(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),fh(n,t.value)},50)}function fh(n,e){let{state:t}=n,i,s=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(ir!=null&&t.selection.ranges.every(a=>a.empty)&&ir==r.toString()){let a=-1;i=t.changeByRange(h=>{let c=t.doc.lineAt(h.from);if(c.from==a)return{range:h};a=c.from;let f=t.toText((o?r.line(s++).text:e)+t.lineBreak);return{changes:{from:c.from,insert:f},range:w.cursor(h.from+f.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=t.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}re.keydown=(n,e)=>{n.inputState.setSelectionOrigin("select"),e.keyCode==27?n.inputState.lastEscPress=Date.now():hh.indexOf(e.keyCode)<0&&(n.inputState.lastEscPress=0)};re.touchstart=(n,e)=>{n.inputState.lastTouchTime=Date.now(),n.inputState.setSelectionOrigin("select.pointer")};re.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};tr.touchstart=tr.touchmove={passive:!0};re.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return;let t=null;for(let i of n.state.facet(Ka))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=fu(n,e)),t){let i=n.root.activeElement!=n.contentDOM;i&&n.observer.ignore(()=>Pa(n.contentDOM)),n.inputState.startMouseSelection(new su(n,e,t,i))}};function Ro(n,e,t,i){if(i==1)return w.cursor(e,t);if(i==2)return Gf(n.state,e,t);{let s=ke.find(n.docView,e),r=n.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return ln>=e.top&&n<=e.bottom,Lo=(n,e,t)=>uh(e,t)&&n>=t.left&&n<=t.right;function hu(n,e,t,i){let s=ke.find(n.docView,e);if(!s)return 1;let r=e-s.posAtStart;if(r==0)return 1;if(r==s.length)return-1;let o=s.coordsAt(r,-1);if(o&&Lo(t,i,o))return-1;let l=s.coordsAt(r,1);return l&&Lo(t,i,l)?1:o&&uh(i,o)?-1:1}function Io(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:t,bias:hu(n,t,e.clientX,e.clientY)}}const cu=M.ie&&M.ie_version<=11;let No=null,_o=0,Vo=0;function dh(n){if(!cu)return n.detail;let e=No,t=Vo;return No=n,Vo=Date.now(),_o=!e||t>Date.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(_o+1)%3:1}function fu(n,e){let t=Io(n,e),i=dh(e),s=n.state.selection,r=t,o=e;return{update(l){l.docChanged&&(t.pos=l.changes.mapPos(t.pos),s=s.map(l.changes),o=null)},get(l,a,h){let c;o&&l.clientX==o.clientX&&l.clientY==o.clientY?c=r:(c=r=Io(n,l),o=l);let f=Ro(n,c.pos,c.bias,i);if(t.pos!=c.pos&&!a){let u=Ro(n,t.pos,t.bias,i),d=Math.min(u.from,f.from),p=Math.max(u.to,f.to);f=d1&&s.ranges.some(u=>u.eq(f))?uu(s,f):h?s.addRange(f):w.create([f])}}}function uu(n,e){for(let t=0;;t++)if(n.ranges[t].eq(e))return w.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}re.dragstart=(n,e)=>{let{selection:{main:t}}=n.state,{mouseSelection:i}=n.inputState;i&&(i.dragging=t),e.dataTransfer&&(e.dataTransfer.setData("Text",n.state.sliceDoc(t.from,t.to)),e.dataTransfer.effectAllowed="copyMove")};function Fo(n,e,t,i){if(!t)return;let s=n.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:r}=n.inputState,o=i&&r&&r.dragging&&r.dragMove?{from:r.dragging.from,to:r.dragging.to}:null,l={from:s,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"})}re.drop=(n,e)=>{if(!e.dataTransfer)return;if(n.state.readOnly)return e.preventDefault();let t=e.dataTransfer.files;if(t&&t.length){e.preventDefault();let i=Array(t.length),s=0,r=()=>{++s==t.length&&Fo(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}}else Fo(n,e,e.dataTransfer.getData("Text"),!0)};re.paste=(n,e)=>{if(n.state.readOnly)return e.preventDefault();n.observer.flush();let t=ch?null:e.clipboardData;t?(fh(n,t.getData("text/plain")),e.preventDefault()):au(n)};function du(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function pu(n){let e=[],t=[],i=!1;for(let s of n.selection.ranges)s.empty||(e.push(n.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:e.join(n.lineBreak),ranges:t,linewise:i}}let ir=null;re.copy=re.cut=(n,e)=>{let{text:t,ranges:i,linewise:s}=pu(n.state);if(!t&&!s)return;ir=s?t:null;let r=ch?null:e.clipboardData;r?(e.preventDefault(),r.clearData(),r.setData("text/plain",t)):du(n,t),e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"})};function ph(n){setTimeout(()=>{n.hasFocus!=n.inputState.notifiedFocused&&n.update([])},10)}re.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),ph(n)};re.blur=n=>{n.observer.clearSelectionRange(),ph(n)};re.compositionstart=re.compositionupdate=n=>{n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0)};re.compositionend=n=>{n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionFirstChange=null,M.chrome&&M.android&&n.observer.flushSoon(),setTimeout(()=>{n.inputState.composing<0&&n.docView.compositionDeco.size&&n.update([])},50)};re.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};re.beforeinput=(n,e)=>{var t;let i;if(M.chrome&&M.android&&(i=ah.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((t=window.visualViewport)===null||t===void 0?void 0:t.height)||0;setTimeout(()=>{var r;(((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0)>s+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}};const Ho=["pre-wrap","normal","pre-line","break-spaces"];class mu{constructor(){this.doc=_.empty,this.lineWrapping=!1,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength)),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Ho.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i-1,l=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=t,this.charWidth=i,this.lineLength=s,l){this.heightSamples={};for(let a=0;a0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,t){this.height!=t&&(Math.abs(this.height-t)>mn&&(e.heightChanged=!0),this.height=t)}replace(e,t,i){return ve.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,s){let r=this;for(let o=s.length-1;o>=0;o--){let{fromA:l,toA:a,fromB:h,toB:c}=s[o],f=r.lineAt(l,q.ByPosNoHeight,t,0,0),u=f.to>=a?f:r.lineAt(a,q.ByPosNoHeight,t,0,0);for(c+=u.to-a,a=u.to;o>0&&f.from<=s[o-1].toA;)l=s[o-1].fromA,h=s[o-1].fromB,o--,lr*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.blockAt(0,i,s,r))}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more&&this.setHeight(e,s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class De extends mh{constructor(e,t){super(e,t,z.Text),this.collapsed=0,this.widgetHeight=0}replace(e,t,i){let s=i[0];return i.length==1&&(s instanceof De||s instanceof le&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof le?s=new De(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):ve.of(i)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more?this.setHeight(e,s.heights[s.index++]):(i||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class le extends ve{constructor(e){super(e,0)}lines(e,t){let i=e.lineAt(t).number,s=e.lineAt(t+this.length).number;return{firstLine:i,lastLine:s,lineHeight:this.height/(s-i+1)}}blockAt(e,t,i,s){let{firstLine:r,lastLine:o,lineHeight:l}=this.lines(t,s),a=Math.max(0,Math.min(o-r,Math.floor((e-i)/l))),{from:h,length:c}=t.line(r+a);return new pt(h,c,i+l*a,l,z.Text)}lineAt(e,t,i,s,r){if(t==q.ByHeight)return this.blockAt(e,i,s,r);if(t==q.ByPosNoHeight){let{from:f,to:u}=i.lineAt(e);return new pt(f,u-f,0,0,z.Text)}let{firstLine:o,lineHeight:l}=this.lines(i,r),{from:a,length:h,number:c}=i.lineAt(e);return new pt(a,h,s+l*(c-o),l,z.Text)}forEachLine(e,t,i,s,r,o){let{firstLine:l,lineHeight:a}=this.lines(i,r);for(let h=Math.max(e,r),c=Math.min(r+this.length,t);h<=c;){let f=i.lineAt(h);h==e&&(s+=a*(f.number-l)),o(new pt(f.from,f.length,s,a,z.Text)),s+=a,h=f.to+1}}replace(e,t,i){let s=this.length-t;if(s>0){let r=i[i.length-1];r instanceof le?i[i.length-1]=new le(r.length+s):i.push(null,new le(s-1))}if(e>0){let r=i[0];r instanceof le?i[0]=new le(e+r.length):i.unshift(new le(e-1),null)}return ve.of(i)}decomposeLeft(e,t){t.push(new le(e-1),null)}decomposeRight(e,t){t.push(null,new le(this.length-e-1))}updateHeight(e,t=0,i=!1,s){let r=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],l=Math.max(t,s.from),a=-1,h=e.heightChanged;for(s.from>t&&o.push(new le(s.from-t-1).updateHeight(e,t));l<=r&&s.more;){let f=e.doc.lineAt(l).length;o.length&&o.push(null);let u=s.heights[s.index++];a==-1?a=u:Math.abs(u-a)>=mn&&(a=-2);let d=new De(f,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new le(r-l).updateHeight(e,l));let c=ve.of(o);return e.heightChanged=h||a<0||Math.abs(c.height-this.height)>=mn||Math.abs(a-this.lines(e.doc,t).lineHeight)>=mn,c}else(i||this.outdated)&&(this.setHeight(e,e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class yu extends ve{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,s){let r=i+this.left.height;return el))return h;let c=t==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,c,i,o,l)):this.left.lineAt(l,c,i,s,r).join(h)}forEachLine(e,t,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);e=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let s=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&Wo(r,o-1),t=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e2*t.size||t.size>2*e.size?ve.of(this.break?[e,null,t]:[e,t]):(this.left=e,this.right=t,this.height=e.height+t.height,this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,s){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return s&&s.from<=t+r.length&&s.more?a=r=r.updateHeight(e,t,i,s):r.updateHeight(e,t,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(e,l,i,s):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Wo(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof le&&(i=n[e+1])instanceof le&&n.splice(e-1,3,new le(t.length+1+i.length))}const bu=5;class Pr{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof De?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new De(i-this.pos,-1)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e=bu)&&this.addLineDeco(s,r)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new De(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let i=new le(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof De)return e;let t=new De(0,-1);return this.nodes.push(t),t}addBlock(e){this.enterLine(),e.type==z.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,e.type!=z.WidgetBefore&&(this.covering=e)}addLineDeco(e,t){let i=this.ensureLine();i.length+=t,i.collapsed+=t,i.widgetHeight=Math.max(i.widgetHeight,e),this.writtenTo=this.pos=this.pos+t}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof De)&&!this.isCovered?this.nodes.push(new De(0,-1)):(this.writtenToc.clientHeight||c.scrollWidth>c.clientWidth)&&f.overflow!="visible"){let u=c.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=h==n.parentNode?u.bottom:Math.min(a,u.bottom)}h=f.position=="absolute"||f.position=="fixed"?c.offsetParent:c.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function xu(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}class ls{constructor(e,t,i){this.from=e,this.to=t,this.size=i}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;itypeof t!="function"),this.heightMap=ve.empty().applyChanges(this.stateDeco,_.empty,this.heightOracle.setDoc(e.doc),[new et(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=E.set(this.lineGaps.map(t=>t.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let s=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new Yi(r,o))}}this.viewports=e.sort((i,s)=>i.from-s.from),this.scaler=this.heightMap.height<=7e6?jo:new Mu(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:wi(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Ri).filter(h=>typeof h!="function");let s=e.changedRanges,r=et.extendWithRanges(s,wu(i,this.stateDeco,e?e.changes:ne.empty(this.state.doc.length))),o=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),this.heightMap.height!=o&&(e.flags|=2);let l=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let a=!e.changes.empty||e.flags&2||l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,this.updateForViewport(),a&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>2e3<<1)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Ya)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,i=window.getComputedStyle(t),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?X.RTL:X.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=o||this.mustMeasureContent||this.contentDOMHeight!=t.clientHeight;this.contentDOMHeight=t.clientHeight,this.mustMeasureContent=!1;let a=0,h=0,c=parseInt(i.paddingTop)||0,f=parseInt(i.paddingBottom)||0;(this.paddingTop!=c||this.paddingBottom!=f)&&(this.paddingTop=c,this.paddingBottom=f,a|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,a|=8);let u=(this.printing?xu:vu)(t,this.paddingTop),d=u.top-this.pixelViewport.top,p=u.bottom-this.pixelViewport.bottom;this.pixelViewport=u;let g=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(g!=this.inView&&(this.inView=g,g&&(l=!0)),!this.inView&&!this.scrollTarget)return 0;let y=t.clientWidth;if((this.contentDOMWidth!=y||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=y,this.editorHeight=e.scrollDOM.clientHeight,a|=8),l){let v=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(v)&&(o=!0),o||s.lineWrapping&&Math.abs(y-this.contentDOMWidth)>s.charWidth){let{lineHeight:x,charWidth:S}=e.docView.measureTextSize();o=x>0&&s.refresh(r,x,S,y/S,v),o&&(e.docView.minWidth=0,a|=8)}d>0&&p>0?h=Math.max(d,p):d<0&&p<0&&(h=Math.min(d,p)),s.heightChanged=!1;for(let x of this.viewports){let S=x.from==this.viewport.from?v:e.docView.measureVisibleLineHeights(x);this.heightMap=o?ve.empty().applyChanges(this.stateDeco,_.empty,this.heightOracle,[new et(0,0,0,e.state.doc.length)]):this.heightMap.updateHeight(s,0,o,new gu(x.from,S))}s.heightChanged&&(a|=2)}let b=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return b&&(this.viewport=this.getViewport(h,this.scrollTarget)),this.updateForViewport(),(a&2||b)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>2e3<<1)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),a|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),a}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.state.doc,{visibleTop:o,visibleBottom:l}=this,a=new Yi(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(ha.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),f=s.lineAt(h,q.ByPos,r,0,0),u;t.y=="center"?u=(f.top+f.bottom)/2-c/2:t.y=="start"||t.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=X.LTR&&!i)return[];let l=[],a=(h,c,f,u)=>{if(c-hh&&yy.from>=f.from&&y.to<=f.to&&Math.abs(y.from-h)y.fromb));if(!g){if(cy.from<=c&&y.to>=c)){let y=t.moveToLineBoundary(w.cursor(c),!1,!0).head;y>h&&(c=y)}g=new ls(h,c,this.gapSize(f,h,c,u))}l.push(g)};for(let h of this.viewportLines){if(h.lengthh.from&&a(h.from,u,h,c),dt.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let t=[];F.spans(e,this.viewport.from,this.viewport.to,{span(s,r){t.push({from:s,to:r})},point(){}},20);let i=t.length!=this.visibleRanges.length||this.visibleRanges.some((s,r)=>s.from!=t[r].from||s.to!=t[r].to);return this.visibleRanges=t,i?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||wi(this.heightMap.lineAt(e,q.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(e){return wi(this.heightMap.lineAt(this.scaler.fromDOM(e),q.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(e){return wi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Yi{constructor(e,t){this.from=e,this.to=t}}function Cu(n,e,t){let i=[],s=n,r=0;return F.spans(t,n,e,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(i<=l)return r+i;i-=l}}function Zi(n,e){let t=0;for(let{from:i,to:s}of n.ranges){if(e<=s){t+=e-i;break}t+=s-i}return t/n.total}function Au(n,e){for(let t of n)if(e(t))return t}const jo={toDOM(n){return n},fromDOM(n){return n},scale:1};class Mu{constructor(e,t,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,q.ByPos,e,0,0).top,c=t.lineAt(a,q.ByPos,e,0,0).bottom;return s+=c-h,{from:l,to:a,top:h,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,s=0;;t++){let r=twi(s,e)):n.type)}const Qi=D.define({combine:n=>n.join(" ")}),nr=D.define({combine:n=>n.indexOf(!0)>-1}),sr=yt.newName(),gh=yt.newName(),yh=yt.newName(),bh={"&light":"."+gh,"&dark":"."+yh};function rr(n,e,t){return new yt(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):n+" "+i}})}const Du=rr("."+sr,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 4px"},".cm-selectionLayer":{zIndex:-1,contain:"size style"},".cm-selectionBackground":{position:"absolute"},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{zIndex:100,contain:"size style",pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{position:"absolute",borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},bh);class Tu{constructor(e,t,i,s){this.typeOver=s,this.bounds=null,this.text="";let{impreciseHead:r,impreciseAnchor:o}=e.docView;if(t>-1&&!e.state.readOnly&&(this.bounds=e.docView.domBoundsAround(t,i,0))){let l=r||o?[]:Bu(e),a=new sh(l,e.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=Pu(l,this.bounds.from)}else{let l=e.observer.selectionRange,a=r&&r.node==l.focusNode&&r.offset==l.focusOffset||!Xt(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),h=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Xt(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset);this.newSel=w.single(h,a)}}}function wh(n,e){let t,{newSel:i}=e,s=n.state.selection.main;if(e.bounds){let{from:r,to:o}=e.bounds,l=s.from,a=null;(n.inputState.lastKeyCode===8&&n.inputState.lastKeyTime>Date.now()-100||M.android&&e.text.length=s.from&&t.to<=s.to&&(t.from!=s.from||t.to!=s.to)&&s.to-s.from-(t.to-t.from)<=4?t={from:s.from,to:s.to,insert:n.state.doc.slice(s.from,t.from).append(t.insert).append(n.state.doc.slice(t.to,s.to))}:(M.mac||M.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())?(i&&t.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:_.of([" "])}):M.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:_.of([" "])}),t){let r=n.state;if(M.ios&&n.inputState.flushIOSKey(n)||M.android&&(t.from==s.from&&t.to==s.to&&t.insert.length==1&&t.insert.lines==2&&Gt(n.contentDOM,"Enter",13)||t.from==s.from-1&&t.to==s.to&&t.insert.length==0&&Gt(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Gt(n.contentDOM,"Delete",46)))return!0;let o=t.insert.toString();if(n.state.facet(Ga).some(h=>h(n,t.from,t.to,o)))return!0;n.inputState.composing>=0&&n.inputState.composing++;let l;if(t.from>=s.from&&t.to<=s.to&&t.to-t.from>=(s.to-s.from)/3&&(!i||i.main.empty&&i.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let h=s.fromt.to?r.sliceDoc(t.to,s.to):"";l=r.replaceSelection(n.state.toText(h+t.insert.sliceString(0,void 0,n.state.lineBreak)+c))}else{let h=r.changes(t),c=i&&!r.selection.main.eq(i.main)&&i.main.to<=h.newLength?i.main:void 0;if(r.selection.ranges.length>1&&n.inputState.composing>=0&&t.to<=s.to&&t.to>=s.to-10){let f=n.state.sliceDoc(t.from,t.to),u=rh(n)||n.state.doc.lineAt(s.head),d=s.to-t.to,p=s.to-s.from;l=r.changeByRange(g=>{if(g.from==s.from&&g.to==s.to)return{changes:h,range:c||g.map(h)};let y=g.to-d,b=y-f.length;if(g.to-g.from!=p||n.state.sliceDoc(b,y)!=f||u&&g.to>=u.from&&g.from<=u.to)return{range:g};let v=r.changes({from:b,to:y,insert:t.insert}),x=g.to-s.to;return{changes:v,range:c?w.range(Math.max(0,c.anchor+x),Math.max(0,c.head+x)):g.map(v)}})}else l={changes:h,selection:c&&r.selection.replaceRange(c)}}let a="input.type";return n.composing&&(a+=".compose",n.inputState.compositionFirstChange&&(a+=".start",n.inputState.compositionFirstChange=!1)),n.dispatch(l,{scrollIntoView:!0,userEvent:a}),!0}else if(i&&!i.main.eq(s)){let r=!1,o="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(r=!0),o=n.inputState.lastSelectionOrigin),n.dispatch({selection:i,scrollIntoView:r,userEvent:o}),!0}else return!1}function Ou(n,e,t,i){let s=Math.min(n.length,e.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}return o=o?r-t:0,l=r+(l-o),o=r):l=l?r-t:0,o=r+(o-l),l=r),{from:r,toA:o,toB:l}}function Bu(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return t&&(e.push(new Co(t,i)),(s!=t||r!=i)&&e.push(new Co(s,r))),e}function Pu(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t>-1&&i>-1?w.single(t+e,i+e):null}const Eu={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},as=M.ie&&M.ie_version<=11;class Ru{constructor(e){this.view=e,this.active=!1,this.selectionRange=new Mf,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(M.ie&&M.ie_version<=11||M.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),as&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),typeof ResizeObserver=="function"&&(this.resize=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runScrollHandlers(this.view,e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(jn)?i.root.activeElement!=this.dom:!pn(i.dom,s))return;let r=s.anchorNode&&i.docView.nearest(s.anchorNode);if(r&&r.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(M.ie&&M.ie_version<=11||M.android&&M.chrome)&&!i.state.selection.main.empty&&s.focusNode&&Cn(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=M.safari&&e.root.nodeType==11&&Sf(this.dom.ownerDocument)==this.dom&&Lu(this.view)||Sn(e.root);if(!t||this.selectionRange.eq(t))return!1;let i=pn(this.dom,t);return i&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),!this.flush()&&r.force&&Gt(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}processRecords(){let e=this.queue;for(let r of this.observer.takeRecords())e.push(r);e.length&&(this.queue=[]);let t=-1,i=-1,s=!1;for(let r of e){let o=this.readMutation(r);!o||(o.typeOver&&(s=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:s}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),s=this.selectionChanged&&pn(this.dom,this.selectionRange);return e<0&&!s?null:(e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1,new Tu(this.view,e,t,i))}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return!1;let i=this.view.state,s=wh(this.view,t);return this.view.state==i&&this.view.update([]),s}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty(e.type=="attributes"),e.type=="attributes"&&(t.dirty|=4),e.type=="childList"){let i=qo(t,e.previousSibling||e.target.previousSibling,-1),s=qo(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resize)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function qo(n,e,t){for(;e;){let i=K.get(e);if(i&&i.parent==n)return i;let s=e.parentNode;e=s!=n.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function Lu(n){let e=null;function t(a){a.preventDefault(),a.stopImmediatePropagation(),e=a.getTargetRanges()[0]}if(n.contentDOM.addEventListener("beforeinput",t,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",t,!0),!e)return null;let i=e.startContainer,s=e.startOffset,r=e.endContainer,o=e.endOffset,l=n.docView.domAtPos(n.state.selection.main.anchor);return Cn(l.node,l.offset,r,o)&&([i,s,r,o]=[r,o,i,s]),{anchorNode:i,anchorOffset:s,focusNode:r,focusOffset:o}}class O{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(t=>this.update([t])),this.dispatch=this.dispatch.bind(this),this._root=e.root||Df(e.parent)||document,this.viewState=new zo(e.state||N.create(e)),this.plugins=this.state.facet(yi).map(t=>new ss(t));for(let t of this.plugins)t.update(this);this.observer=new Ru(this),this.inputState=new iu(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new Ao(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}dispatch(...e){this._dispatch(e.length==1&&e[0]instanceof se?e[0]:this.state.update(...e))}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,s,r=this.state;for(let h of e){if(h.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=h.state}if(this.destroyed){this.viewState.state=r;return}let o=this.observer.delayedAndroidKey,l=null;if(o?(this.observer.clearDelayedAndroidKey(),l=this.observer.readChange(),(l&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(l=null)):this.observer.clear(),r.facet(N.phrases)!=this.state.facet(N.phrases))return this.setState(r);s=Dn.create(this,r,e);let a=this.viewState.scrollTarget;try{this.updateState=2;for(let h of e){if(a&&(a=a.map(h.changes)),h.scrollIntoView){let{main:c}=h.state.selection;a=new Mn(c.empty?c:w.cursor(c.head,c.head>c.anchor?-1:1))}for(let c of h.effects)c.is(xo)&&(a=c.value)}this.viewState.update(s,a),this.bidiCache=Tn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(bi)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(h=>h.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Qi)!=s.state.facet(Qi)&&(this.viewState.mustMeasureContent=!0),(t||i||a||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!s.empty)for(let h of this.state.facet(Xs))h(s);l&&!wh(this,l)&&o.force&&Gt(this.contentDOM,o.key,o.keyCode)}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new zo(e),this.plugins=e.facet(yi).map(i=>new ss(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView=new Ao(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(yi),i=e.state.facet(yi);if(t!=i){let s=[];for(let r of i){let o=t.indexOf(r);if(o<0)s.push(new ss(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,{scrollHeight:i,scrollTop:s,clientHeight:r}=this.scrollDOM,o=s>i-r-4?i:s;try{for(let l=0;;l++){this.updateState=1;let a=this.viewport,h=this.viewState.lineBlockAtHeight(o),c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let f=[];c&4||([this.measureRequests,f]=[f,this.measureRequests]);let u=f.map(y=>{try{return y.read(this)}catch(b){return We(this.state,b),$o}}),d=Dn.create(this,this.state,[]),p=!1,g=!1;d.flags|=c,t?t.flags|=c:t=d,this.updateState=2,d.empty||(this.updatePlugins(d),this.inputState.update(d),this.updateAttrs(),p=this.docView.update(d));for(let y=0;y1||y<-1)&&(this.scrollDOM.scrollTop+=y,g=!0)}if(p&&this.docView.updateSelection(!0),this.viewport.from==a.from&&this.viewport.to==a.to&&!g&&this.measureRequests.length==0)break}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Xs))l(t)}get themeClasses(){return sr+" "+(this.state.facet(nr)?yh:gh)+" "+this.state.facet(Qi)}updateAttrs(){let e=Ko(this,Xa,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(jn)?"true":"false",class:"cm-content",style:`${M.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Ko(this,Za,t);let i=this.observer.ignore(()=>{let s=Js(this.contentDOM,this.contentAttrs,t),r=Js(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let s of i.effects)if(s.is(O.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(bi),yt.mount(this.root,this.styleModules.concat(Du).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(e.key!=null){for(let t=0;ti.spec==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return os(this,e,Po(this,e,t,i))}moveByGroup(e,t){return os(this,e,Po(this,e,t,i=>eu(this,e.head,i)))}moveToLineBoundary(e,t,i=!0){return Qf(this,e,t,i)}moveVertically(e,t,i){return os(this,e,tu(this,e,t,i))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),lh(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[Jt.find(r,e-s.from,-1,t)];return Dr(i,o.dir==X.LTR==t>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Ja)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Iu)return ih(e.length);let t=this.textDirectionAt(e.from);for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t)return s.order;let i=Ff(e.text,t);return this.bidiCache.push(new Tn(e.from,e.to,t,i)),i}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||M.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Pa(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return xo.of(new Mn(typeof e=="number"?w.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}static domEventHandlers(e){return ye.define(()=>({}),{eventHandlers:e})}static theme(e,t){let i=yt.newName(),s=[Qi.of(i),bi.of(rr(`.${i}`,e))];return t&&t.dark&&s.push(nr.of(!0)),s}static baseTheme(e){return Fi.lowest(bi.of(rr("."+sr,e,bh)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),s=i&&K.get(i)||K.get(e);return((t=s?.rootView)===null||t===void 0?void 0:t.view)||null}}O.styleModule=bi;O.inputHandler=Ga;O.perLineTextDirection=Ja;O.exceptionSink=Ua;O.updateListener=Xs;O.editable=jn;O.mouseSelectionStyle=Ka;O.dragMovesSelection=$a;O.clickAddsSelectionRange=qa;O.decorations=Ri;O.atomicRanges=Qa;O.scrollMargins=eh;O.darkTheme=nr;O.contentAttributes=Za;O.editorAttributes=Xa;O.lineWrapping=O.contentAttributes.of({class:"cm-lineWrapping"});O.announce=R.define();const Iu=4096,$o={};class Tn{constructor(e,t,i,s){this.from=e,this.to=t,this.dir=i,this.order=s}static update(e,t){if(t.empty)return e;let i=[],s=e.length?e[e.length-1].dir:X.LTR;for(let r=Math.max(0,e.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&Gs(o,t)}return t}const Nu=M.mac?"mac":M.windows?"win":M.linux?"linux":"key";function _u(n,e){const t=n.split(/-(?!$)/);let i=t[t.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),t}let ct=null;const Hu=4e3;function Wu(n,e=Nu){let t=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h)=>{var c,f;let u=t[o]||(t[o]=Object.create(null)),d=l.split(/ (?!$)/).map(y=>_u(y,e));for(let y=1;y{let x=ct={view:v,prefix:b,scope:o};return setTimeout(()=>{ct==x&&(ct=null)},Hu),!0}]})}let p=d.join(" ");s(p,!1);let g=u[p]||(u[p]={preventDefault:!1,run:((f=(c=u._any)===null||c===void 0?void 0:c.run)===null||f===void 0?void 0:f.slice())||[]});a&&g.run.push(a),h&&(g.preventDefault=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let c=t[h]||(t[h]=Object.create(null));c._any||(c._any={preventDefault:!1,run:[]});for(let f in c)c[f].run.push(o.any)}let a=o[e]||o.key;if(!!a)for(let h of l)r(h,a,o.run,o.preventDefault),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault)}return t}function zu(n,e,t,i){let s=xf(e),r=me(s,0),o=Ee(r)==s.length&&s!=" ",l="",a=!1;ct&&ct.view==t&&ct.scope==i&&(l=ct.prefix+" ",(a=hh.indexOf(e.keyCode)<0)&&(ct=null));let h=new Set,c=p=>{if(p){for(let g of p.run)if(!h.has(g)&&(h.add(g),g(t,e)))return!0;p.preventDefault&&(a=!0)}return!1},f=n[i],u,d;if(f){if(c(f[l+en(s,e,!o)]))return!0;if(o&&(e.shiftKey||e.altKey||e.metaKey||r>127)&&(u=bt[e.keyCode])&&u!=s){if(c(f[l+en(u,e,!0)]))return!0;if(e.shiftKey&&(d=Bi[e.keyCode])!=s&&d!=u&&c(f[l+en(d,e,!1)]))return!0}else if(o&&e.shiftKey&&c(f[l+en(s,e,!0)]))return!0;if(c(f._any))return!0}return a}const kh=!M.ios,ki=D.define({combine(n){return Vt(n,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function ju(n={}){return[ki.of(n),qu,$u,Ya.of(!0)]}class vh{constructor(e,t,i,s,r){this.left=e,this.top=t,this.width=i,this.height=s,this.className=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width>=0&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}}const qu=ye.fromClass(class{constructor(n){this.view=n,this.rangePieces=[],this.cursors=[],this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.selectionLayer=n.scrollDOM.appendChild(document.createElement("div")),this.selectionLayer.className="cm-selectionLayer",this.selectionLayer.setAttribute("aria-hidden","true"),this.cursorLayer=n.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),n.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.facet(ki).cursorBlinkRate+"ms"}update(n){let e=n.startState.facet(ki)!=n.state.facet(ki);(e||n.selectionSet||n.geometryChanged||n.viewportChanged)&&this.view.requestMeasure(this.measureReq),n.transactions.some(t=>t.scrollIntoView)&&(this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),e&&this.setBlinkRate()}readPos(){let{state:n}=this.view,e=n.facet(ki),t=n.selection.ranges.map(s=>s.empty?[]:Ku(this.view,s)).reduce((s,r)=>s.concat(r)),i=[];for(let s of n.selection.ranges){let r=s==n.selection.main;if(s.empty?!r||kh:e.drawRangeCursor){let o=Uu(this.view,s,r);o&&i.push(o)}}return{rangePieces:t,cursors:i}}drawSel({rangePieces:n,cursors:e}){if(n.length!=this.rangePieces.length||n.some((t,i)=>!t.eq(this.rangePieces[i]))){this.selectionLayer.textContent="";for(let t of n)this.selectionLayer.appendChild(t.draw());this.rangePieces=n}if(e.length!=this.cursors.length||e.some((t,i)=>!t.eq(this.cursors[i]))){let t=this.cursorLayer.children;if(t.length!==e.length){this.cursorLayer.textContent="";for(const i of e)this.cursorLayer.appendChild(i.draw())}else e.forEach((i,s)=>i.adjust(t[s]));this.cursors=e}}destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()}}),xh={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};kh&&(xh[".cm-line"].caretColor="transparent !important");const $u=Fi.highest(O.theme(xh));function Sh(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==X.LTR?e.left:e.right-n.scrollDOM.clientWidth)-n.scrollDOM.scrollLeft,top:e.top-n.scrollDOM.scrollTop}}function Go(n,e,t){let i=w.cursor(e);return{from:Math.max(t.from,n.moveToLineBoundary(i,!1,!0).from),to:Math.min(t.to,n.moveToLineBoundary(i,!0,!0).from),type:z.Text}}function Jo(n,e){let t=n.lineBlockAt(e);if(Array.isArray(t.type)){for(let i of t.type)if(i.to>e||i.to==e&&(i.to==t.to||i.type==z.Text))return i}return t}function Ku(n,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let t=Math.max(e.from,n.viewport.from),i=Math.min(e.to,n.viewport.to),s=n.textDirection==X.LTR,r=n.contentDOM,o=r.getBoundingClientRect(),l=Sh(n),a=window.getComputedStyle(r.firstChild),h=o.left+parseInt(a.paddingLeft)+Math.min(0,parseInt(a.textIndent)),c=o.right-parseInt(a.paddingRight),f=Jo(n,t),u=Jo(n,i),d=f.type==z.Text?f:null,p=u.type==z.Text?u:null;if(n.lineWrapping&&(d&&(d=Go(n,t,d)),p&&(p=Go(n,i,p))),d&&p&&d.from==p.from)return y(b(e.from,e.to,d));{let x=d?b(e.from,null,d):v(f,!1),S=p?b(null,e.to,p):v(u,!0),A=[];return(d||f).to<(p||u).from-1?A.push(g(h,x.bottom,c,S.top)):x.bottomP&&G.from=ie)break;H>C&&I(Math.max(oe,C),x==null&&oe<=P,Math.min(H,ie),S==null&&H>=V,Z.dir)}if(C=J.to+1,C>=ie)break}return U.length==0&&I(P,x==null,V,S==null,n.textDirection),{top:T,bottom:B,horizontal:U}}function v(x,S){let A=o.top+(S?x.top:x.bottom);return{top:A,bottom:A,horizontal:[]}}}function Uu(n,e,t){let i=n.coordsAtPos(e.head,e.assoc||1);if(!i)return null;let s=Sh(n);return new vh(i.left-s.left,i.top-s.top,-1,i.bottom-i.top,t?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary")}function Yo(n,e,t,i,s){e.lastIndex=0;for(let r=n.iterRange(t,i),o=t,l;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;l=e.exec(r.value);)s(o+l.index,l)}function Gu(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let i=[];for(let{from:s,to:r}of t)s=Math.max(n.state.doc.lineAt(s).from,s-e),r=Math.min(n.state.doc.lineAt(r).to,r+e),i.length&&i[i.length-1].to>=s?i[i.length-1].to=r:i.push({from:s,to:r});return i}class Ju{constructor(e){const{regexp:t,decoration:i,decorate:s,boundary:r,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,s)this.addMatch=(l,a,h,c)=>s(c,h,h+l[0].length,l,a);else if(typeof i=="function")this.addMatch=(l,a,h,c)=>{let f=i(l,a,h);f&&c(h,h+l[0].length,f)};else if(i)this.addMatch=(l,a,h,c)=>c(h,h+l[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(e){let t=new Et,i=t.add.bind(t);for(let{from:s,to:r}of Gu(e,this.maxLength))Yo(e.state.doc,this.regexp,s,r,(o,l)=>this.addMatch(l,e,o,i));return t.finish()}updateDeco(e,t){let i=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((r,o,l,a)=>{a>e.view.viewport.from&&l1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,t.map(e.changes),i,s):t}updateRange(e,t,i,s){for(let r of e.visibleRanges){let o=Math.max(r.from,i),l=Math.min(r.to,s);if(l>o){let a=e.state.doc.lineAt(o),h=a.toa.from;o--)if(this.boundary.test(a.text[o-1-a.from])){c=o;break}for(;lu.push(b.range(g,y));if(a==h)for(this.regexp.lastIndex=c-a.from;(d=this.regexp.exec(a.text))&&d.indexthis.addMatch(y,e,g,p));t=t.update({filterFrom:c,filterTo:f,filter:(g,y)=>gf,add:u})}}return t}}const or=/x/.unicode!=null?"gu":"g",Yu=new RegExp(`[\0-\b +-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,or),Xu={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let hs=null;function Zu(){var n;if(hs==null&&typeof document<"u"&&document.body){let e=document.body.style;hs=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return hs||!1}const gn=D.define({combine(n){let e=Vt(n,{render:null,specialChars:Yu,addSpecialChars:null});return(e.replaceTabs=!Zu())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,or)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,or)),e}});function Qu(n={}){return[gn.of(n),ed()]}let Xo=null;function ed(){return Xo||(Xo=ye.fromClass(class{constructor(n){this.view=n,this.decorations=E.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(gn)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new Ju({regexp:n.specialChars,decoration:(e,t,i)=>{let{doc:s}=t.state,r=me(e[0],0);if(r==9){let o=s.lineAt(i),l=t.state.tabSize,a=Hi(o.text,l,i-o.from);return E.replace({widget:new sd((l-a%l)*this.view.defaultCharacterWidth)})}return this.decorationCache[r]||(this.decorationCache[r]=E.replace({widget:new nd(n,r)}))},boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(gn);n.startState.facet(gn)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:n=>n.decorations}))}const td="\u2022";function id(n){return n>=32?td:n==10?"\u2424":String.fromCharCode(9216+n)}class nd extends it{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=id(this.code),i=e.state.phrase("Control character")+" "+(Xu[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,i,t);if(s)return s;let r=document.createElement("span");return r.textContent=t,r.title=i,r.setAttribute("aria-label",i),r.className="cm-specialChar",r}ignoreEvent(){return!1}}class sd extends it{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}class rd extends it{constructor(e){super(),this.content=e}toDOM(){let e=document.createElement("span");return e.className="cm-placeholder",e.style.pointerEvents="none",e.appendChild(typeof this.content=="string"?document.createTextNode(this.content):this.content),typeof this.content=="string"?e.setAttribute("aria-label","placeholder "+this.content):e.setAttribute("aria-hidden","true"),e}ignoreEvent(){return!1}}function od(n){return ye.fromClass(class{constructor(e){this.view=e,this.placeholder=E.set([E.widget({widget:new rd(n),side:1}).range(0)])}get decorations(){return this.view.state.doc.length?E.none:this.placeholder}},{decorations:e=>e.decorations})}const lr=2e3;function ld(n,e,t){let i=Math.min(e.line,t.line),s=Math.max(e.line,t.line),r=[];if(e.off>lr||t.off>lr||e.col<0||t.col<0){let o=Math.min(e.off,t.off),l=Math.max(e.off,t.off);for(let a=i;a<=s;a++){let h=n.doc.line(a);h.length<=l&&r.push(w.range(h.from+o,h.to+l))}}else{let o=Math.min(e.col,t.col),l=Math.max(e.col,t.col);for(let a=i;a<=s;a++){let h=n.doc.line(a),c=Hs(h.text,o,n.tabSize,!0);if(c<0)r.push(w.cursor(h.to));else{let f=Hs(h.text,l,n.tabSize);r.push(w.range(h.from+c,h.from+f))}}}return r}function ad(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}function Zo(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),i=n.state.doc.lineAt(t),s=t-i.from,r=s>lr?-1:s==i.length?ad(n,e.clientX):Hi(i.text,n.state.tabSize,t-i.from);return{line:i.number,col:r,off:s}}function hd(n,e){let t=Zo(n,e),i=n.state.selection;return t?{update(s){if(s.docChanged){let r=s.changes.mapPos(s.startState.doc.line(t.line).from),o=s.state.doc.lineAt(r);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},i=i.map(s.changes)}},get(s,r,o){let l=Zo(n,s);if(!l)return i;let a=ld(n.state,t,l);return a.length?o?w.create(a.concat(i.ranges)):w.create(a):i}}:null}function cd(n){let e=n?.eventFilter||(t=>t.altKey&&t.button==0);return O.mouseSelectionStyle.of((t,i)=>e(i)?hd(t,i):null)}const fd={Alt:[18,n=>n.altKey],Control:[17,n=>n.ctrlKey],Shift:[16,n=>n.shiftKey],Meta:[91,n=>n.metaKey]},ud={style:"cursor: crosshair"};function dd(n={}){let[e,t]=fd[n.key||"Alt"],i=ye.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventHandlers:{keydown(s){this.set(s.keyCode==e||t(s))},keyup(s){(s.keyCode==e||!t(s))&&this.set(!1)},mousemove(s){this.set(t(s))}}});return[i,O.contentAttributes.of(s=>{var r;return!((r=s.plugin(i))===null||r===void 0)&&r.isDown?ud:null})]}const cs="-10000px";class Ch{constructor(e,t,i){this.facet=t,this.createTooltipView=i,this.input=e.state.facet(t),this.tooltips=this.input.filter(s=>s),this.tooltipViews=this.tooltips.map(i)}update(e){var t;let i=e.state.facet(this.facet),s=i.filter(o=>o);if(i===this.input){for(let o of this.tooltipViews)o.update&&o.update(e);return!1}let r=[];for(let o=0;o{var e,t,i;return{position:M.ios?"absolute":((e=n.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(s=>s.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((i=n.find(s=>s.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||pd}}}),Ah=ye.fromClass(class{constructor(n){this.view=n,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(fs);this.position=e.position,this.parent=e.parent,this.classes=n.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new Ch(n,Er,t=>this.createTooltip(t)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n);e&&this.observeIntersection();let t=e||n.geometryChanged,i=n.state.facet(fs);if(i.position!=this.position){this.position=i.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;t=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n){let e=n.create(this.view);if(e.dom.classList.add("cm-tooltip"),n.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let t=document.createElement("div");t.className="cm-tooltip-arrow",e.dom.appendChild(t)}return e.dom.style.position=this.position,e.dom.style.top=cs,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var n,e;this.view.win.removeEventListener("resize",this.measureSoon);for(let t of this.manager.tooltipViews)t.dom.remove(),(n=t.destroy)===null||n===void 0||n.call(t);(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=this.view.dom.getBoundingClientRect();return{editor:n,parent:this.parent?this.container.getBoundingClientRect():n,pos:this.manager.tooltips.map((e,t)=>{let i=this.manager.tooltipViews[t];return i.getCoords?i.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(fs).tooltipSpace(this.view)}}writeMeasure(n){let{editor:e,space:t}=n,i=[];for(let s=0;s=Math.min(e.bottom,t.bottom)||a.rightMath.min(e.right,t.right)+.1){l.style.top=cs;continue}let c=r.arrow?o.dom.querySelector(".cm-tooltip-arrow"):null,f=c?7:0,u=h.right-h.left,d=h.bottom-h.top,p=o.offset||gd,g=this.view.textDirection==X.LTR,y=h.width>t.right-t.left?g?t.left:t.right-h.width:g?Math.min(a.left-(c?14:0)+p.x,t.right-u):Math.max(t.left,a.left-u+(c?14:0)-p.x),b=!!r.above;!r.strictSide&&(b?a.top-(h.bottom-h.top)-p.yt.bottom)&&b==t.bottom-a.bottom>a.top-t.top&&(b=!b);let v=b?a.top-d-f-p.y:a.bottom+f+p.y,x=y+u;if(o.overlap!==!0)for(let S of i)S.lefty&&S.topv&&(v=b?S.top-d-2-f:S.bottom+f+2);this.position=="absolute"?(l.style.top=v-n.parent.top+"px",l.style.left=y-n.parent.left+"px"):(l.style.top=v+"px",l.style.left=y+"px"),c&&(c.style.left=`${a.left+(g?p.x:-p.x)-(y+14-7)}px`),o.overlap!==!0&&i.push({left:y,top:v,right:x,bottom:v+d}),l.classList.toggle("cm-tooltip-above",b),l.classList.toggle("cm-tooltip-below",!b),o.positioned&&o.positioned()}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let n of this.manager.tooltipViews)n.dom.style.top=cs}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),md=O.baseTheme({".cm-tooltip":{zIndex:100},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:`${7}px`,width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},".cm-tooltip-above &":{bottom:`-${7}px`,"&:before":{borderTop:`${7}px solid #bbb`},"&:after":{borderTop:`${7}px solid #f5f5f5`,bottom:"1px"}},".cm-tooltip-below &":{top:`-${7}px`,"&:before":{borderBottom:`${7}px solid #bbb`},"&:after":{borderBottom:`${7}px solid #f5f5f5`,top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),gd={x:0,y:0},Er=D.define({enables:[Ah,md]}),On=D.define();class Rr{constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Ch(e,On,t=>this.createHostedView(t))}static create(e){return new Rr(e)}createHostedView(e){let t=e.create(this.view);return t.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(t.dom),this.mounted&&t.mount&&t.mount(this.view),t}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned()}update(e){this.manager.update(e)}}const yd=Er.compute([On],n=>{let e=n.facet(On).filter(t=>t);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.filter(t=>t.end!=null).map(t=>t.end)),create:Rr.create,above:e[0].above,arrow:e.some(t=>t.arrow)}});class bd{constructor(e,t,i,s,r){this.view=e,this.source=t,this.field=i,this.setHover=s,this.hoverTime=r,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;ei.bottom||e.xi.right+this.view.defaultCharacterWidth)return;let s=this.view.bidiSpans(this.view.state.doc.lineAt(t)).find(l=>l.from<=t&&l.to>=t),r=s&&s.dir==X.RTL?-1:1,o=this.source(this.view,t,e.x{this.pending==l&&(this.pending=null,a&&this.view.dispatch({effects:this.setHover.of(a)}))},a=>We(this.view.state,a,"hover tooltip"))}else o&&this.view.dispatch({effects:this.setHover.of(o)})}mousemove(e){var t;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let i=this.active;if(i&&!wd(this.lastMove.target)||this.pending){let{pos:s}=i||this.pending,r=(t=i?.end)!==null&&t!==void 0?t:s;(s==r?this.view.posAtCoords(this.lastMove)!=s:!kd(this.view,s,r,e.clientX,e.clientY,6))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1,this.active&&this.view.dispatch({effects:this.setHover.of(null)})}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}function wd(n){for(let e=n;e;e=e.parentNode)if(e.nodeType==1&&e.classList.contains("cm-tooltip"))return!0;return!1}function kd(n,e,t,i,s,r){let o=document.createRange(),l=n.domAtPos(e),a=n.domAtPos(t);o.setEnd(a.node,a.offset),o.setStart(l.node,l.offset);let h=o.getClientRects();o.detach();for(let c=0;cOn.from(s)});return[i,ye.define(s=>new bd(s,n,i,t,e.hoverTime||300)),yd]}function xd(n,e){let t=n.plugin(Ah);if(!t)return null;let i=t.manager.tooltips.indexOf(e);return i<0?null:t.manager.tooltipViews[i]}const Sd=R.define(),Qo=D.define({combine(n){let e,t;for(let i of n)e=e||i.topContainer,t=t||i.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Cd(n,e){let t=n.plugin(Mh),i=t?t.specs.indexOf(e):-1;return i>-1?t.panels[i]:null}const Mh=ye.fromClass(class{constructor(n){this.input=n.state.facet(ar),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(Qo);this.top=new tn(n,!0,e.topContainer),this.bottom=new tn(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(Qo);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new tn(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new tn(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(ar);if(t!=this.input){let i=t.filter(a=>a),s=[],r=[],o=[],l=[];for(let a of i){let h=this.specs.indexOf(a),c;h<0?(c=a(n.view),l.push(c)):(c=this.panels[h],c.update&&c.update(n)),s.push(c),(c.top?r:o).push(c)}this.specs=i,this.panels=s,this.top.sync(r),this.bottom.sync(o);for(let a of l)a.dom.classList.add("cm-panel"),a.mount&&a.mount()}else for(let i of this.panels)i.update&&i.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:n=>O.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})});class tn{constructor(e,t,i){this.view=e,this.top=t,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=el(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=el(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function el(n){let e=n.nextSibling;return n.remove(),e}const ar=D.define({enables:Mh});class kt extends Pt{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}kt.prototype.elementClass="";kt.prototype.toDOM=void 0;kt.prototype.mapMode=he.TrackBefore;kt.prototype.startSide=kt.prototype.endSide=-1;kt.prototype.point=!0;const us=D.define(),Ad={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>F.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},Ci=D.define();function Md(n){return[Dh(),Ci.of(Object.assign(Object.assign({},Ad),n))]}const hr=D.define({combine:n=>n.some(e=>e)});function Dh(n){let e=[Dd];return n&&n.fixed===!1&&e.push(hr.of(!0)),e}const Dd=ye.fromClass(class{constructor(n){this.view=n,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=n.state.facet(Ci).map(e=>new il(n,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!n.state.facet(hr),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}n.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(hr)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&this.dom.remove();let t=F.iter(this.view.state.facet(us),this.view.viewport.from),i=[],s=this.gutters.map(r=>new Td(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks){let o;if(Array.isArray(r.type)){for(let l of r.type)if(l.type==z.Text){o=l;break}}else o=r.type==z.Text?r:void 0;if(!!o){i.length&&(i=[]),Th(t,i,r.from);for(let l of s)l.line(this.view,o,i)}}for(let r of s)r.finish();n&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(n){let e=n.startState.facet(Ci),t=n.state.facet(Ci),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(us),n.state.facet(us),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of t){let o=e.indexOf(r);o<0?s.push(new il(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove()}},{provide:n=>O.scrollMargins.of(e=>{let t=e.plugin(n);return!t||t.gutters.length==0||!t.fixed?null:e.textDirection==X.LTR?{left:t.dom.offsetWidth}:{right:t.dom.offsetWidth}})});function tl(n){return Array.isArray(n)?n:[n]}function Th(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}class Td{constructor(e,t,i){this.gutter=e,this.height=i,this.localMarkers=[],this.i=0,this.cursor=F.iter(e.markers,t.from)}line(e,t,i){this.localMarkers.length&&(this.localMarkers=[]),Th(this.cursor,this.localMarkers,t.from);let s=i.length?this.localMarkers.concat(i):this.localMarkers,r=this.gutter.config.lineMarker(e,t,s);r&&s.unshift(r);let o=this.gutter;if(s.length==0&&!o.config.renderEmptyElements)return;let l=t.top-this.height;if(this.i==o.elements.length){let a=new Oh(e,t.height,l,s);o.elements.push(a),o.dom.appendChild(a.dom)}else o.elements[this.i].update(e,t.height,l,s);this.height=t.bottom,this.i++}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}}class il{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,s=>{let r=e.lineBlockAtHeight(s.clientY-e.documentTop);t.domEventHandlers[i](e,r,s)&&s.preventDefault()});this.markers=tl(t.markers(e)),t.initialSpacer&&(this.spacer=new Oh(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=tl(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!F.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class Oh{constructor(e,t,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,s)}update(e,t,i,s){this.height!=t&&(this.dom.style.height=(this.height=t)+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Od(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}});class ds extends kt{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function ps(n,e){return n.state.facet(zt).formatNumber(e,n.state)}const Pd=Ci.compute([zt],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Bd)},lineMarker(e,t,i){return i.some(s=>s.toDOM)?null:new ds(ps(e,e.state.doc.lineAt(t.from).number))},lineMarkerChange:e=>e.startState.facet(zt)!=e.state.facet(zt),initialSpacer(e){return new ds(ps(e,nl(e.state.doc.lines)))},updateSpacer(e,t){let i=ps(t.view,nl(t.view.state.doc.lines));return i==e.number?e:new ds(i)},domEventHandlers:n.facet(zt).domEventHandlers}));function Ed(n={}){return[zt.of(n),Dh(),Pd]}function nl(n){let e=9;for(;e{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=xe.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}}L.closedBy=new L({deserialize:n=>n.split(" ")});L.openedBy=new L({deserialize:n=>n.split(" ")});L.group=new L({deserialize:n=>n.split(" ")});L.contextHash=new L({perNode:!0});L.lookAhead=new L({perNode:!0});L.mounted=new L({perNode:!0});class Id{constructor(e,t,i){this.tree=e,this.overlay=t,this.parser=i}}const Nd=Object.create(null);class xe{constructor(e,t,i,s=0){this.name=e,this.props=t,this.id=i,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):Nd,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new xe(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(L.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let s of i.split(" "))t[s]=e[i];return i=>{for(let s=i.prop(L.group),r=-1;r<(s?s.length:0);r++){let o=t[r<0?i.name:s[r]];if(o)return o}}}}xe.none=new xe("",Object.create(null),0,8);class Lr{constructor(e){this.types=e;for(let t=0;t=s&&(o.type.isAnonymous||t(o)!==!1)){if(o.firstChild())continue;l=!0}for(;l&&i&&!o.type.isAnonymous&&i(o),!o.nextSibling();){if(!o.parent())return;l=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:_r(xe.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,s)=>new j(this.type,t,i,s,this.propValues),e.makeTree||((t,i,s)=>new j(xe.none,t,i,s)))}static build(e){return Vd(e)}}j.empty=new j(xe.none,[],[],0);class Ir{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Ir(this.buffer,this.index)}}class Ft{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return xe.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,i){let s=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function Ph(n,e){let t=n.childBefore(e);for(;t;){let i=t.lastChild;if(!i||i.to!=t.to)break;i.type.isError&&i.from==i.to?(n=t,t=i.prevSibling):t=i}return n}function ei(n,e,t,i){for(var s;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?l.length:-1;e!=h;e+=t){let c=l[e],f=a[e]+o.from;if(!!Bh(s,i,f,f+c.length)){if(c instanceof Ft){if(r&Q.ExcludeBuffers)continue;let u=c.findChild(0,c.buffer.length,t,i-f,s);if(u>-1)return new Xe(new _d(o,c,e,f),null,u)}else if(r&Q.IncludeAnonymous||!c.type.isAnonymous||Nr(c)){let u;if(!(r&Q.IgnoreMounts)&&c.props&&(u=c.prop(L.mounted))&&!u.overlay)return new _e(u.tree,f,e,o);let d=new _e(c,f,e,o);return r&Q.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(t<0?c.children.length-1:0,t,i,s)}}}if(r&Q.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,i=0){let s;if(!(i&Q.IgnoreOverlays)&&(s=this._tree.prop(L.mounted))&&s.overlay){let r=e-this.from;for(let{from:o,to:l}of s.overlay)if((t>0?o<=r:o=r:l>r))return new _e(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}cursor(e=0){return new Li(this,e)}get tree(){return this._tree}toTree(){return this._tree}resolve(e,t=0){return ei(this,e,t,!1)}resolveInner(e,t=0){return ei(this,e,t,!0)}enterUnfinishedNodesBefore(e){return Ph(this,e)}getChild(e,t=null,i=null){let s=Bn(this,e,t,i);return s.length?s[0]:null}getChildren(e,t=null,i=null){return Bn(this,e,t,i)}toString(){return this._tree.toString()}get node(){return this}matchContext(e){return Pn(this,e)}}function Bn(n,e,t,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(t!=null){for(;!s.type.is(t);)if(!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function Pn(n,e,t=e.length-1){for(let i=n.parent;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}class _d{constructor(e,t,i,s){this.parent=e,this.buffer=t,this.index=i,this.start=s}}class Xe{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new Xe(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,i=0){if(i&Q.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new Xe(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Xe(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new Xe(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}cursor(e=0){return new Li(this,e)}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];e.push(i.slice(s,r,o)),t.push(0)}return new j(this.type,e,t,this.to-this.from)}resolve(e,t=0){return ei(this,e,t,!1)}resolveInner(e,t=0){return ei(this,e,t,!0)}enterUnfinishedNodesBefore(e){return Ph(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,t=null,i=null){let s=Bn(this,e,t,i);return s.length?s[0]:null}getChildren(e,t=null,i=null){return Bn(this,e,t,i)}get node(){return this}matchContext(e){return Pn(this,e)}}class Li{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof _e)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof _e?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&Q.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&Q.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&Q.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&Q.IncludeAnonymous||l instanceof Ft||!l.type.isAnonymous||Nr(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,i=r+1;break e}s=this.stack[--r]}}for(let s=i;s=0;r--){if(r<0)return Pn(this.node,e,s);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function Nr(n){return n.children.some(e=>e instanceof Ft||!e.type.isAnonymous||Nr(e))}function Vd(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:s=Rd,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new Ir(t,t.length):t,a=i.types,h=0,c=0;function f(S,A,T,B,U){let{id:I,start:P,end:V,size:G}=l,C=c;for(;G<0;)if(l.next(),G==-1){let H=r[I];T.push(H),B.push(P-S);return}else if(G==-3){h=I;return}else if(G==-4){c=I;return}else throw new RangeError(`Unrecognized record size: ${G}`);let ie=a[I],J,Z,oe=P-S;if(V-P<=s&&(Z=g(l.pos-A,U))){let H=new Uint16Array(Z.size-Z.skip),we=l.pos-Z.size,Fe=H.length;for(;l.pos>we;)Fe=y(Z.start,H,Fe);J=new Ft(H,V-Z.start,i),oe=Z.start-S}else{let H=l.pos-G;l.next();let we=[],Fe=[],st=I>=o?I:-1,lt=0,$i=V;for(;l.pos>H;)st>=0&&l.id==st&&l.size>=0?(l.end<=$i-s&&(d(we,Fe,P,lt,l.end,$i,st,C),lt=we.length,$i=l.end),l.next()):f(P,H,we,Fe,st);if(st>=0&<>0&<-1&<>0){let to=u(ie);J=_r(ie,we,Fe,0,we.length,0,V-P,to,to)}else J=p(ie,we,Fe,V-P,C-V)}T.push(J),B.push(oe)}function u(S){return(A,T,B)=>{let U=0,I=A.length-1,P,V;if(I>=0&&(P=A[I])instanceof j){if(!I&&P.type==S&&P.length==B)return P;(V=P.prop(L.lookAhead))&&(U=T[I]+P.length+V)}return p(S,A,T,B,U)}}function d(S,A,T,B,U,I,P,V){let G=[],C=[];for(;S.length>B;)G.push(S.pop()),C.push(A.pop()+T-U);S.push(p(i.types[P],G,C,I-U,V-I)),A.push(U-T)}function p(S,A,T,B,U=0,I){if(h){let P=[L.contextHash,h];I=I?[P].concat(I):[P]}if(U>25){let P=[L.lookAhead,U];I=I?[P].concat(I):[P]}return new j(S,A,T,B,I)}function g(S,A){let T=l.fork(),B=0,U=0,I=0,P=T.end-s,V={size:0,start:0,skip:0};e:for(let G=T.pos-S;T.pos>G;){let C=T.size;if(T.id==A&&C>=0){V.size=B,V.start=U,V.skip=I,I+=4,B+=4,T.next();continue}let ie=T.pos-C;if(C<0||ie=o?4:0,Z=T.start;for(T.next();T.pos>ie;){if(T.size<0)if(T.size==-3)J+=4;else break e;else T.id>=o&&(J+=4);T.next()}U=Z,B+=C,I+=J}return(A<0||B==S)&&(V.size=B,V.start=U,V.skip=I),V.size>4?V:void 0}function y(S,A,T){let{id:B,start:U,end:I,size:P}=l;if(l.next(),P>=0&&B4){let G=l.pos-(P-4);for(;l.pos>G;)T=y(S,A,T)}A[--T]=V,A[--T]=I-S,A[--T]=U-S,A[--T]=B}else P==-3?h=B:P==-4&&(c=B);return T}let b=[],v=[];for(;l.pos>0;)f(n.start||0,n.bufferStart||0,b,v,-1);let x=(e=n.length)!==null&&e!==void 0?e:b.length?v[0]+b[0].length:0;return new j(a[n.topID],b.reverse(),v.reverse(),x)}const rl=new WeakMap;function yn(n,e){if(!n.isAnonymous||e instanceof Ft||e.type!=n)return 1;let t=rl.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof j)){t=1;break}t+=yn(n,i)}rl.set(e,t)}return t}function _r(n,e,t,i,s,r,o,l,a){let h=0;for(let p=i;p=c)break;T+=B}if(x==S+1){if(T>c){let B=p[S];d(B.children,B.positions,0,B.children.length,g[S]+v);continue}f.push(p[S])}else{let B=g[x-1]+p[x-1].length-A;f.push(_r(n,p,g,S,x,A,B,null,a))}u.push(A+v-r)}}return d(e,t,i,s,0),(l||a)(f,u,o)}class ny{constructor(){this.map=new WeakMap}setBuffer(e,t,i){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(t,i)}getBuffer(e,t){let i=this.map.get(e);return i&&i.get(t)}set(e,t){e instanceof Xe?this.setBuffer(e.context.buffer,e.index,t):e instanceof _e&&this.map.set(e.tree,t)}get(e){return e instanceof Xe?this.getBuffer(e.context.buffer,e.index):e instanceof _e?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class ot{constructor(e,t,i,s,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let s=[new ot(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&s.push(r);return s}static applyChanges(e,t,i=128){if(!t.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let c=l=i)for(;o&&o.from=u.from||f<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,f)-h;u=d>=p?null:new ot(d,p,u.tree,u.offset+h,l>0,!!c)}if(u&&s.push(u),o.to>f)break;o=rnew Le(s.from,s.to)):[new Le(0,0)]:[new Le(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let s=this.startParse(e,t,i);for(;;){let r=s.advance();if(r)return r}}}class Fd{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}function sy(n){return(e,t,i,s)=>new Wd(e,n,t,i,s)}class ol{constructor(e,t,i,s,r){this.parser=e,this.parse=t,this.overlay=i,this.target=s,this.ranges=r}}class Hd{constructor(e,t,i,s,r,o,l){this.parser=e,this.predicate=t,this.mounts=i,this.index=s,this.start=r,this.target=o,this.prev=l,this.depth=0,this.ranges=[]}}const cr=new L({perNode:!0});class Wd{constructor(e,t,i,s,r){this.nest=t,this.input=i,this.fragments=s,this.ranges=r,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let i=this.baseParse.advance();if(!i)return null;if(this.baseParse=null,this.baseTree=i,this.startInner(),this.stoppedAt!=null)for(let s of this.inner)s.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let i=this.baseTree;return this.stoppedAt!=null&&(i=new j(i.type,i.children,i.positions,i.length,i.propValues.concat([[cr,this.stoppedAt]]))),i}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let i=Object.assign(Object.create(null),e.target.props);i[L.mounted.id]=new Id(t,e.overlay,e.parser),e.target.props=i}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;tc.frag.from<=s.from&&c.frag.to>=s.to&&c.mount.overlay);if(h)for(let c of h.mount.overlay){let f=c.from+h.pos,u=c.to+h.pos;f>=s.from&&u<=s.to&&!t.ranges.some(d=>d.fromf)&&t.ranges.push({from:f,to:u})}}l=!1}else if(i&&(o=zd(i.ranges,s.from,s.to)))l=o!=2;else if(!s.type.isAnonymous&&s.fromnew Le(f.from-s.from,f.to-s.from)):null,s.tree,c)),r.overlay?c.length&&(i={ranges:c,depth:0,prev:i}):l=!1}}else t&&(a=t.predicate(s))&&(a===!0&&(a=new Le(s.from,s.to)),a.fromnew Le(c.from-t.start,c.to-t.start)),t.target,h)),t=t.prev}i&&!--i.depth&&(i=i.prev)}}}}function zd(n,e,t){for(let i of n){if(i.from>=t)break;if(i.to>e)return i.from<=e&&i.to>=t?2:1}return 0}function ll(n,e,t,i,s,r){if(e=e.to);i++);let o=s.children[i],l=o.buffer;function a(h,c,f,u,d){let p=h;for(;l[p+2]+r<=e.from;)p=l[p+3];let g=[],y=[];ll(o,h,p,g,y,u);let b=l[p+1],v=l[p+2],x=b+r==e.from&&v+r==e.to&&l[p]==e.type.id;return g.push(x?e.toTree():a(p+4,l[p+3],o.set.types[l[p]],b,v-b)),y.push(b-u),ll(o,l[p+3],c,g,y,u),new j(f,g,y,d)}s.children[i]=a(0,l.length,xe.none,0,o.length);for(let h=0;h<=t;h++)n.childAfter(e.from)}class al{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(Q.IncludeAnonymous|Q.IgnoreMounts)}moveTo(e){let{cursor:t}=this,i=e-this.offset;for(;!this.done&&t.from=e&&t.enter(i,1,Q.IgnoreOverlays|Q.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof j)t=t.children[0];else break}return!1}}class qd{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let i=this.curFrag=e[0];this.curTo=(t=i.tree.prop(cr))!==null&&t!==void 0?t:i.to,this.inner=new al(i.tree,-i.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(cr))!==null&&e!==void 0?e:t.to,this.inner=new al(t.tree,-t.offset)}}findMounts(e,t){var i;let s=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let r=this.inner.cursor.node;r;r=r.parent){let o=(i=r.tree)===null||i===void 0?void 0:i.prop(L.mounted);if(o&&o.parser==t)for(let l=this.fragI;l=r.to)break;a.tree==this.curFrag.tree&&s.push({frag:a,pos:r.from-a.offset,mount:o})}}}return s}}function hl(n,e){let t=null,i=e;for(let s=1,r=0;s=l)break;a.to<=o||(t||(i=t=e.slice()),a.froml&&t.splice(r+1,0,new Le(l,a.to))):a.to>l?t[r--]=new Le(l,a.to):t.splice(r--,1))}}return i}function $d(n,e,t,i){let s=0,r=0,o=!1,l=!1,a=-1e9,h=[];for(;;){let c=s==n.length?1e9:o?n[s].to:n[s].from,f=r==e.length?1e9:l?e[r].to:e[r].from;if(o!=l){let u=Math.max(a,t),d=Math.min(c,f,i);unew Le(u.from+i,u.to+i)),f=$d(e,c,a,h);for(let u=0,d=a;;u++){let p=u==f.length,g=p?h:f[u].from;if(g>d&&t.push(new ot(d,g,s.tree,-o,r.from>=d||r.openStart,r.to<=g||r.openEnd)),p)break;d=f[u].to}}else t.push(new ot(a,h,s.tree,-o,r.from>=o||r.openStart,r.to<=l||r.openEnd))}return t}let Kd=0;class Ge{constructor(e,t,i){this.set=e,this.base=t,this.modified=i,this.id=Kd++}static define(e){if(e?.base)throw new Error("Can not derive from a modified tag");let t=new Ge([],null,[]);if(t.set.push(t),e)for(let i of e.set)t.set.push(i);return t}static defineModifier(){let e=new En;return t=>t.modified.indexOf(e)>-1?t:En.get(t.base||t,t.modified.concat(e).sort((i,s)=>i.id-s.id))}}let Ud=0;class En{constructor(){this.instances=[],this.id=Ud++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&Gd(t,l.modified));if(i)return i;let s=[],r=new Ge(s,e,t);for(let l of t)l.instances.push(r);let o=Jd(t);for(let l of e.set)if(!l.modified.length)for(let a of o)s.push(En.get(l,a));return r}}function Gd(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}function Jd(n){let e=[[]];for(let t=0;ti.length-t.length)}function Yd(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let s of t.split(" "))if(s){let r=[],o=2,l=s;for(let f=0;;){if(l=="..."&&f>0&&f+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),f+=u[0].length,f==s.length)break;let d=s[f++];if(f==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(f)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let c=new Rn(i,o,a>0?r.slice(0,a):null);e[h]=c.sort(e[h])}}return Rh.add(e)}const Rh=new L;class Rn{constructor(e,t,i,s){this.tags=e,this.mode=t,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=s;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Xd(n,e){let t=null;for(let i of n){let s=i.style(e);s&&(t=t?t+" "+s:s)}return t}function Zd(n,e,t,i=0,s=n.length){let r=new Qd(i,Array.isArray(e)?e:[e],t);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}class Qd{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,s,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,c=ep(e)||Rn.empty,f=Xd(r,c.tags);if(f&&(h&&(h+=" "),h+=f,c.mode==1&&(s+=(s?" ":"")+f)),this.startSpan(e.from,h),c.opaque)return;let u=e.tree&&e.tree.prop(L.mounted);if(u&&u.overlay){let d=e.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(y=>!y.scope||y.scope(u.tree.type)),g=e.firstChild();for(let y=0,b=l;;y++){let v=y=x||!e.nextSibling())););if(!v||x>i)break;b=v.to+l,b>t&&(this.highlightRange(d.cursor(),Math.max(t,v.from+l),Math.min(i,b),s,p),this.startSpan(b,h))}g&&e.parent()}else if(e.firstChild()){do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,s,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}}function ep(n){let e=n.type.prop(Rh);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}const k=Ge.define,sn=k(),at=k(),fl=k(at),ul=k(at),ht=k(),rn=k(ht),ms=k(ht),Ke=k(),St=k(Ke),qe=k(),$e=k(),fr=k(),ui=k(fr),on=k(),m={comment:sn,lineComment:k(sn),blockComment:k(sn),docComment:k(sn),name:at,variableName:k(at),typeName:fl,tagName:k(fl),propertyName:ul,attributeName:k(ul),className:k(at),labelName:k(at),namespace:k(at),macroName:k(at),literal:ht,string:rn,docString:k(rn),character:k(rn),attributeValue:k(rn),number:ms,integer:k(ms),float:k(ms),bool:k(ht),regexp:k(ht),escape:k(ht),color:k(ht),url:k(ht),keyword:qe,self:k(qe),null:k(qe),atom:k(qe),unit:k(qe),modifier:k(qe),operatorKeyword:k(qe),controlKeyword:k(qe),definitionKeyword:k(qe),moduleKeyword:k(qe),operator:$e,derefOperator:k($e),arithmeticOperator:k($e),logicOperator:k($e),bitwiseOperator:k($e),compareOperator:k($e),updateOperator:k($e),definitionOperator:k($e),typeOperator:k($e),controlOperator:k($e),punctuation:fr,separator:k(fr),bracket:ui,angleBracket:k(ui),squareBracket:k(ui),paren:k(ui),brace:k(ui),content:Ke,heading:St,heading1:k(St),heading2:k(St),heading3:k(St),heading4:k(St),heading5:k(St),heading6:k(St),contentSeparator:k(Ke),list:k(Ke),quote:k(Ke),emphasis:k(Ke),strong:k(Ke),link:k(Ke),monospace:k(Ke),strikethrough:k(Ke),inserted:k(),deleted:k(),changed:k(),invalid:k(),meta:on,documentMeta:k(on),annotation:k(on),processingInstruction:k(on),definition:Ge.defineModifier(),constant:Ge.defineModifier(),function:Ge.defineModifier(),standard:Ge.defineModifier(),local:Ge.defineModifier(),special:Ge.defineModifier()};Lh([{tag:m.link,class:"tok-link"},{tag:m.heading,class:"tok-heading"},{tag:m.emphasis,class:"tok-emphasis"},{tag:m.strong,class:"tok-strong"},{tag:m.keyword,class:"tok-keyword"},{tag:m.atom,class:"tok-atom"},{tag:m.bool,class:"tok-bool"},{tag:m.url,class:"tok-url"},{tag:m.labelName,class:"tok-labelName"},{tag:m.inserted,class:"tok-inserted"},{tag:m.deleted,class:"tok-deleted"},{tag:m.literal,class:"tok-literal"},{tag:m.string,class:"tok-string"},{tag:m.number,class:"tok-number"},{tag:[m.regexp,m.escape,m.special(m.string)],class:"tok-string2"},{tag:m.variableName,class:"tok-variableName"},{tag:m.local(m.variableName),class:"tok-variableName tok-local"},{tag:m.definition(m.variableName),class:"tok-variableName tok-definition"},{tag:m.special(m.variableName),class:"tok-variableName2"},{tag:m.definition(m.propertyName),class:"tok-propertyName tok-definition"},{tag:m.typeName,class:"tok-typeName"},{tag:m.namespace,class:"tok-namespace"},{tag:m.className,class:"tok-className"},{tag:m.macroName,class:"tok-macroName"},{tag:m.propertyName,class:"tok-propertyName"},{tag:m.operator,class:"tok-operator"},{tag:m.comment,class:"tok-comment"},{tag:m.meta,class:"tok-meta"},{tag:m.invalid,class:"tok-invalid"},{tag:m.punctuation,class:"tok-punctuation"}]);var gs;const Tt=new L;function Ih(n){return D.define({combine:n?e=>e.concat(n):void 0})}const tp=new L;class Ie{constructor(e,t,i=[],s=""){this.data=e,this.name=s,N.prototype.hasOwnProperty("tree")||Object.defineProperty(N.prototype,"tree",{get(){return de(this)}}),this.parser=t,this.extension=[vt.of(this),N.languageData.of((r,o,l)=>{let a=dl(r,o,l),h=a.type.prop(Tt);if(!h)return[];let c=r.facet(h),f=a.type.prop(tp);if(f){let u=a.resolve(o-a.from,l);for(let d of f)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(c)}}return c})].concat(i)}isActiveAt(e,t,i=-1){return dl(e,t,i).type.prop(Tt)==this.data}findRegions(e){let t=e.facet(vt);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Tt)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(L.mounted);if(l){if(l.tree.prop(Tt)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;ai.isTop?t:void 0)]}),e.name)}configure(e,t){return new ur(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function de(n){let e=n.field(Ie.state,!1);return e?e.tree:j.empty}class ip{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let i=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}}let di=null;class ti{constructor(e,t,i=[],s,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new ti(e,t,[],j.empty,0,i,[],null)}startParse(){return this.parser.startParse(new ip(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=j.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(ot.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=di;di=this;try{return e()}finally{di=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=pl(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,c,f,u)=>a.push({fromA:h,toA:c,fromB:f,toB:u})),i=ot.applyChanges(i,a),s=j.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let c=e.mapPos(h.from,1),f=e.mapPos(h.to,-1);ce.from&&(this.fragments=pl(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Eh{createParse(t,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=di;if(a){for(let h of s)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new j(xe.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return di}}function pl(n,e,t){return ot.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}class ii{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new ii(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=ti.create(e.facet(vt).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new ii(i)}}Ie.state=Me.define({create:ii.init,update(n,e){for(let t of e.effects)if(t.is(Ie.setState))return t.value;return e.startState.facet(vt)!=e.state.facet(vt)?ii.init(e.state):n.apply(e)}});let Nh=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Nh=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:500-100})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const ys=typeof navigator<"u"&&((gs=navigator.scheduling)===null||gs===void 0?void 0:gs.isInputPending)?()=>navigator.scheduling.isInputPending():null,np=ye.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Ie.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Ie.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Nh(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>ys&&ys()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:Ie.setState.of(new ii(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>We(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),vt=D.define({combine(n){return n.length?n[0]:null},enables:n=>[Ie.state,np,O.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]});class oy{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}class _h{constructor(e,t,i,s,r,o=void 0){this.name=e,this.alias=t,this.extensions=i,this.filename=s,this.loadFunc=r,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:i}=e;if(!t){if(!i)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(i)}return new _h(e.name,(e.alias||[]).concat(e.name).map(s=>s.toLowerCase()),e.extensions||[],e.filename,t,i)}static matchFilename(e,t){for(let s of e)if(s.filename&&s.filename.test(t))return s;let i=/\.([^.]+)$/.exec(t);if(i){for(let s of e)if(s.extensions.indexOf(i[1])>-1)return s}return null}static matchLanguageName(e,t,i=!0){t=t.toLowerCase();for(let s of e)if(s.alias.some(r=>r==t))return s;if(i)for(let s of e)for(let r of s.alias){let o=t.indexOf(r);if(o>-1&&(r.length>2||!/\w/.test(t[o-1])&&!/\w/.test(t[o+r.length])))return s}return null}}const Vh=D.define(),$n=D.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function Lt(n){let e=n.facet($n);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function Ii(n,e){let t="",i=n.tabSize,s=n.facet($n)[0];if(s==" "){for(;e>=i;)t+=" ",e-=i;s=" "}for(let r=0;r=i.from&&s<=i.to?r&&s==e?{text:"",from:e}:(t<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(e,t=e.length){return Hi(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const sp=new L;function rp(n,e,t){return Fh(e.resolveInner(t).enterUnfinishedNodesBefore(t),t,n)}function op(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function lp(n){let e=n.type.prop(sp);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(L.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>Hh(o,!0,1,void 0,r&&!op(o)?s.from:void 0)}return n.parent==null?ap:null}function Fh(n,e,t){for(;n;n=n.parent){let i=lp(n);if(i)return i(Fr.create(t,e,n))}return null}function ap(){return 0}class Fr extends Kn{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.node=i}static create(e,t,i){return new Fr(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let e=this.state.doc.lineAt(this.node.from);for(;;){let t=this.node.resolve(e.from);for(;t.parent&&t.parent.from==t.from;)t=t.parent;if(hp(t,this.node))break;e=this.state.doc.lineAt(t.from)}return this.lineIndent(e.from)}continue(){let e=this.node.parent;return e?Fh(e,this.pos,this.base):0}}function hp(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function cp(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(t.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped)return a.fromHh(i,e,t,n)}function Hh(n,e,t,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=e?cp(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}const ay=n=>n.baseIndent;function hy({except:n,units:e=1}={}){return t=>{let i=n&&n.test(t.textAfter);return t.baseIndent+(i?0:e*t.unit)}}const fp=200;function up(){return N.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:i}=n.newSelection.main,s=t.lineAt(i);if(i>s.from+fp)return n;let r=t.sliceString(s.from,i);if(!e.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let c=o.doc.lineAt(h);if(c.from==l)continue;l=c.from;let f=Vr(o,c.from);if(f==null)continue;let u=/^\s*/.exec(c.text)[0],d=Ii(o,f);u!=d&&a.push({from:c.from,to:c.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}const dp=D.define(),pp=new L;function cy(n){let e=n.firstChild,t=n.lastChild;return e&&e.tot)continue;if(r&&o.from=e&&a.to>t&&(r=a)}}return r}function gp(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}function Ln(n,e,t){for(let i of n.facet(dp)){let s=i(n,e,t);if(s)return s}return mp(n,e,t)}function Wh(n,e){let t=e.mapPos(n.from,1),i=e.mapPos(n.to,-1);return t>=i?void 0:{from:t,to:i}}const Un=R.define({map:Wh}),zi=R.define({map:Wh});function zh(n){let e=[];for(let{head:t}of n.state.selection.ranges)e.some(i=>i.from<=t&&i.to>=t)||e.push(n.lineBlockAt(t));return e}const It=Me.define({create(){return E.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)t.is(Un)&&!yp(n,t.value.from,t.value.to)?n=n.update({add:[ml.range(t.value.from,t.value.to)]}):t.is(zi)&&(n=n.update({filter:(i,s)=>t.value.from!=i||t.value.to!=s,filterFrom:t.value.from,filterTo:t.value.to}));if(e.selection){let t=!1,{head:i}=e.selection.main;n.between(i,i,(s,r)=>{si&&(t=!0)}),t&&(n=n.update({filterFrom:i,filterTo:i,filter:(s,r)=>r<=i||s>=i}))}return n},provide:n=>O.decorations.from(n),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(i,s)=>{t.push(i,s)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t{(!s||s.from>r)&&(s={from:r,to:o})}),s}function yp(n,e,t){let i=!1;return n.between(e,e,(s,r)=>{s==e&&r==t&&(i=!0)}),i}function jh(n,e){return n.field(It,!1)?e:e.concat(R.appendConfig.of(Kh()))}const bp=n=>{for(let e of zh(n)){let t=Ln(n.state,e.from,e.to);if(t)return n.dispatch({effects:jh(n.state,[Un.of(t),qh(n,t)])}),!0}return!1},wp=n=>{if(!n.state.field(It,!1))return!1;let e=[];for(let t of zh(n)){let i=In(n.state,t.from,t.to);i&&e.push(zi.of(i),qh(n,i,!1))}return e.length&&n.dispatch({effects:e}),e.length>0};function qh(n,e,t=!0){let i=n.state.doc.lineAt(e.from).number,s=n.state.doc.lineAt(e.to).number;return O.announce.of(`${n.state.phrase(t?"Folded lines":"Unfolded lines")} ${i} ${n.state.phrase("to")} ${s}.`)}const kp=n=>{let{state:e}=n,t=[];for(let i=0;i{let e=n.state.field(It,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,n.state.doc.length,(i,s)=>{t.push(zi.of({from:i,to:s}))}),n.dispatch({effects:t}),!0},xp=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:bp},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:wp},{key:"Ctrl-Alt-[",run:kp},{key:"Ctrl-Alt-]",run:vp}],Sp={placeholderDOM:null,placeholderText:"\u2026"},$h=D.define({combine(n){return Vt(n,Sp)}});function Kh(n){let e=[It,Mp];return n&&e.push($h.of(n)),e}const ml=E.replace({widget:new class extends it{toDOM(n){let{state:e}=n,t=e.facet($h),i=r=>{let o=n.lineBlockAt(n.posAtDOM(r.target)),l=In(n.state,o.from,o.to);l&&n.dispatch({effects:zi.of(l)}),r.preventDefault()};if(t.placeholderDOM)return t.placeholderDOM(n,i);let s=document.createElement("span");return s.textContent=t.placeholderText,s.setAttribute("aria-label",e.phrase("folded code")),s.title=e.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}}}),Cp={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class bs extends kt{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}}function Ap(n={}){let e=Object.assign(Object.assign({},Cp),n),t=new bs(e,!0),i=new bs(e,!1),s=ye.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(vt)!=o.state.facet(vt)||o.startState.field(It,!1)!=o.state.field(It,!1)||de(o.startState)!=de(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new Et;for(let a of o.viewportLineBlocks){let h=In(o.state,a.from,a.to)?i:Ln(o.state,a.from,a.to)?t:null;h&&l.add(a.from,a.from,h)}return l.finish()}}),{domEventHandlers:r}=e;return[s,Md({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(s))===null||l===void 0?void 0:l.markers)||F.empty},initialSpacer(){return new bs(e,!1)},domEventHandlers:Object.assign(Object.assign({},r),{click:(o,l,a)=>{if(r.click&&r.click(o,l,a))return!0;let h=In(o.state,l.from,l.to);if(h)return o.dispatch({effects:zi.of(h)}),!0;let c=Ln(o.state,l.from,l.to);return c?(o.dispatch({effects:Un.of(c)}),!0):!1}})}),Kh()]}const Mp=O.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class li{constructor(e,t){this.specs=e;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}const r=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof Ie?l=>l.prop(Tt)==o.data:o?l=>l==o:void 0,this.style=Lh(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=t.themeType}static define(e,t){return new li(e,t||{})}}const dr=D.define(),Uh=D.define({combine(n){return n.length?[n[0]]:null}});function ws(n){let e=n.facet(dr);return e.length?e:n.facet(Uh)}function Hr(n,e){let t=[Tp],i;return n instanceof li&&(n.module&&t.push(O.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(Uh.of(n)):i?t.push(dr.computeN([O.darkTheme],s=>s.facet(O.darkTheme)==(i=="dark")?[n]:[])):t.push(dr.of(n)),t}class Dp{constructor(e){this.markCache=Object.create(null),this.tree=de(e.state),this.decorations=this.buildDeco(e,ws(e.state))}update(e){let t=de(e.state),i=ws(e.state),s=i!=ws(e.startState);t.length{i.add(o,l,this.markCache[a]||(this.markCache[a]=E.mark({class:a})))},s,r);return i.finish()}}const Tp=Fi.high(ye.fromClass(Dp,{decorations:n=>n.decorations})),Op=li.define([{tag:m.meta,color:"#404740"},{tag:m.link,textDecoration:"underline"},{tag:m.heading,textDecoration:"underline",fontWeight:"bold"},{tag:m.emphasis,fontStyle:"italic"},{tag:m.strong,fontWeight:"bold"},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.keyword,color:"#708"},{tag:[m.atom,m.bool,m.url,m.contentSeparator,m.labelName],color:"#219"},{tag:[m.literal,m.inserted],color:"#164"},{tag:[m.string,m.deleted],color:"#a11"},{tag:[m.regexp,m.escape,m.special(m.string)],color:"#e40"},{tag:m.definition(m.variableName),color:"#00f"},{tag:m.local(m.variableName),color:"#30a"},{tag:[m.typeName,m.namespace],color:"#085"},{tag:m.className,color:"#167"},{tag:[m.special(m.variableName),m.macroName],color:"#256"},{tag:m.definition(m.propertyName),color:"#00c"},{tag:m.comment,color:"#940"},{tag:m.invalid,color:"#f00"}]),Bp=1e4,Pp="()[]{}",Ep=new L;function pr(n,e,t){let i=n.prop(e<0?L.openedBy:L.closedBy);if(i)return i;if(n.name.length==1){let s=t.indexOf(n.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function mr(n){let e=n.type.prop(Ep);return e?e(n.node):n}function jt(n,e,t,i={}){let s=i.maxScanDistance||Bp,r=i.brackets||Pp,o=de(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=pr(a.type,t,r);if(h&&a.from0?e>=c.from&&ec.from&&e<=c.to))return Rp(n,e,t,a,c,h,r)}}return Lp(n,e,t,o,l.type,s,r)}function Rp(n,e,t,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,c=l?.cursor();if(c&&(t<0?c.childBefore(i.from):c.childAfter(i.to)))do if(t<0?c.to<=i.from:c.from>=i.to){if(h==0&&r.indexOf(c.type.name)>-1&&c.from0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},c=n.doc.iterRange(e,t>0?n.doc.length:0),f=0;for(let u=0;!c.next().done&&u<=r;){let d=c.value;t<0&&(u+=d.length);let p=e+u*t;for(let g=t>0?0:d.length-1,y=t>0?d.length:-1;g!=y;g+=t){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==t>0)f++;else{if(f==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};f--}}t>0&&(u+=d.length)}return c.done?{start:h,matched:!1}:null}function gl(n,e,t,i=0,s=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,e.length);return s(r)==s(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function Ip(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Np,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||zr}}function Np(n){if(typeof n!="object")return n;let e={};for(let t in n){let i=n[t];e[t]=i instanceof Array?i.slice():i}return e}const yl=new WeakMap;class qt extends Ie{constructor(e){let t=Ih(e.languageData),i=Ip(e),s,r=new class extends Eh{createParse(o,l,a){return new Vp(s,o,l,a)}};super(t,r,[Vh.of((o,l)=>this.getIndent(o,l))],e.name),this.topNode=Wp(t),s=this,this.streamParser=i,this.stateAfter=new L({perNode:!0}),this.tokenTable=e.tokenTable?new Zh(i.tokenTable):Hp}static define(e){return new qt(e)}getIndent(e,t){let i=de(e.state),s=i.resolve(t);for(;s&&s.type!=this.topNode;)s=s.parent;if(!s)return null;let r,{overrideIndentation:o}=e.options;o&&(r=yl.get(e.state),r!=null&&r1e4)return null;for(;a=i&&t+e.length<=s&&e.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let l=e.children[o],a=t+e.positions[o],h=l instanceof j&&a=e.length)return e;!s&&e.type==n.topNode&&(s=!0);for(let r=e.children.length-1;r>=0;r--){let o=e.positions[r],l=e.children[r],a;if(ot&&Wr(n,s.tree,0-s.offset,t,o),a;if(l&&(a=Jh(n,s.tree,t+s.offset,l.pos+s.offset,!1)))return{state:l.state,tree:a}}return{state:n.streamParser.startState(i?Lt(i):4),tree:j.empty}}class Vp{constructor(e,t,i,s){this.lang=e,this.input=t,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=ti.get(),o=s[0].from,{state:l,tree:a}=_p(e,i,o,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;h=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`&&(t="");else{let i=t.indexOf(` +`);i>-1&&(t=t.slice(0,i))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),i=e+t.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(t=t.slice(0,r-(i-t.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);t+=l,i=o+l.length}return{line:t,end:i}}skipGapsTo(e,t,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=e+t;if(i>0?s>r:s>=r)break;t+=this.ranges[++this.rangeIndex].from-s}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){r=this.skipGapsTo(t,r,1),t+=r;let o=this.chunk.length;r=this.skipGapsTo(i,r,-1),i+=r,s+=this.chunk.length-o}return this.chunk.push(e,t,i,s),r}parseLine(e){let{line:t,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Gh(t,e?e.state.tabSize:4,e?Lt(e.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Yh(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,4,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const zr=Object.create(null),Ni=[xe.none],Fp=new Lr(Ni),bl=[],Xh=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Xh[n]=Qh(zr,e);class Zh{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Xh)}resolve(e){return e?this.table[e]||(this.table[e]=Qh(this.extra,e)):0}}const Hp=new Zh(zr);function ks(n,e){bl.indexOf(n)>-1||(bl.push(n),console.warn(e))}function Qh(n,e){let t=null;for(let r of e.split(".")){let o=n[r]||m[r];o?typeof o=="function"?t?t=o(t):ks(r,`Modifier ${r} used at start of tag`):t?ks(r,`Tag ${r} used as modifier`):t=o:ks(r,`Unknown highlighting tag ${r}`)}if(!t)return 0;let i=e.replace(/ /g,"_"),s=xe.define({id:Ni.length,name:i,props:[Yd({[i]:t})]});return Ni.push(s),s.id}function Wp(n){let e=xe.define({id:Ni.length,name:"Document",props:[Tt.add(()=>n)]});return Ni.push(e),e}const zp=n=>{let e=qr(n.state);return e.line?jp(n):e.block?$p(n):!1};function jr(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let s=n(e,t);return s?(i(t.update(s)),!0):!1}}const jp=jr(Gp,0),qp=jr(ec,0),$p=jr((n,e)=>ec(n,e,Up(e)),0);function qr(n,e=n.selection.main.head){let t=n.languageDataAt("commentTokens",e);return t.length?t[0]:{}}const pi=50;function Kp(n,{open:e,close:t},i,s){let r=n.sliceDoc(i-pi,i),o=n.sliceDoc(s,s+pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let c,f;s-i<=2*pi?c=f=n.sliceDoc(i,s):(c=n.sliceDoc(i,i+pi),f=n.sliceDoc(s-pi,s));let u=/^\s*/.exec(c)[0].length,d=/\s*$/.exec(f)[0].length,p=f.length-d-t.length;return c.slice(u,u+e.length)==e&&f.slice(p,p+t.length)==t?{open:{pos:i+u+e.length,margin:/\s/.test(c.charAt(u+e.length))?1:0},close:{pos:s-d-t.length,margin:/\s/.test(f.charAt(p-1))?1:0}}:null}function Up(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),s=t.to<=i.to?i:n.doc.lineAt(t.to),r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=s.to:e.push({from:i.from,to:s.to})}return e}function ec(n,e,t=e.selection.ranges){let i=t.map(r=>qr(e,r.from).block);if(!i.every(r=>r))return null;let s=t.map((r,o)=>Kp(e,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:e.changes(t.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let f=qr(e,h).line;if(!f)continue;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+f.length)==f?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:c,single:f}of i)(f||!c)&&r.push({from:l.from+h,insert:a+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,c=h+a.length;o.text[c-o.from]==" "&&c++,r.push({from:h,to:c})}return{changes:r}}return null}const gr=_t.define(),Jp=_t.define(),Yp=D.define(),tc=D.define({combine(n){return Vt(n,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}});function Xp(n){let e=0;return n.iterChangedRanges((t,i)=>e=i),e}const ic=Me.define({create(){return Ze.empty},update(n,e){let t=e.state.facet(tc),i=e.annotation(gr);if(i){let a=e.docChanged?w.single(Xp(e.changes)):void 0,h=Se.fromTransaction(e,a),c=i.side,f=c==0?n.undone:n.done;return h?f=Nn(f,f.length,t.minDepth,h):f=rc(f,e.startState.selection),new Ze(c==0?i.rest:f,c==0?f:i.rest)}let s=e.annotation(Jp);if((s=="full"||s=="before")&&(n=n.isolate()),e.annotation(se.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let r=Se.fromTransaction(e),o=e.annotation(se.time),l=e.annotation(se.userEvent);return r?n=n.addChanges(r,o,l,t.newGroupDelay,t.minDepth):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new Ze(n.done.map(Se.fromJSON),n.undone.map(Se.fromJSON))}});function Zp(n={}){return[ic,tc.of(n),O.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?nc:e.inputType=="historyRedo"?yr:null;return i?(e.preventDefault(),i(t)):!1}})]}function Gn(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let s=t.field(ic,!1);if(!s)return!1;let r=s.pop(n,t,e);return r?(i(r),!0):!1}}const nc=Gn(0,!1),yr=Gn(1,!1),Qp=Gn(0,!0),em=Gn(1,!0);class Se{constructor(e,t,i,s,r){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new Se(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new Se(e.changes&&ne.fromJSON(e.changes),[],e.mapped&&Qe.fromJSON(e.mapped),e.startSelection&&w.fromJSON(e.startSelection),e.selectionsAfter.map(w.fromJSON))}static fromTransaction(e,t){let i=Ne;for(let s of e.startState.facet(Yp)){let r=s(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new Se(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,Ne)}static selection(e){return new Se(void 0,Ne,void 0,void 0,e)}}function Nn(n,e,t,i){let s=e+1>t+20?e-t-1:0,r=n.slice(s,e);return r.push(i),r}function tm(n,e){let t=[],i=!1;return n.iterChangedRanges((s,r)=>t.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=c&&(i=!0)}}),i}function im(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}function sc(n,e){return n.length?e.length?n.concat(e):n:e}const Ne=[],nm=200;function rc(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-nm));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),Nn(n,n.length-1,1e9,t.setSelAfter(i)))}else return[Se.selection([e])]}function sm(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function vs(n,e){if(!n.length)return n;let t=n.length,i=Ne;for(;t;){let s=rm(n[t-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,t);return r[t-1]=s,r}else e=s.mapped,t--,i=s.selectionsAfter}return i.length?[Se.selection(i)]:Ne}function rm(n,e,t){let i=sc(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):Ne,t);if(!n.changes)return Se.selection(i);let s=n.changes.map(e),r=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Se(s,R.mapEffects(n.effects,e),o,n.startSelection.map(r),i)}const om=/^(input\.type|delete)($|\.)/;class Ze{constructor(e,t,i=0,s=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new Ze(this.done,this.undone):this}addChanges(e,t,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||om.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):Jn(t,e))}function be(n){return n.textDirectionAt(n.state.selection.main.head)==X.LTR}const lc=n=>oc(n,!be(n)),ac=n=>oc(n,be(n));function hc(n,e){return ze(n,t=>t.empty?n.moveByGroup(t,e):Jn(t,e))}const am=n=>hc(n,!be(n)),hm=n=>hc(n,be(n));function cm(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function Yn(n,e,t){let i=de(n).resolveInner(e.head),s=t?L.closedBy:L.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;cm(n,h,s)?i=h:a=t?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=t?jt(n,i.from,1):jt(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,w.cursor(l,t?-1:1)}const fm=n=>ze(n,e=>Yn(n.state,e,!be(n))),um=n=>ze(n,e=>Yn(n.state,e,be(n)));function cc(n,e){return ze(n,t=>{if(!t.empty)return Jn(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}const fc=n=>cc(n,!1),uc=n=>cc(n,!0);function dc(n){return Math.max(n.defaultLineHeight,Math.min(n.dom.clientHeight,innerHeight)-5)}function pc(n,e){let{state:t}=n,i=ai(t.selection,l=>l.empty?n.moveVertically(l,e,dc(n)):Jn(l,e));if(i.eq(t.selection))return!1;let s=n.coordsAtPos(t.selection.main.head),r=n.scrollDOM.getBoundingClientRect(),o;return s&&s.top>r.top&&s.bottompc(n,!1),br=n=>pc(n,!0);function xt(n,e,t){let i=n.lineBlockAt(e.head),s=n.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?i.to:i.from)&&(s=n.moveToLineBoundary(e,t,!1)),!t&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}const dm=n=>ze(n,e=>xt(n,e,!0)),pm=n=>ze(n,e=>xt(n,e,!1)),mm=n=>ze(n,e=>xt(n,e,!be(n))),gm=n=>ze(n,e=>xt(n,e,be(n))),ym=n=>ze(n,e=>w.cursor(n.lineBlockAt(e.head).from,1)),bm=n=>ze(n,e=>w.cursor(n.lineBlockAt(e.head).to,-1));function wm(n,e,t){let i=!1,s=ai(n.selection,r=>{let o=jt(n,r.head,-1)||jt(n,r.head,1)||r.head>0&&jt(n,r.head-1,1)||r.headwm(n,e,!1);function Ve(n,e){let t=ai(n.state.selection,i=>{let s=e(i);return w.range(i.anchor,s.head,s.goalColumn)});return t.eq(n.state.selection)?!1:(n.dispatch(nt(n.state,t)),!0)}function mc(n,e){return Ve(n,t=>n.moveByChar(t,e))}const gc=n=>mc(n,!be(n)),yc=n=>mc(n,be(n));function bc(n,e){return Ve(n,t=>n.moveByGroup(t,e))}const vm=n=>bc(n,!be(n)),xm=n=>bc(n,be(n)),Sm=n=>Ve(n,e=>Yn(n.state,e,!be(n))),Cm=n=>Ve(n,e=>Yn(n.state,e,be(n)));function wc(n,e){return Ve(n,t=>n.moveVertically(t,e))}const kc=n=>wc(n,!1),vc=n=>wc(n,!0);function xc(n,e){return Ve(n,t=>n.moveVertically(t,e,dc(n)))}const kl=n=>xc(n,!1),vl=n=>xc(n,!0),Am=n=>Ve(n,e=>xt(n,e,!0)),Mm=n=>Ve(n,e=>xt(n,e,!1)),Dm=n=>Ve(n,e=>xt(n,e,!be(n))),Tm=n=>Ve(n,e=>xt(n,e,be(n))),Om=n=>Ve(n,e=>w.cursor(n.lineBlockAt(e.head).from)),Bm=n=>Ve(n,e=>w.cursor(n.lineBlockAt(e.head).to)),xl=({state:n,dispatch:e})=>(e(nt(n,{anchor:0})),!0),Sl=({state:n,dispatch:e})=>(e(nt(n,{anchor:n.doc.length})),!0),Cl=({state:n,dispatch:e})=>(e(nt(n,{anchor:n.selection.main.anchor,head:0})),!0),Al=({state:n,dispatch:e})=>(e(nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),Pm=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),Em=({state:n,dispatch:e})=>{let t=Zn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return e(n.update({selection:w.create(t),userEvent:"select"})),!0},Rm=({state:n,dispatch:e})=>{let t=ai(n.selection,i=>{var s;let r=de(n).resolveInner(i.head,1);for(;!(r.from=i.to||r.to>i.to&&r.from<=i.from||!(!((s=r.parent)===null||s===void 0)&&s.parent));)r=r.parent;return w.range(r.to,r.from)});return e(nt(n,t)),!0},Lm=({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=w.create([t.main]):t.main.empty||(i=w.create([w.cursor(t.main.head)])),i?(e(nt(n,i)),!0):!1};function Xn(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=e(o);ao&&(t="delete.forward",a=ln(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=ln(n,o,!1),l=ln(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o)}});return s.changes.empty?!1:(n.dispatch(i.update(s,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?O.announce.of(i.phrase("Selection deleted")):void 0})),!0)}function ln(n,e,t){if(n instanceof O)for(let i of n.state.facet(O.atomicRanges).map(s=>s(n)))i.between(e,e,(s,r)=>{se&&(e=t?r:s)});return e}const Sc=(n,e)=>Xn(n,t=>{let{state:i}=n,s=i.doc.lineAt(t),r,o;if(!e&&t>s.from&&tSc(n,!1),Cc=n=>Sc(n,!0),Ac=(n,e)=>Xn(n,t=>{let i=t,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(e?r.to:r.from)){i==t&&r.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let a=Oe(r.text,i-r.from,e)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),c=o(h);if(l!=null&&c!=l)break;(h!=" "||i!=t)&&(l=c),i=a}return i}),Mc=n=>Ac(n,!1),Im=n=>Ac(n,!0),Dc=n=>Xn(n,e=>{let t=n.lineBlockAt(e).to;return eXn(n,e=>{let t=n.lineBlockAt(e).from;return e>t?t:Math.max(0,e-1)}),_m=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:_.of(["",""])},range:w.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},Vm=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Oe(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Oe(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Zn(n){let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),t>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(i)}else e.push({from:s.from,to:r.to,ranges:[i]});t=r.number+1}return e}function Tc(n,e,t){if(n.readOnly)return!1;let i=[],s=[];for(let r of Zn(n)){if(t?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(t?r.to+1:r.from-1),l=o.length+1;if(t){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}const Fm=({state:n,dispatch:e})=>Tc(n,e,!1),Hm=({state:n,dispatch:e})=>Tc(n,e,!0);function Oc(n,e,t){if(n.readOnly)return!1;let i=[];for(let s of Zn(n))t?i.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):i.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});return e(n.update({changes:i,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Wm=({state:n,dispatch:e})=>Oc(n,e,!1),zm=({state:n,dispatch:e})=>Oc(n,e,!0),jm=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(Zn(e).map(({from:s,to:r})=>(s>0?s--:rn.moveVertically(s,!0)).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function qm(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=de(n).resolveInner(e),i=t.childBefore(e),s=t.childAfter(e),r;return i&&s&&i.to<=e&&s.from>=e&&(r=i.type.prop(L.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from?{from:i.to,to:s.from}:null}const $m=Bc(!1),Km=Bc(!0);function Bc(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),a=!n&&r==o&&qm(e,r);n&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new Kn(e,{simulateBreak:r,simulateDoubleBreak:!!a}),c=Vr(h,r);for(c==null&&(c=/^\s*/.exec(e.doc.lineAt(r).text)[0].length);ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,s,i),t=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}const Um=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new Kn(n,{overrideIndentation:r=>{let o=t[r];return o??-1}}),s=$r(n,(r,o,l)=>{let a=Vr(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],c=Ii(n,a);(h!=c||l.fromn.readOnly?!1:(e(n.update($r(n,(t,i)=>{i.push({from:t.from,insert:n.facet($n)})}),{userEvent:"input.indent"})),!0),Ec=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update($r(n,(t,i)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let r=Hi(s,n.tabSize),o=0,l=Ii(n,Math.max(0,r-Lt(n)));for(;o({mac:n.key,run:n.run,shift:n.shift}))),Ym=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:fm,shift:Sm},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:um,shift:Cm},{key:"Alt-ArrowUp",run:Fm},{key:"Shift-Alt-ArrowUp",run:Wm},{key:"Alt-ArrowDown",run:Hm},{key:"Shift-Alt-ArrowDown",run:zm},{key:"Escape",run:Lm},{key:"Mod-Enter",run:Km},{key:"Alt-l",mac:"Ctrl-l",run:Em},{key:"Mod-i",run:Rm,preventDefault:!0},{key:"Mod-[",run:Ec},{key:"Mod-]",run:Pc},{key:"Mod-Alt-\\",run:Um},{key:"Shift-Mod-k",run:jm},{key:"Shift-Mod-\\",run:km},{key:"Mod-/",run:zp},{key:"Alt-A",run:qp}].concat(Jm),Xm={key:"Tab",run:Pc,shift:Ec},Zm="#2E3235",Ue="#DDDDDD",Ai="#B9D2FF",an="#b0b0b0",Qm="#e0e0e0",Rc="#808080",xs="#000000",eg="#A54543",Lc="#fc6d24",Ct="#fda331",Ss="#8abeb7",Ml="#b5bd68",mi="#6fb3d2",gi="#cc99cc",tg="#6987AF",Dl=Lc,Tl="#292d30",hn=Ai+"30",ig=Zm,Cs=Ue,ng="#202325",Ol=Ue,sg=O.theme({"&":{color:Ue,backgroundColor:ig},".cm-content":{caretColor:Ol},".cm-cursor, .cm-dropCursor":{borderLeftColor:Ol},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:ng},".cm-panels":{backgroundColor:Tl,color:an},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:Ai,outline:`1px solid ${an}`,color:xs},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:Qm,color:xs},".cm-activeLine":{backgroundColor:hn},".cm-selectionMatch":{backgroundColor:hn},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{outline:`1px solid ${an}`},"&.cm-focused .cm-matchingBracket":{backgroundColor:Ai,color:xs},".cm-gutters":{borderRight:"1px solid #ffffff10",color:Rc,backgroundColor:Tl},".cm-activeLineGutter":{backgroundColor:hn},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:Ai},".cm-tooltip":{border:"none",backgroundColor:Cs},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Cs,borderBottomColor:Cs},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:hn,color:an}}},{dark:!0}),rg=li.define([{tag:m.keyword,color:Ct},{tag:[m.name,m.deleted,m.character,m.propertyName,m.macroName],color:Ml},{tag:[m.variableName],color:mi},{tag:[m.function(m.variableName)],color:Ct},{tag:[m.labelName],color:Lc},{tag:[m.color,m.constant(m.name),m.standard(m.name)],color:Ct},{tag:[m.definition(m.name),m.separator],color:gi},{tag:[m.brace],color:gi},{tag:[m.annotation],color:Dl},{tag:[m.number,m.changed,m.annotation,m.modifier,m.self,m.namespace],color:Ct},{tag:[m.typeName,m.className],color:mi},{tag:[m.operator,m.operatorKeyword],color:gi},{tag:[m.tagName],color:Ct},{tag:[m.squareBracket],color:gi},{tag:[m.angleBracket],color:gi},{tag:[m.attributeName],color:mi},{tag:[m.regexp],color:Ct},{tag:[m.quote],color:Ue},{tag:[m.string],color:Ml},{tag:m.link,color:tg,textDecoration:"underline",textUnderlinePosition:"under"},{tag:[m.url,m.escape,m.special(m.string)],color:Ss},{tag:[m.meta],color:eg},{tag:[m.comment],color:Rc,fontStyle:"italic"},{tag:m.monospace,color:Ue},{tag:m.strong,fontWeight:"bold",color:Ct},{tag:m.emphasis,fontStyle:"italic",color:mi},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.heading,fontWeight:"bold",color:Ue},{tag:m.special(m.heading1),fontWeight:"bold",color:Ue},{tag:m.heading1,fontWeight:"bold",color:Ue},{tag:[m.heading2,m.heading3,m.heading4],fontWeight:"bold",color:Ue},{tag:[m.heading5,m.heading6],color:Ue},{tag:[m.atom,m.bool,m.special(m.variableName)],color:Ss},{tag:[m.processingInstruction,m.inserted],color:Ss},{tag:[m.contentSeparator],color:mi},{tag:m.invalid,color:Ai,borderBottom:`1px dotted ${Dl}`}]),og=[sg,Hr(rg)],Bl="#2e3440",Kr="#3b4252",Pl="#434c5e",cn="#4c566a",El="#e5e9f0",kr="#eceff4",As="#8fbcbb",Rl="#88c0d0",lg="#81a1c1",He="#5e81ac",ag="#bf616a",Wt="#d08770",Ms="#ebcb8b",Ll="#a3be8c",hg="#b48ead",Il="#d30102",Ur=kr,Ds=Ur,cg="#ffffff",Ts=Kr,fg=Ur,Nl=Kr,ug=O.theme({"&":{color:Bl,backgroundColor:cg},".cm-content":{caretColor:Nl},".cm-cursor, .cm-dropCursor":{borderLeftColor:Nl},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:fg},".cm-panels":{backgroundColor:Ur,color:cn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:`1px solid ${cn}`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:El},".cm-activeLine":{backgroundColor:Ds},".cm-selectionMatch":{backgroundColor:El},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{outline:`1px solid ${cn}`},"&.cm-focused .cm-matchingBracket":{backgroundColor:kr},".cm-gutters":{backgroundColor:kr,color:Bl,border:"none"},".cm-activeLineGutter":{backgroundColor:Ds},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Ts},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Ts,borderBottomColor:Ts},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ds,color:cn}}},{dark:!1}),dg=li.define([{tag:m.keyword,color:He},{tag:[m.name,m.deleted,m.character,m.propertyName,m.macroName],color:Wt},{tag:[m.variableName],color:Wt},{tag:[m.function(m.variableName)],color:He},{tag:[m.labelName],color:lg},{tag:[m.color,m.constant(m.name),m.standard(m.name)],color:He},{tag:[m.definition(m.name),m.separator],color:Ll},{tag:[m.brace],color:As},{tag:[m.annotation],color:Il},{tag:[m.number,m.changed,m.annotation,m.modifier,m.self,m.namespace],color:Rl},{tag:[m.typeName,m.className],color:Ms},{tag:[m.operator,m.operatorKeyword],color:Ll},{tag:[m.tagName],color:hg},{tag:[m.squareBracket],color:ag},{tag:[m.angleBracket],color:Wt},{tag:[m.attributeName],color:Ms},{tag:[m.regexp],color:He},{tag:[m.quote],color:Kr},{tag:[m.string],color:Wt},{tag:m.link,color:As,textDecoration:"underline",textUnderlinePosition:"under"},{tag:[m.url,m.escape,m.special(m.string)],color:Wt},{tag:[m.meta],color:Rl},{tag:[m.comment],color:Pl,fontStyle:"italic"},{tag:m.strong,fontWeight:"bold",color:He},{tag:m.emphasis,fontStyle:"italic",color:He},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.heading,fontWeight:"bold",color:He},{tag:m.special(m.heading1),fontWeight:"bold",color:He},{tag:m.heading1,fontWeight:"bold",color:He},{tag:[m.heading2,m.heading3,m.heading4],fontWeight:"bold",color:He},{tag:[m.heading5,m.heading6],color:He},{tag:[m.atom,m.bool,m.special(m.variableName)],color:Wt},{tag:[m.processingInstruction,m.inserted],color:As},{tag:[m.contentSeparator],color:Ms},{tag:m.invalid,color:Pl,borderBottom:`1px dotted ${Il}`}]),pg=[ug,Hr(dg)];function _l(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function mg(n){let e=Object.create(null),t=Object.create(null);for(let{label:s}of n){e[s[0]]=!0;for(let r=1;rtypeof s=="string"?{label:s}:s),[t,i]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:mg(e);return s=>{let r=s.matchBefore(i);return r||s.explicit?{from:r?r.from:s.pos,options:e,validFor:t}:null}}function fy(n,e){return t=>{for(let i=de(t.state).resolveInner(t.pos,-1);i;i=i.parent)if(n.indexOf(i.name)>-1)return null;return e(t)}}class Vl{constructor(e,t,i){this.completion=e,this.source=t,this.match=i}}function vr(n){return n.selection.main.head}function yg(n,e,t,i){return Object.assign(Object.assign({},n.changeByRange(s=>{if(s==n.selection.main)return{changes:{from:t,to:i,insert:e},range:w.cursor(t+e.length)};let r=i-t;return!s.empty||r&&n.sliceDoc(s.from-r,s.from)!=n.sliceDoc(t,i)?{range:s}:{changes:{from:s.from-r,to:s.from,insert:e},range:w.cursor(s.from-r+e.length)}})),{userEvent:"input.complete"})}function Ic(n,e){const t=e.completion.apply||e.completion.label;let i=e.source;typeof t=="string"?n.dispatch(yg(n.state,t,i.from,i.to)):t(n,e.completion,i.from,i.to)}const Fl=new WeakMap;function bg(n){if(!Array.isArray(n))return n;let e=Fl.get(n);return e||Fl.set(n,e=gg(n)),e}class wg{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let t=0;t=48&&A<=57||A>=97&&A<=122?2:A>=65&&A<=90?1:0:(T=ga(A))!=T.toLowerCase()?1:T!=T.toUpperCase()?2:0;(!v||B==1&&y||S==0&&B!=0)&&(t[f]==A||i[f]==A&&(u=!0)?o[f++]=v:o.length&&(b=!1)),S=B,v+=Ee(A)}return f==a&&o[0]==0&&b?this.result(-100+(u?-200:0),o,e):d==a&&p==0?[-200-e.length,0,g]:l>-1?[-700-e.length,l,l+this.pattern.length]:d==a?[-200+-700-e.length,p,g]:f==a?this.result(-100+(u?-200:0)+-700+(b?0:-1100),o,e):t.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,t,i){let s=[e-i.length],r=1;for(let o of t){let l=o+(this.astral?Ee(me(i,o)):1);r>1&&s[r-1]==o?s[r-1]=l:(s[r++]=o,s[r++]=l)}return s}}const Nt=D.define({combine(n){return Vt(n,{activateOnTyping:!0,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],compareCompletions:(e,t)=>e.label.localeCompare(t.label),interactionDelay:75},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,optionClass:(e,t)=>i=>kg(e(i),t(i)),addToOptions:(e,t)=>e.concat(t)})}});function kg(n,e){return n?e?n+" "+e:n:e}function vg(n){let e=n.addToOptions.slice();return n.icons&&e.push({render(t){let i=document.createElement("div");return i.classList.add("cm-completionIcon"),t.type&&i.classList.add(...t.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),i.setAttribute("aria-hidden","true"),i},position:20}),e.push({render(t,i,s){let r=document.createElement("span");r.className="cm-completionLabel";let{label:o}=t,l=0;for(let a=1;al&&r.appendChild(document.createTextNode(o.slice(l,h)));let f=r.appendChild(document.createElement("span"));f.appendChild(document.createTextNode(o.slice(h,c))),f.className="cm-completionMatchedText",l=c}return lt.position-i.position).map(t=>t.render)}function Hl(n,e,t){if(n<=t)return{from:0,to:n};if(e<0&&(e=0),e<=n>>1){let s=Math.floor(e/t);return{from:s*t,to:(s+1)*t}}let i=Math.floor((n-e)/t);return{from:n-(i+1)*t,to:n-i*t}}class xg{constructor(e,t){this.view=e,this.stateField=t,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:l=>this.positionInfo(l),key:this};let i=e.state.field(t),{options:s,selected:r}=i.open,o=e.state.facet(Nt);this.optionContent=vg(o),this.optionClass=o.optionClass,this.range=Hl(s.length,r,o.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",l=>{for(let a=l.target,h;a&&a!=this.dom;a=a.parentNode)if(a.nodeName=="LI"&&(h=/-(\d+)$/.exec(a.id))&&+h[1]{this.info&&this.view.requestMeasure(this.placeInfo)})}mount(){this.updateSel()}update(e){e.state.field(this.stateField)!=e.startState.field(this.stateField)&&this.updateSel()}positioned(){this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;if((t.selected>-1&&t.selected=this.range.to)&&(this.range=Hl(t.options.length,t.selected,this.view.state.facet(Nt).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(t.options,e.id,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfo)})),this.updateSelectedOption(t.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:i}=t.options[t.selected],{info:s}=i;if(!s)return;let r=typeof s=="string"?document.createTextNode(s):s(i);if(!r)return;"then"in r?r.then(o=>{o&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(o)}).catch(o=>We(this.view.state,o,"completion info")):this.addInfoPane(r)}}addInfoPane(e){let t=this.info=document.createElement("div");t.className="cm-tooltip cm-completionInfo",t.appendChild(e),this.dom.appendChild(t),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(e){let t=null;for(let i=this.list.firstChild,s=this.range.from;i;i=i.nextSibling,s++)s==e?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),t=i):i.hasAttribute("aria-selected")&&i.removeAttribute("aria-selected");return t&&Cg(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.ownerDocument.defaultView||window,i=this.dom.getBoundingClientRect(),s=this.info.getBoundingClientRect(),r=e.getBoundingClientRect();if(r.top>Math.min(t.innerHeight,i.bottom)-10||r.bottom=s.height||p>i.top?c=r.bottom-i.top+"px":f=i.bottom-r.top+"px"}return{top:c,bottom:f,maxWidth:h,class:a?o?"left-narrow":"right-narrow":l?"left":"right"}}positionInfo(e){this.info&&(e?(this.info.style.top=e.top,this.info.style.bottom=e.bottom,this.info.style.maxWidth=e.maxWidth,this.info.className="cm-tooltip cm-completionInfo cm-completionInfo-"+e.class):this.info.style.top="-1e6px")}createListBox(e,t,i){const s=document.createElement("ul");s.id=t,s.setAttribute("role","listbox"),s.setAttribute("aria-expanded","true"),s.setAttribute("aria-label",this.view.state.phrase("Completions"));for(let r=i.from;rnew xg(e,n)}function Cg(n,e){let t=n.getBoundingClientRect(),i=e.getBoundingClientRect();i.topt.bottom&&(n.scrollTop+=i.bottom-t.bottom)}function Wl(n){return(n.boost||0)*100+(n.apply?10:0)+(n.info?5:0)+(n.type?1:0)}function Ag(n,e){let t=[],i=0;for(let l of n)if(l.hasResult())if(l.result.filter===!1){let a=l.result.getMatch;for(let h of l.result.options){let c=[1e9-i++];if(a)for(let f of a(h))c.push(f);t.push(new Vl(h,l,c))}}else{let a=new wg(e.sliceDoc(l.from,l.to)),h;for(let c of l.result.options)(h=a.match(c.label))&&(c.boost!=null&&(h[0]+=c.boost),t.push(new Vl(c,l,h)))}let s=[],r=null,o=e.facet(Nt).compareCompletions;for(let l of t.sort((a,h)=>h.match[0]-a.match[0]||o(a.completion,h.completion)))!r||r.label!=l.completion.label||r.detail!=l.completion.detail||r.type!=null&&l.completion.type!=null&&r.type!=l.completion.type||r.apply!=l.completion.apply?s.push(l):Wl(l.completion)>Wl(r)&&(s[s.length-1]=l),r=l.completion;return s}class Mi{constructor(e,t,i,s,r){this.options=e,this.attrs=t,this.tooltip=i,this.timestamp=s,this.selected=r}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new Mi(this.options,zl(t,e),this.tooltip,this.timestamp,e)}static build(e,t,i,s,r){let o=Ag(e,t);if(!o.length)return null;let l=t.facet(Nt).selectOnOpen?0:-1;if(s&&s.selected!=l&&s.selected!=-1){let a=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(a,h.from):a,1e8),create:Sg(ji),above:r.aboveCursor},s?s.timestamp:Date.now(),l)}map(e){return new Mi(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected)}}class _n{constructor(e,t,i){this.active=e,this.id=t,this.open=i}static start(){return new _n(Tg,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,i=t.facet(Nt),r=(i.override||t.languageDataAt("autocomplete",vr(t)).map(bg)).map(l=>(this.active.find(h=>h.source==l)||new rt(l,this.active.some(h=>h.state!=0)?1:0)).update(e,i));r.length==this.active.length&&r.every((l,a)=>l==this.active[a])&&(r=this.active);let o=e.selection||r.some(l=>l.hasResult()&&e.changes.touchesRange(l.from,l.to))||!Mg(r,this.active)?Mi.build(r,t,this.id,this.open,i):this.open&&e.docChanged?this.open.map(e.changes):this.open;!o&&r.every(l=>l.state!=1)&&r.some(l=>l.hasResult())&&(r=r.map(l=>l.hasResult()?new rt(l.source,0):l));for(let l of e.effects)l.is(Vc)&&(o=o&&o.setSelected(l.value,this.id));return r==this.active&&o==this.open?this:new _n(r,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:Dg}}function Mg(n,e){if(n==e)return!0;for(let t=0,i=0;;){for(;t-1&&(t["aria-activedescendant"]=n+"-"+e),t}const Tg=[];function Og(n){return n.isUserEvent("input.type")?"input":n.isUserEvent("delete.backward")?"delete":null}class rt{constructor(e,t,i=-1){this.source=e,this.state=t,this.explicitPos=i}hasResult(){return!1}update(e,t){let i=Og(e),s=this;i?s=s.handleUserEvent(e,i,t):e.docChanged?s=s.handleChange(e):e.selection&&s.state!=0&&(s=new rt(s.source,0));for(let r of e.effects)if(r.is(Nc))s=new rt(s.source,1,r.value?vr(e.state):-1);else if(r.is(_c))s=new rt(s.source,0);else if(r.is(Bg))for(let o of r.value)o.source==s.source&&(s=o);return s}handleUserEvent(e,t,i){return t=="delete"||!i.activateOnTyping?this.map(e.changes):new rt(this.source,1)}handleChange(e){return e.changes.touchesRange(vr(e.startState))?new rt(this.source,0):this.map(e.changes)}map(e){return e.empty||this.explicitPos<0?this:new rt(this.source,this.state,e.mapPos(this.explicitPos))}}const Nc=R.define(),_c=R.define(),Bg=R.define({map(n,e){return n.map(t=>t.map(e))}}),Vc=R.define(),ji=Me.define({create(){return _n.start()},update(n,e){return n.update(e)},provide:n=>[Er.from(n,e=>e.tooltip),O.contentAttributes.from(n,e=>e.attrs)]});function fn(n,e="option"){return t=>{let i=t.state.field(ji,!1);if(!i||!i.open||Date.now()-i.open.timestamp-1?i.open.selected+s*(n?1:-1):n?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),t.dispatch({effects:Vc.of(l)}),!0}}const Pg=n=>{let e=n.state.field(ji,!1);return n.state.readOnly||!e||!e.open||e.open.selected<0||Date.now()-e.open.timestampn.state.field(ji,!1)?(n.dispatch({effects:Nc.of(!0)}),!0):!1,Rg=n=>{let e=n.state.field(ji,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(n.dispatch({effects:_c.of(null)}),!0)},Lg=O.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:`${400}px`,boxSizing:"border-box"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:`${30}px`},".cm-completionInfo.cm-completionInfo-right-narrow":{left:`${30}px`},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Ig{constructor(e,t,i,s){this.field=e,this.line=t,this.from=i,this.to=s}}class Gr{constructor(e,t,i){this.field=e,this.from=t,this.to=i}map(e){let t=e.mapPos(this.from,-1,he.TrackDel),i=e.mapPos(this.to,1,he.TrackDel);return t==null||i==null?null:new Gr(this.field,t,i)}}class Jr{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let i=[],s=[t],r=e.doc.lineAt(t),o=/^\s*/.exec(r.text)[0];for(let a of this.lines){if(i.length){let h=o,c=/^\t*/.exec(a)[0].length;for(let f=0;fnew Gr(a.field,s[a.line]+a.from,s[a.line]+a.to));return{text:i,ranges:l}}static parse(e){let t=[],i=[],s=[],r;for(let o of e.split(/\r\n?|\n/)){for(;r=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(o);){let l=r[1]?+r[1]:null,a=r[2]||r[3]||"",h=-1;for(let c=0;c=h&&f.field++}s.push(new Ig(h,i.length,r.index,r.index+a.length)),o=o.slice(0,r.index)+a+o.slice(r.index+r[0].length)}for(let l;l=/([$#])\\{/.exec(o);){o=o.slice(0,l.index)+l[1]+"{"+o.slice(l.index+l[0].length);for(let a of s)a.line==i.length&&a.from>l.index&&(a.from--,a.to--)}i.push(o)}return new Jr(i,s)}}let Ng=E.widget({widget:new class extends it{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),_g=E.mark({class:"cm-snippetField"});class hi{constructor(e,t){this.ranges=e,this.active=t,this.deco=E.set(e.map(i=>(i.from==i.to?Ng:_g).range(i.from,i.to)))}map(e){let t=[];for(let i of this.ranges){let s=i.map(e);if(!s)return null;t.push(s)}return new hi(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(i=>i.field==this.active&&i.from<=t.from&&i.to>=t.to))}}const qi=R.define({map(n,e){return n&&n.map(e)}}),Vg=R.define(),_i=Me.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(qi))return t.value;if(t.is(Vg)&&n)return new hi(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>O.decorations.from(n,e=>e?e.deco:E.none)});function Yr(n,e){return w.create(n.filter(t=>t.field==e).map(t=>w.range(t.from,t.to)))}function Fg(n){let e=Jr.parse(n);return(t,i,s,r)=>{let{text:o,ranges:l}=e.instantiate(t.state,s),a={changes:{from:s,to:r,insert:_.of(o)},scrollIntoView:!0};if(l.length&&(a.selection=Yr(l,0)),l.length>1){let h=new hi(l,0),c=a.effects=[qi.of(h)];t.state.field(_i,!1)===void 0&&c.push(R.appendConfig.of([_i,qg,$g,Lg]))}t.dispatch(t.state.update(a))}}function Fc(n){return({state:e,dispatch:t})=>{let i=e.field(_i,!1);if(!i||n<0&&i.active==0)return!1;let s=i.active+n,r=n>0&&!i.ranges.some(o=>o.field==s+n);return t(e.update({selection:Yr(i.ranges,s),effects:qi.of(r?null:new hi(i.ranges,s))})),!0}}const Hg=({state:n,dispatch:e})=>n.field(_i,!1)?(e(n.update({effects:qi.of(null)})),!0):!1,Wg=Fc(1),zg=Fc(-1),jg=[{key:"Tab",run:Wg,shift:zg},{key:"Escape",run:Hg}],jl=D.define({combine(n){return n.length?n[0]:jg}}),qg=Fi.highest(qn.compute([jl],n=>n.facet(jl)));function uy(n,e){return Object.assign(Object.assign({},e),{apply:Fg(n)})}const $g=O.domEventHandlers({mousedown(n,e){let t=e.state.field(_i,!1),i;if(!t||(i=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let s=t.ranges.find(r=>r.from<=i&&r.to>=i);return!s||s.field==t.active?!1:(e.dispatch({selection:Yr(t.ranges,s.field),effects:qi.of(t.ranges.some(r=>r.field>s.field)?new hi(t.ranges,s.field):null)}),!0)}}),Vi={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Ot=R.define({map(n,e){let t=e.mapPos(n,-1,he.TrackAfter);return t??void 0}}),Xr=R.define({map(n,e){return e.mapPos(n)}}),Zr=new class extends Pt{};Zr.startSide=1;Zr.endSide=-1;const Hc=Me.define({create(){return F.empty},update(n,e){if(e.selection){let t=e.state.doc.lineAt(e.selection.main.head).from,i=e.startState.doc.lineAt(e.startState.selection.main.head).from;t!=e.changes.mapPos(i,-1)&&(n=F.empty)}n=n.map(e.changes);for(let t of e.effects)t.is(Ot)?n=n.update({add:[Zr.range(t.value,t.value+1)]}):t.is(Xr)&&(n=n.update({filter:i=>i!=t.value}));return n}});function Kg(){return[Gg,Hc]}const Os="()[]{}<>";function Wc(n){for(let e=0;e{if((Ug?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let s=n.state.selection.main;if(i.length>2||i.length==2&&Ee(me(i,0))==1||e!=s.from||t!=s.to)return!1;let r=Xg(n.state,i);return r?(n.dispatch(r),!0):!1}),Jg=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let i=zc(n,n.selection.main.head).brackets||Vi.brackets,s=null,r=n.changeByRange(o=>{if(o.empty){let l=Zg(n.doc,o.head);for(let a of i)if(a==l&&Qn(n.doc,o.head)==Wc(me(a,0)))return{changes:{from:o.head-a.length,to:o.head+a.length},range:w.cursor(o.head-a.length)}}return{range:s=o}});return s||e(n.update(r,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},Yg=[{key:"Backspace",run:Jg}];function Xg(n,e){let t=zc(n,n.selection.main.head),i=t.brackets||Vi.brackets;for(let s of i){let r=Wc(me(s,0));if(e==s)return r==s?t0(n,s,i.indexOf(s+s+s)>-1,t):Qg(n,s,r,t.before||Vi.before);if(e==r&&jc(n,n.selection.main.from))return e0(n,s,r)}return null}function jc(n,e){let t=!1;return n.field(Hc).between(0,n.doc.length,i=>{i==e&&(t=!0)}),t}function Qn(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Ee(me(t,0)))}function Zg(n,e){let t=n.sliceString(e-2,e);return Ee(me(t,0))==t.length?t:t.slice(1)}function Qg(n,e,t,i){let s=null,r=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:Ot.of(o.to+e.length),range:w.range(o.anchor+e.length,o.head+e.length)};let l=Qn(n.doc,o.head);return!l||/\s/.test(l)||i.indexOf(l)>-1?{changes:{insert:e+t,from:o.head},effects:Ot.of(o.head+e.length),range:w.cursor(o.head+e.length)}:{range:s=o}});return s?null:n.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function e0(n,e,t){let i=null,s=n.selection.ranges.map(r=>r.empty&&Qn(n.doc,r.head)==t?w.cursor(r.head+t.length):i=r);return i?null:n.update({selection:w.create(s,n.selection.mainIndex),scrollIntoView:!0,effects:n.selection.ranges.map(({from:r})=>Xr.of(r))})}function t0(n,e,t,i){let s=i.stringPrefixes||Vi.stringPrefixes,r=null,o=n.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Ot.of(l.to+e.length),range:w.range(l.anchor+e.length,l.head+e.length)};let a=l.head,h=Qn(n.doc,a),c;if(h==e){if(ql(n,a))return{changes:{insert:e+e,from:a},effects:Ot.of(a+e.length),range:w.cursor(a+e.length)};if(jc(n,a)){let f=t&&n.sliceDoc(a,a+e.length*3)==e+e+e;return{range:w.cursor(a+e.length*(f?3:1)),effects:Xr.of(a)}}}else{if(t&&n.sliceDoc(a-2*e.length,a)==e+e&&(c=$l(n,a-2*e.length,s))>-1&&ql(n,c))return{changes:{insert:e+e+e+e,from:a},effects:Ot.of(a+e.length),range:w.cursor(a+e.length)};if(n.charCategorizer(a)(h)!=Re.Word&&$l(n,a,s)>-1&&!i0(n,a,e,s))return{changes:{insert:e+e,from:a},effects:Ot.of(a+e.length),range:w.cursor(a+e.length)}}return{range:r=l}});return r?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function ql(n,e){let t=de(n).resolveInner(e+1);return t.parent&&t.from==e}function i0(n,e,t,i){let s=de(n).resolveInner(e,-1),r=i.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=n.sliceDoc(s.from,Math.min(s.to,s.from+t.length+r)),a=l.indexOf(t);if(!a||a>-1&&i.indexOf(l.slice(0,a))>-1){let c=s.firstChild;for(;c&&c.from==s.from&&c.to-c.from>t.length+a;){if(n.sliceDoc(c.to-t.length,c.to)==t)return!1;c=c.firstChild}return!0}let h=s.to==e&&s.parent;if(!h)break;s=h}return!1}function $l(n,e,t){let i=n.charCategorizer(e);if(i(n.sliceDoc(e-1,e))!=Re.Word)return e;for(let s of t){let r=e-s.length;if(n.sliceDoc(r,e)==s&&i(n.sliceDoc(r-1,r))!=Re.Word)return r}return-1}const n0=[{key:"Ctrl-Space",run:Eg},{key:"Escape",run:Rg},{key:"ArrowDown",run:fn(!0)},{key:"ArrowUp",run:fn(!1)},{key:"PageDown",run:fn(!0,"page")},{key:"PageUp",run:fn(!1,"page")},{key:"Enter",run:Pg}];function Ye(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=t[i];typeof s=="string"?n.setAttribute(i,s):s!=null&&(n[i]=s)}e++}for(;el.from==l.to||l.from==l.to-1&&i.doc.lineAt(l.from).to==l.from?E.widget({widget:new p0(l),diagnostic:l}).range(l.from):E.mark({attributes:{class:"cm-lintRange cm-lintRange-"+l.severity},diagnostic:l}).range(l.from,l.to)),!0);return new Mt(o,t,ni(o))}}function ni(n,e=null,t=0){let i=null;return n.between(t,1e9,(s,r,{spec:o})=>{if(!(e&&o.diagnostic!=e))return i=new s0(s,r,o.diagnostic),!1}),i}function r0(n,e){return!!(n.effects.some(t=>t.is(Qr))||n.changes.touchesRange(e.pos))}function $c(n,e){return n.field(Be,!1)?e:e.concat(R.appendConfig.of([Be,O.decorations.compute([Be],t=>{let{selected:i,panel:s}=t.field(Be);return!i||!s||i.from==i.to?E.none:E.set([l0.range(i.from,i.to)])}),vd(a0,{hideOn:r0}),g0]))}function o0(n,e){return{effects:$c(n,[Qr.of(e)])}}const Qr=R.define(),eo=R.define(),Kc=R.define(),Be=Me.define({create(){return new Mt(E.none,null,null)},update(n,e){if(e.docChanged){let t=n.diagnostics.map(e.changes),i=null;if(n.selected){let s=e.changes.mapPos(n.selected.from,1);i=ni(t,n.selected.diagnostic,s)||ni(t,null,s)}n=new Mt(t,n.panel,i)}for(let t of e.effects)t.is(Qr)?n=Mt.init(t.value,n.panel,e.state):t.is(eo)?n=new Mt(n.diagnostics,t.value?es.open:null,n.selected):t.is(Kc)&&(n=new Mt(n.diagnostics,n.panel,t.value));return n},provide:n=>[ar.from(n,e=>e.panel),O.decorations.from(n,e=>e.diagnostics)]}),l0=E.mark({class:"cm-lintRange cm-lintRange-active"});function a0(n,e,t){let{diagnostics:i}=n.state.field(Be),s=[],r=2e8,o=0;i.between(e-(t<0?1:0),e+(t>0?1:0),(a,h,{spec:c})=>{e>=a&&e<=h&&(a==h||(e>a||t>0)&&(eGc(n,t,!1)))}const c0=n=>{let e=n.state.field(Be,!1);(!e||!e.panel)&&n.dispatch({effects:$c(n.state,[eo.of(!0)])});let t=Cd(n,es.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},Kl=n=>{let e=n.state.field(Be,!1);return!e||!e.panel?!1:(n.dispatch({effects:eo.of(!1)}),!0)},f0=n=>{let e=n.state.field(Be,!1);if(!e)return!1;let t=n.state.selection.main,i=e.diagnostics.iter(t.to+1);return!i.value&&(i=e.diagnostics.iter(0),!i.value||i.from==t.from&&i.to==t.to)?!1:(n.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0}),!0)},u0=[{key:"Mod-Shift-m",run:c0},{key:"F8",run:f0}],d0=ye.fromClass(class{constructor(n){this.view=n,this.timeout=-1,this.set=!0;let{delay:e}=n.state.facet($t);this.lintTime=Date.now()+e,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,e)}run(){let n=Date.now();if(nPromise.resolve(i(this.view)))).then(i=>{let s=i.reduce((r,o)=>r.concat(o));this.view.state.doc==e.doc&&this.view.dispatch(o0(this.view.state,s))},i=>{We(this.view.state,i)})}}update(n){let e=n.state.facet($t);(n.docChanged||e!=n.startState.facet($t))&&(this.lintTime=Date.now()+e.delay,this.set||(this.set=!0,this.timeout=setTimeout(this.run,e.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}}),$t=D.define({combine(n){return Object.assign({sources:n.map(e=>e.source)},Vt(n.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null}))},enables:d0});function Uc(n){let e=[];if(n)e:for(let{name:t}of n){for(let i=0;ir.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function Gc(n,e,t){var i;let s=t?Uc(e.actions):[];return Ye("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},Ye("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage():e.message),(i=e.actions)===null||i===void 0?void 0:i.map((r,o)=>{let l=f=>{f.preventDefault();let u=ni(n.state.field(Be).diagnostics,e);u&&r.apply(n,u.from,u.to)},{name:a}=r,h=s[o]?a.indexOf(s[o]):-1,c=h<0?a:[a.slice(0,h),Ye("u",a.slice(h,h+1)),a.slice(h+1)];return Ye("button",{type:"button",class:"cm-diagnosticAction",onclick:l,onmousedown:l,"aria-label":` Action: ${a}${h<0?"":` (access key "${s[o]})"`}.`},c)}),e.source&&Ye("div",{class:"cm-diagnosticSource"},e.source))}class p0 extends it{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return Ye("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class Ul{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=Gc(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class es{constructor(e){this.view=e,this.items=[];let t=s=>{if(s.keyCode==27)Kl(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:r}=this.items[this.selectedIndex],o=Uc(r.actions);for(let l=0;l{for(let r=0;rKl(this.view)},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(Be).selected;if(!e)return-1;for(let t=0;t{let h=-1,c;for(let f=i;fi&&(this.items.splice(i,h-i),s=!0)),t&&c.diagnostic==t.diagnostic?c.dom.hasAttribute("aria-selected")||(c.dom.setAttribute("aria-selected","true"),r=c):c.dom.hasAttribute("aria-selected")&&c.dom.removeAttribute("aria-selected"),i++});i({sel:r.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:o,panel:l})=>{o.topl.bottom&&(this.list.scrollTop+=o.bottom-l.bottom)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let i=e;e=i.nextSibling,i.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)t();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(Be),i=ni(t.diagnostics,this.items[e].diagnostic);!i||this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:Kc.of(i)})}static open(e){return new es(e)}}function m0(n,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(n)}')`}function Bs(n){return m0(``,'width="6" height="3"')}const g0=O.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:Bs("#d11")},".cm-lintRange-warning":{backgroundImage:Bs("orange")},".cm-lintRange-info":{backgroundImage:Bs("#999")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}}),y0=(()=>[Ed(),Qu(),Zp(),Ap(),ju(),N.allowMultipleSelections.of(!0),up(),Hr(Op,{fallback:!0}),Kg(),cd(),dd(),qn.of([...Yg,...Ym,...lm,...xp,...n0,...u0])])(),Gl={python:()=>Pe(()=>import("./index.c79358b3.js"),["assets/index.c79358b3.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.cef508a9.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"]).then(n=>n.python()),markdown:async()=>{const[n,e]=await Promise.all([Pe(()=>import("./index.8c95658b.js"),["assets/index.8c95658b.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.3b4ef889.js","assets/index.cef508a9.js","assets/index.ec481f8e.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js","assets/index.de6da618.js"]),Pe(()=>import("./frontmatter.7c06757b.js"),["assets/frontmatter.7c06757b.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/yaml.44f733df.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"])]);return n.markdown({extensions:[e.frontmatter]})},json:()=>Pe(()=>import("./index.fef2966f.js"),["assets/index.fef2966f.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.cef508a9.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"]).then(n=>n.json()),html:()=>Pe(()=>import("./index.3b4ef889.js"),["assets/index.3b4ef889.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.cef508a9.js","assets/index.ec481f8e.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js","assets/index.de6da618.js"]).then(n=>n.html()),css:()=>Pe(()=>import("./index.ec481f8e.js"),["assets/index.ec481f8e.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.cef508a9.js","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"]).then(n=>n.css()),javascript:()=>Pe(()=>import("./index.de6da618.js"),["assets/index.de6da618.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"]).then(n=>n.javascript()),typescript:()=>Pe(()=>import("./index.de6da618.js"),["assets/index.de6da618.js","assets/DropdownArrow.svelte_svelte_type_style_lang.a71c0c1e.css","assets/index.37b24c07.js","assets/index.f554ccc1.css","assets/Blocks.5efe22d4.js","assets/Blocks.15437627.css","assets/Empty.svelte_svelte_type_style_lang.94e7c7a3.js","assets/Empty.svelte_svelte_type_style_lang.04656a45.css","assets/BlockLabel.7ce695d8.js","assets/Empty.ae5c2506.js","assets/Copy.d6bfc6ec.js","assets/Download.5a6e5fa3.js"]).then(n=>n.javascript({typescript:!0})),yaml:()=>Pe(()=>import("./yaml.44f733df.js"),[]).then(n=>qt.define(n.yaml)),dockerfile:()=>Pe(()=>import("./dockerfile.088eba71.js"),[]).then(n=>qt.define(n.dockerFile)),shell:()=>Pe(()=>import("./shell.5aca23a1.js"),[]).then(n=>qt.define(n.shell)),r:()=>Pe(()=>import("./r.89eb2633.js"),[]).then(n=>qt.define(n.r))},b0={py:"python",md:"markdown",js:"javascript",ts:"typescript",sh:"shell"};async function w0(n){const e=Gl[n]||Gl[b0[n]]||void 0;if(e)return e()}function k0(n){let e,t,i;return{c(){e=mt("div"),t=mt("div"),te(t,"class",i="codemirror-wrapper "+n[0]+" svelte-r1sajp"),te(t,"style",n[2]),te(e,"class","wrap")},m(s,r){Ce(s,e,r),Yt(e,t),n[12](t)},p(s,[r]){r&1&&i!==(i="codemirror-wrapper "+s[0]+" svelte-r1sajp")&&te(t,"class",i),r&4&&te(t,"style",s[2])},i:vi,o:vi,d(s){s&&Ae(e),n[12](null)}}}const v0="--block-label-margin",x0="--block-label-padding",S0="--block-label-text-size",C0="--line-sm",A0=/(?:([0-9\.]+[a-zA-Z%]+)\s*)/g;function M0(n,e,t){let{classNames:i=""}=e,{value:s=""}=e,{dark_mode:r}=e,{basic:o=!0}=e,{language:l}=e,{extensions:a=[]}=e,{useTab:h=!0}=e,{readonly:c=!1}=e,{placeholder:f=void 0}=e;const u=Xl();let d,p,g;async function y(C){const ie=await w0(C);t(11,d=ie)}function b(C){g&&C!==g.state.doc.toString()&&g.dispatch({changes:{from:0,to:g.state.doc.length,insert:C}})}function v(){return new O({parent:p,state:T(s)})}function x(C){if(C.docChanged){const J=C.state.doc.toString();t(3,s=J),u("change",J)}}function S(){return[...B(o,h,f,c,d),A,...U(),...a]}const A=O.theme({"&":{fontSize:"var(--text-sm)",backgroundColor:"var(--border-color-secondary)"},".cm-content":{paddingTop:"5px",paddingBottom:"5px",fontFamily:"var(--font-mono)",minHeight:"100%"},".cm-gutter":{minHeight:"231px"},".cm-gutters":{marginRight:"1px",borderRight:"1px solid var(--border-color-primary)",backgroundColor:"transparent",color:"var(--body-text-color-subdued)"},".cm-focused":{outline:"none"}});function T(C){return N.create({doc:C??void 0,extensions:S()})}function B(C,ie,J,Z,oe){const H=[O.editable.of(!Z),N.readOnly.of(Z)];return C&&H.push(y0),ie&&H.push(qn.of([Xm])),J&&H.push(od(J)),oe&&H.push(oe),H.push(O.updateListener.of(x)),H}function U(){const C=[];return r?C.push(og):C.push(pg),C}function I(){g?.dispatch({effects:R.reconfigure.of(S())})}Yc(()=>(g=v(),()=>g?.destroy()));let P="";function V(){const C=getComputedStyle(document.documentElement).getPropertyValue(v0).trim(),ie=getComputedStyle(document.documentElement).getPropertyValue(x0),J=getComputedStyle(document.documentElement).getPropertyValue(S0).trim(),Z=getComputedStyle(document.documentElement).getPropertyValue(C0).trim(),oe=ie.match(A0);if(!oe)return;let[H,,we]=oe.map(lt=>lt.trim());we||(we=H);const Fe=!C||C=="0"?"":` ${C} +`,st=/[a-zA-Z%]/.test(Z)?Z:`(${J} * ${Z})`;t(2,P=`padding-top: calc(${H} + ${we} +${Fe} ${st});`)}V();function G(C){xr[C?"unshift":"push"](()=>{p=C,t(1,p)})}return n.$$set=C=>{"classNames"in C&&t(0,i=C.classNames),"value"in C&&t(3,s=C.value),"dark_mode"in C&&t(4,r=C.dark_mode),"basic"in C&&t(5,o=C.basic),"language"in C&&t(6,l=C.language),"extensions"in C&&t(7,a=C.extensions),"useTab"in C&&t(8,h=C.useTab),"readonly"in C&&t(9,c=C.readonly),"placeholder"in C&&t(10,f=C.placeholder)},n.$$.update=()=>{n.$$.dirty&64&&y(l),n.$$.dirty&2048&&I(),n.$$.dirty&8&&b(s)},[i,p,P,s,r,o,l,a,h,c,f,d,G]}class Jc extends si{constructor(e){super(),ri(this,e,M0,k0,oi,{classNames:0,value:3,dark_mode:4,basic:5,language:6,extensions:7,useTab:8,readonly:9,placeholder:10})}}function Jl(n){let e,t,i,s;return t=new ca({}),{c(){e=mt("span"),ce(t.$$.fragment),te(e,"class","check svelte-qi7jcw")},m(r,o){Ce(r,e,o),fe(t,e,null),s=!0},i(r){s||(W(t.$$.fragment,r),Zl(()=>{i||(i=bn(e,wn,{},!0)),i.run(1)}),s=!0)},o(r){$(t.$$.fragment,r),i||(i=bn(e,wn,{},!1)),i.run(0),s=!1},d(r){r&&Ae(e),ue(t),r&&i&&i.end()}}}function D0(n){let e,t,i,s,r,o,l;i=new Zc({});let a=n[0]&&Jl();return{c(){e=mt("button"),t=mt("span"),ce(i.$$.fragment),s=gt(),a&&a.c(),te(t,"class","copy-text"),kn(t,"copied",n[0]),te(e,"title","copy"),te(e,"class","svelte-qi7jcw")},m(h,c){Ce(h,e,c),Yt(e,t),fe(i,t,null),Yt(e,s),a&&a.m(e,null),r=!0,o||(l=Ql(e,"click",n[1]),o=!0)},p(h,[c]){c&1&&kn(t,"copied",h[0]),h[0]?a?c&1&&W(a,1):(a=Jl(),a.c(),W(a,1),a.m(e,null)):a&&(Vn(),$(a,1,1,()=>{a=null}),Fn())},i(h){r||(W(i.$$.fragment,h),W(a),r=!0)},o(h){$(i.$$.fragment,h),$(a),r=!1},d(h){h&&Ae(e),ue(i),a&&a.d(),o=!1,l()}}}function T0(n,e,t){let i=!1,{value:s}=e,r;function o(){t(0,i=!0),r&&clearTimeout(r),r=setTimeout(()=>{t(0,i=!1)},2e3)}async function l(){"clipboard"in navigator&&(await navigator.clipboard.writeText(s),o())}return ea(()=>{r&&clearTimeout(r)}),n.$$set=a=>{"value"in a&&t(2,s=a.value)},[i,l,s]}class O0 extends si{constructor(e){super(),ri(this,e,T0,D0,oi,{value:2})}}function Yl(n){let e,t,i,s;return t=new ca({}),{c(){e=mt("span"),ce(t.$$.fragment),te(e,"class","check svelte-14d303a")},m(r,o){Ce(r,e,o),fe(t,e,null),s=!0},i(r){s||(W(t.$$.fragment,r),Zl(()=>{i||(i=bn(e,wn,{},!0)),i.run(1)}),s=!0)},o(r){$(t.$$.fragment,r),i||(i=bn(e,wn,{},!1)),i.run(0),s=!1},d(r){r&&Ae(e),ue(t),r&&i&&i.end()}}}function B0(n){let e,t,i,s,r,o,l;t=new Qc({});let a=n[0]&&Yl();return{c(){e=mt("a"),ce(t.$$.fragment),i=gt(),a&&a.c(),te(e,"download",s="file."+n[2]),te(e,"href",n[1]),te(e,"class","svelte-14d303a"),kn(e,"copied",n[0])},m(h,c){Ce(h,e,c),fe(t,e,null),Yt(e,i),a&&a.m(e,null),r=!0,o||(l=Ql(e,"click",n[3]),o=!0)},p(h,[c]){h[0]?a?c&1&&W(a,1):(a=Yl(),a.c(),W(a,1),a.m(e,null)):a&&(Vn(),$(a,1,1,()=>{a=null}),Fn()),(!r||c&4&&s!==(s="file."+h[2]))&&te(e,"download",s),(!r||c&2)&&te(e,"href",h[1]),c&1&&kn(e,"copied",h[0])},i(h){r||(W(t.$$.fragment,h),W(a),r=!0)},o(h){$(t.$$.fragment,h),$(a),r=!1},d(h){h&&Ae(e),ue(t),a&&a.d(),o=!1,l()}}}function P0(n){return{py:"py",python:"py",md:"md",markdown:"md",json:"json",html:"html",css:"css",js:"js",javascript:"js",ts:"ts",typescript:"ts",yaml:"yaml",yml:"yml",dockerfile:"dockerfile",sh:"sh",shell:"sh",r:"r"}[n]||"txt"}function E0(n,e,t){let i,s,{value:r}=e,{language:o}=e,l=!1,a;function h(){t(0,l=!0),a&&clearTimeout(a),a=setTimeout(()=>{t(0,l=!1)},2e3)}return ea(()=>{a&&clearTimeout(a)}),n.$$set=c=>{"value"in c&&t(4,r=c.value),"language"in c&&t(5,o=c.language)},n.$$.update=()=>{n.$$.dirty&32&&t(2,i=P0(o)),n.$$.dirty&16&&t(1,s=URL.createObjectURL(new Blob([r])))},[l,s,i,h,r,o]}class R0 extends si{constructor(e){super(),ri(this,e,E0,B0,oi,{value:4,language:5})}}function L0(n){let e,t,i,s,r;return t=new R0({props:{value:n[0],language:n[1]}}),s=new O0({props:{value:n[0]}}),{c(){e=mt("div"),ce(t.$$.fragment),i=gt(),ce(s.$$.fragment),te(e,"class","svelte-1yin446")},m(o,l){Ce(o,e,l),fe(t,e,null),Yt(e,i),fe(s,e,null),r=!0},p(o,[l]){const a={};l&1&&(a.value=o[0]),l&2&&(a.language=o[1]),t.$set(a);const h={};l&1&&(h.value=o[0]),s.$set(h)},i(o){r||(W(t.$$.fragment,o),W(s.$$.fragment,o),r=!0)},o(o){$(t.$$.fragment,o),$(s.$$.fragment,o),r=!1},d(o){o&&Ae(e),ue(t),ue(s)}}}function I0(n,e,t){let{value:i}=e,{language:s}=e;return n.$$set=r=>{"value"in r&&t(0,i=r.value),"language"in r&&t(1,s=r.language)},[i,s]}class N0 extends si{constructor(e){super(),ri(this,e,I0,L0,oi,{value:0,language:1})}}function _0(n){let e,t;return e=new aa({props:{variant:"solid",padding:!1,elem_id:n[2],elem_classes:n[3],visible:n[4],$$slots:{default:[F0]},$$scope:{ctx:n}}}),{c(){ce(e.$$.fragment)},m(i,s){fe(e,i,s),t=!0},p(i,s){const r={};s&4&&(r.elem_id=i[2]),s&8&&(r.elem_classes=i[3]),s&16&&(r.visible=i[4]),s&16835&&(r.$$scope={dirty:s,ctx:i}),e.$set(r)},i(i){t||(W(e.$$.fragment,i),t=!0)},o(i){$(e.$$.fragment,i),t=!1},d(i){ue(e,i)}}}function V0(n){let e,t;return e=new aa({props:{variant:"solid",padding:!1,elem_id:n[2],elem_classes:n[3],visible:n[4],$$slots:{default:[j0]},$$scope:{ctx:n}}}),{c(){ce(e.$$.fragment)},m(i,s){fe(e,i,s),t=!0},p(i,s){const r={};s&4&&(r.elem_id=i[2]),s&8&&(r.elem_classes=i[3]),s&16&&(r.visible=i[4]),s&16835&&(r.$$scope={dirty:s,ctx:i}),e.$set(r)},i(i){t||(W(e.$$.fragment,i),t=!0)},o(i){$(e.$$.fragment,i),t=!1},d(i){ue(e,i)}}}function F0(n){let e,t,i,s,r,o,l;const a=[n[8]];let h={};for(let u=0;usa(r,"value",c)),{c(){ce(e.$$.fragment),t=gt(),ce(i.$$.fragment),s=gt(),ce(r.$$.fragment)},m(u,d){fe(e,u,d),Ce(u,t,d),fe(i,u,d),Ce(u,s,d),fe(r,u,d),l=!0},p(u,d){const p=d&256?ra(a,[oa(u[8])]):{};e.$set(p);const g={};d&128&&(g.show_label=u[7]),d&64&&(g.label=u[6]),i.$set(g);const y={};d&2&&(y.language=u[1]),!o&&d&1&&(o=!0,y.value=u[0],la(()=>o=!1)),r.$set(y)},i(u){l||(W(e.$$.fragment,u),W(i.$$.fragment,u),W(r.$$.fragment,u),l=!0)},o(u){$(e.$$.fragment,u),$(i.$$.fragment,u),$(r.$$.fragment,u),l=!1},d(u){ue(e,u),u&&Ae(t),ue(i,u),u&&Ae(s),ue(r,u)}}}function H0(n){let e,t,i,s,r;e=new N0({props:{language:n[1],value:n[0]}});function o(a){n[11](a)}let l={language:n[1],dark_mode:n[9],readonly:!0};return n[0]!==void 0&&(l.value=n[0]),i=new Jc({props:l}),xr.push(()=>sa(i,"value",o)),{c(){ce(e.$$.fragment),t=gt(),ce(i.$$.fragment)},m(a,h){fe(e,a,h),Ce(a,t,h),fe(i,a,h),r=!0},p(a,h){const c={};h&2&&(c.language=a[1]),h&1&&(c.value=a[0]),e.$set(c);const f={};h&2&&(f.language=a[1]),!s&&h&1&&(s=!0,f.value=a[0],la(()=>s=!1)),i.$set(f)},i(a){r||(W(e.$$.fragment,a),W(i.$$.fragment,a),r=!0)},o(a){$(e.$$.fragment,a),$(i.$$.fragment,a),r=!1},d(a){ue(e,a),a&&Ae(t),ue(i,a)}}}function W0(n){let e,t;return e=new Xc({props:{size:"large",unpadded_box:!0,$$slots:{default:[z0]},$$scope:{ctx:n}}}),{c(){ce(e.$$.fragment)},m(i,s){fe(e,i,s),t=!0},p(i,s){const r={};s&16384&&(r.$$scope={dirty:s,ctx:i}),e.$set(r)},i(i){t||(W(e.$$.fragment,i),t=!0)},o(i){$(e.$$.fragment,i),t=!1},d(i){ue(e,i)}}}function z0(n){let e,t;return e=new Sr({}),{c(){ce(e.$$.fragment)},m(i,s){fe(e,i,s),t=!0},i(i){t||(W(e.$$.fragment,i),t=!0)},o(i){$(e.$$.fragment,i),t=!1},d(i){ue(e,i)}}}function j0(n){let e,t,i,s,r,o,l,a;const h=[n[8]];let c={};for(let p=0;p{u[v]=null}),Fn(),o=u[r],o?o.p(p,g):(o=u[r]=f[r](p),o.c()),W(o,1),o.m(l.parentNode,l))},i(p){a||(W(e.$$.fragment,p),W(i.$$.fragment,p),W(o),a=!0)},o(p){$(e.$$.fragment,p),$(i.$$.fragment,p),$(o),a=!1},d(p){ue(e,p),p&&Ae(t),ue(i,p),p&&Ae(s),u[r].d(p),p&&Ae(l)}}}function q0(n){let e,t,i,s;const r=[V0,_0],o=[];function l(a,h){return a[5]==="static"?0:1}return e=l(n),t=o[e]=r[e](n),{c(){t.c(),i=ta()},m(a,h){o[e].m(a,h),Ce(a,i,h),s=!0},p(a,[h]){let c=e;e=l(a),e===c?o[e].p(a,h):(Vn(),$(o[c],1,1,()=>{o[c]=null}),Fn(),t=o[e],t?t.p(a,h):(t=o[e]=r[e](a),t.c()),W(t,1),t.m(i.parentNode,i))},i(a){s||(W(t),s=!0)},o(a){$(t),s=!1},d(a){o[e].d(a),a&&Ae(i)}}}function $0(n,e,t){const i=Xl();let{value:s=""}=e,{language:r=""}=e,{target:o}=e,{elem_id:l=""}=e,{elem_classes:a=[]}=e,{visible:h=!0}=e,{mode:c}=e,{label:f="Code"}=e,{show_label:u=!0}=e,{loading_status:d}=e,p=o.classList.contains("dark");function g(b){s=b,t(0,s)}function y(b){s=b,t(0,s)}return n.$$set=b=>{"value"in b&&t(0,s=b.value),"language"in b&&t(1,r=b.language),"target"in b&&t(10,o=b.target),"elem_id"in b&&t(2,l=b.elem_id),"elem_classes"in b&&t(3,a=b.elem_classes),"visible"in b&&t(4,h=b.visible),"mode"in b&&t(5,c=b.mode),"label"in b&&t(6,f=b.label),"show_label"in b&&t(7,u=b.show_label),"loading_status"in b&&t(8,d=b.loading_status)},n.$$.update=()=>{n.$$.dirty&1&&i("change",s)},[s,r,l,a,h,c,f,u,d,p,o,g,y]}class K0 extends si{constructor(e){super(),ri(this,e,$0,q0,oi,{value:0,language:1,target:10,elem_id:2,elem_classes:3,visible:4,mode:5,label:6,show_label:7,loading_status:8})}}var U0=K0;const G0=["static","dynamic"];var dy=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",modes:G0,Component:U0});export{tp as A,fy as B,gg as C,Rd as D,w as E,dy as F,Q as I,ur as L,Lr as N,Eh as P,qt as S,j as T,cy as a,oy as b,xe as c,ly as d,L as e,pp as f,Ge as g,Ie as h,sp as i,de as j,Fi as k,qn as l,Ih as m,dp as n,_h as o,sy as p,ti as q,Tt as r,Yd as s,m as t,Ep as u,O as v,hy as w,ny as x,uy as y,ay as z}; +//# sourceMappingURL=index.8f4ac20d.js.map diff --git a/gradio/templates/frontend/assets/index.8f4ac20d.js.map b/gradio/templates/frontend/assets/index.8f4ac20d.js.map new file mode 100644 index 0000000000000000000000000000000000000000..b1cdb0f1cf74378170dfecb9b0cf81c7baea0967 --- /dev/null +++ b/gradio/templates/frontend/assets/index.8f4ac20d.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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","names":["insert","sameArray","asArray","none","Range","chrome","ie","inputHandler","scrollIntoView","baseTheme$1","baseTheme","defaults","base00","base01","base02","base03","base05","base06","base07","base08","base09","base0A","base0C","base0D","base0E","base0F","invalid","darkBackground","highlightBackground","background","tooltipBackground","selection","cursor","elt","placeholder","placeholderExt","CodeIcon"],"sources":["../../../../ui/packages/icons/src/Code.svelte","../../../../ui/node_modules/.pnpm/@codemirror+state@6.1.2/node_modules/@codemirror/state/dist/index.js","../../../../ui/node_modules/.pnpm/style-mod@4.0.0/node_modules/style-mod/src/style-mod.js","../../../../ui/node_modules/.pnpm/w3c-keyname@2.2.6/node_modules/w3c-keyname/index.es.js","../../../../ui/node_modules/.pnpm/@codemirror+view@6.4.1/node_modules/@codemirror/view/dist/index.js","../../../../ui/node_modules/.pnpm/@lezer+common@1.0.2/node_modules/@lezer/common/dist/index.js","../../../../ui/node_modules/.pnpm/@lezer+highlight@1.1.3/node_modules/@lezer/highlight/dist/index.js","../../../../ui/node_modules/.pnpm/@codemirror+language@6.6.0/node_modules/@codemirror/language/dist/index.js","../../../../ui/node_modules/.pnpm/@codemirror+commands@6.1.2/node_modules/@codemirror/commands/dist/index.js","../../../../ui/node_modules/.pnpm/cm6-theme-basic-dark@0.2.0_bdbdfebd82d5c8e68894e6839d42eec7/node_modules/cm6-theme-basic-dark/dist/index.js","../../../../ui/node_modules/.pnpm/cm6-theme-basic-light@0.2.0_bdbdfebd82d5c8e68894e6839d42eec7/node_modules/cm6-theme-basic-light/dist/index.js","../../../../ui/node_modules/.pnpm/@codemirror+autocomplete@6.3.0/node_modules/@codemirror/autocomplete/dist/index.js","../../../../ui/node_modules/.pnpm/crelt@1.0.5/node_modules/crelt/index.es.js","../../../../ui/node_modules/.pnpm/@codemirror+lint@6.0.0/node_modules/@codemirror/lint/dist/index.js","../../../../ui/packages/code/interactive/extensions.ts","../../../../ui/packages/code/interactive/language.ts","../../../../ui/packages/code/interactive/Code.svelte","../../../../ui/packages/code/interactive/Copy.svelte","../../../../ui/packages/code/interactive/Download.svelte","../../../../ui/packages/code/interactive/Widgets.svelte","../../../../ui/packages/code/Index.svelte","../../../../ui/packages/app/src/components/Code/index.ts"],"sourcesContent":["\n\n","/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n /**\n @internal\n */\n constructor() { }\n /**\n Get the line description around the given position.\n */\n lineAt(pos) {\n if (pos < 0 || pos > this.length)\n throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n return this.lineInner(pos, false, 1, 0);\n }\n /**\n Get the description for the given (1-based) line number.\n */\n line(n) {\n if (n < 1 || n > this.lines)\n throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n return this.lineInner(n, true, 1, 0);\n }\n /**\n Replace a range of the text with the given content.\n */\n replace(from, to, text) {\n let parts = [];\n this.decompose(0, from, parts, 2 /* Open.To */);\n if (text.length)\n text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n this.decompose(to, this.length, parts, 1 /* Open.From */);\n return TextNode.from(parts, this.length - (to - from) + text.length);\n }\n /**\n Append another document to this one.\n */\n append(other) {\n return this.replace(this.length, this.length, other);\n }\n /**\n Retrieve the text between the given points.\n */\n slice(from, to = this.length) {\n let parts = [];\n this.decompose(from, to, parts, 0);\n return TextNode.from(parts, to - from);\n }\n /**\n Test whether this text is equal to another instance.\n */\n eq(other) {\n if (other == this)\n return true;\n if (other.length != this.length || other.lines != this.lines)\n return false;\n let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n let a = new RawTextCursor(this), b = new RawTextCursor(other);\n for (let skip = start, pos = start;;) {\n a.next(skip);\n b.next(skip);\n skip = 0;\n if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n return false;\n pos += a.value.length;\n if (a.done || pos >= end)\n return true;\n }\n }\n /**\n Iterate over the text. When `dir` is `-1`, iteration happens\n from end to start. This will return lines and the breaks between\n them as separate strings.\n */\n iter(dir = 1) { return new RawTextCursor(this, dir); }\n /**\n Iterate over a range of the text. When `from` > `to`, the\n iterator will run in reverse.\n */\n iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n /**\n Return a cursor that iterates over the given range of lines,\n _without_ returning the line breaks between, and yielding empty\n strings for empty lines.\n \n When `from` and `to` are given, they should be 1-based line numbers.\n */\n iterLines(from, to) {\n let inner;\n if (from == null) {\n inner = this.iter();\n }\n else {\n if (to == null)\n to = this.lines + 1;\n let start = this.line(from).from;\n inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n }\n return new LineCursor(inner);\n }\n /**\n @internal\n */\n toString() { return this.sliceString(0); }\n /**\n Convert the document to an array of lines (which can be\n deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n */\n toJSON() {\n let lines = [];\n this.flatten(lines);\n return lines;\n }\n /**\n Create a `Text` instance for the given array of lines.\n */\n static of(text) {\n if (text.length == 0)\n throw new RangeError(\"A document must have at least one line\");\n if (text.length == 1 && !text[0])\n return Text.empty;\n return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n constructor(text, length = textLength(text)) {\n super();\n this.text = text;\n this.length = length;\n }\n get lines() { return this.text.length; }\n get children() { return null; }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let string = this.text[i], end = offset + string.length;\n if ((isLine ? line : end) >= target)\n return new Line(offset, end, line, string);\n offset = end + 1;\n line++;\n }\n }\n decompose(from, to, target, open) {\n let text = from <= 0 && to >= this.length ? this\n : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n if (open & 1 /* Open.From */) {\n let prev = target.pop();\n let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n if (joined.length <= 32 /* Tree.Branch */) {\n target.push(new TextLeaf(joined, prev.length + text.length));\n }\n else {\n let mid = joined.length >> 1;\n target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n }\n }\n else {\n target.push(text);\n }\n }\n replace(from, to, text) {\n if (!(text instanceof TextLeaf))\n return super.replace(from, to, text);\n let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n let newLen = this.length + text.length - (to - from);\n if (lines.length <= 32 /* Tree.Branch */)\n return new TextLeaf(lines, newLen);\n return TextNode.from(TextLeaf.split(lines, []), newLen);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n let result = \"\";\n for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n let line = this.text[i], end = pos + line.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += line.slice(Math.max(0, from - pos), to - pos);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let line of this.text)\n target.push(line);\n }\n scanIdentical() { return 0; }\n static split(text, target) {\n let part = [], len = -1;\n for (let line of text) {\n part.push(line);\n len += line.length + 1;\n if (part.length == 32 /* Tree.Branch */) {\n target.push(new TextLeaf(part, len));\n part = [];\n len = -1;\n }\n }\n if (len > -1)\n target.push(new TextLeaf(part, len));\n return target;\n }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n constructor(children, length) {\n super();\n this.children = children;\n this.length = length;\n this.lines = 0;\n for (let child of children)\n this.lines += child.lines;\n }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n if ((isLine ? endLine : end) >= target)\n return child.lineInner(target, isLine, line, offset);\n offset = end + 1;\n line = endLine + 1;\n }\n }\n decompose(from, to, target, open) {\n for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n if (from <= end && to >= pos) {\n let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n if (pos >= from && end <= to && !childOpen)\n target.push(child);\n else\n child.decompose(from - pos, to - pos, target, childOpen);\n }\n pos = end + 1;\n }\n }\n replace(from, to, text) {\n if (text.lines < this.lines)\n for (let i = 0, pos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n // Fast path: if the change only affects one child and the\n // child's size remains in the acceptable range, only update\n // that child\n if (from >= pos && to <= end) {\n let updated = child.replace(from - pos, to - pos, text);\n let totalLines = this.lines - child.lines + updated.lines;\n if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n let copy = this.children.slice();\n copy[i] = updated;\n return new TextNode(copy, this.length - (to - from) + text.length);\n }\n return super.replace(pos, end, updated);\n }\n pos = end + 1;\n }\n return super.replace(from, to, text);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n let result = \"\";\n for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n let child = this.children[i], end = pos + child.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += child.sliceString(from - pos, to - pos, lineSep);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let child of this.children)\n child.flatten(target);\n }\n scanIdentical(other, dir) {\n if (!(other instanceof TextNode))\n return 0;\n let length = 0;\n let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n : [this.children.length - 1, other.children.length - 1, -1, -1];\n for (;; iA += dir, iB += dir) {\n if (iA == eA || iB == eB)\n return length;\n let chA = this.children[iA], chB = other.children[iB];\n if (chA != chB)\n return length + chA.scanIdentical(chB, dir);\n length += chA.length + 1;\n }\n }\n static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n let lines = 0;\n for (let ch of children)\n lines += ch.lines;\n if (lines < 32 /* Tree.Branch */) {\n let flat = [];\n for (let ch of children)\n ch.flatten(flat);\n return new TextLeaf(flat, length);\n }\n let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n function add(child) {\n let last;\n if (child.lines > maxChunk && child instanceof TextNode) {\n for (let node of child.children)\n add(node);\n }\n else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n flush();\n chunked.push(child);\n }\n else if (child instanceof TextLeaf && currentLines &&\n (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n child.lines + last.lines <= 32 /* Tree.Branch */) {\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n }\n else {\n if (currentLines + child.lines > chunk)\n flush();\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk.push(child);\n }\n }\n function flush() {\n if (currentLines == 0)\n return;\n chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n currentLen = -1;\n currentLines = currentChunk.length = 0;\n }\n for (let child of children)\n add(child);\n flush();\n return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n let length = -1;\n for (let line of text)\n length += line.length + 1;\n return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n let line = text[i], end = pos + line.length;\n if (end >= from) {\n if (end > to)\n line = line.slice(0, to - pos);\n if (pos < from)\n line = line.slice(from - pos);\n if (first) {\n target[target.length - 1] += line;\n first = false;\n }\n else\n target.push(line);\n }\n pos = end + 1;\n }\n return target;\n}\nfunction sliceText(text, from, to) {\n return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n constructor(text, dir = 1) {\n this.dir = dir;\n this.done = false;\n this.lineBreak = false;\n this.value = \"\";\n this.nodes = [text];\n this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n }\n nextInner(skip, dir) {\n this.done = this.lineBreak = false;\n for (;;) {\n let last = this.nodes.length - 1;\n let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n if (offset == (dir > 0 ? size : 0)) {\n if (last == 0) {\n this.done = true;\n this.value = \"\";\n return this;\n }\n if (dir > 0)\n this.offsets[last - 1]++;\n this.nodes.pop();\n this.offsets.pop();\n }\n else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n this.offsets[last] += dir;\n if (skip == 0) {\n this.lineBreak = true;\n this.value = \"\\n\";\n return this;\n }\n skip--;\n }\n else if (top instanceof TextLeaf) {\n // Move to the next string\n let next = top.text[offset + (dir < 0 ? -1 : 0)];\n this.offsets[last] += dir;\n if (next.length > Math.max(0, skip)) {\n this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n return this;\n }\n skip -= next.length;\n }\n else {\n let next = top.children[offset + (dir < 0 ? -1 : 0)];\n if (skip > next.length) {\n skip -= next.length;\n this.offsets[last] += dir;\n }\n else {\n if (dir < 0)\n this.offsets[last]--;\n this.nodes.push(next);\n this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n }\n }\n }\n }\n next(skip = 0) {\n if (skip < 0) {\n this.nextInner(-skip, (-this.dir));\n skip = this.value.length;\n }\n return this.nextInner(skip, this.dir);\n }\n}\nclass PartialTextCursor {\n constructor(text, start, end) {\n this.value = \"\";\n this.done = false;\n this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n this.pos = start > end ? text.length : 0;\n this.from = Math.min(start, end);\n this.to = Math.max(start, end);\n }\n nextInner(skip, dir) {\n if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n this.value = \"\";\n this.done = true;\n return this;\n }\n skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n if (skip > limit)\n skip = limit;\n limit -= skip;\n let { value } = this.cursor.next(skip);\n this.pos += (value.length + skip) * dir;\n this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n this.done = !this.value;\n return this;\n }\n next(skip = 0) {\n if (skip < 0)\n skip = Math.max(skip, this.from - this.pos);\n else if (skip > 0)\n skip = Math.min(skip, this.to - this.pos);\n return this.nextInner(skip, this.cursor.dir);\n }\n get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n constructor(inner) {\n this.inner = inner;\n this.afterBreak = true;\n this.value = \"\";\n this.done = false;\n }\n next(skip = 0) {\n let { done, lineBreak, value } = this.inner.next(skip);\n if (done) {\n this.done = true;\n this.value = \"\";\n }\n else if (lineBreak) {\n if (this.afterBreak) {\n this.value = \"\";\n }\n else {\n this.afterBreak = true;\n this.next();\n }\n }\n else {\n this.value = value;\n this.afterBreak = false;\n }\n return this;\n }\n get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n /**\n @internal\n */\n constructor(\n /**\n The position of the start of the line.\n */\n from, \n /**\n The position at the end of the line (_before_ the line break,\n or at the end of document for the last line).\n */\n to, \n /**\n This line's line number (1-based).\n */\n number, \n /**\n The line's content.\n */\n text) {\n this.from = from;\n this.to = to;\n this.number = number;\n this.text = text;\n }\n /**\n The length of the line (not including any line break after it).\n */\n get length() { return this.to - this.from; }\n}\n\n// Compressed representation of the Grapheme_Cluster_Break=Extend\n// information from\n// http://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n// Each pair of elements represents a range, as an offet from the\n// previous range and a length. Numbers are in base-36, with the empty\n// string being a shorthand for 1.\nlet extend = /*@__PURE__*/\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(s => s ? parseInt(s, 36) : 1);\n// Convert offsets into absolute values\nfor (let i = 1; i < extend.length; i++)\n extend[i] += extend[i - 1];\nfunction isExtendingChar(code) {\n for (let i = 1; i < extend.length; i += 2)\n if (extend[i] > code)\n return extend[i - 1] <= code;\n return false;\n}\nfunction isRegionalIndicator(code) {\n return code >= 0x1F1E6 && code <= 0x1F1FF;\n}\nconst ZWJ = 0x200d;\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending);\n}\nfunction nextClusterBreak(str, pos, includeExtending) {\n if (pos == str.length)\n return pos;\n // If pos is in the middle of a surrogate pair, move to its start\n if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1)))\n pos--;\n let prev = codePointAt(str, pos);\n pos += codePointSize(prev);\n while (pos < str.length) {\n let next = codePointAt(str, pos);\n if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n pos += codePointSize(next);\n prev = next;\n }\n else if (isRegionalIndicator(next)) {\n let countBefore = 0, i = pos - 2;\n while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) {\n countBefore++;\n i -= 2;\n }\n if (countBefore % 2 == 0)\n break;\n else\n pos += 2;\n }\n else {\n break;\n }\n }\n return pos;\n}\nfunction prevClusterBreak(str, pos, includeExtending) {\n while (pos > 0) {\n let found = nextClusterBreak(str, pos - 2, includeExtending);\n if (found < pos)\n return found;\n pos--;\n }\n return 0;\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos);\n if (!surrogateHigh(code0) || pos + 1 == str.length)\n return code0;\n let code1 = str.charCodeAt(pos + 1);\n if (!surrogateLow(code1))\n return code0;\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n if (code <= 0xffff)\n return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n /**\n Map a position to a valid new position, even when its context\n was deleted.\n */\n MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n /**\n Return null if deletion happens across the position.\n */\n MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n /**\n Return null if the character _before_ the position is deleted.\n */\n MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n /**\n Return null if the character _after_ the position is deleted.\n */\n MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n // Sections are encoded as pairs of integers. The first is the\n // length in the current document, and the second is -1 for\n // unaffected sections, and the length of the replacement content\n // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n // 0), and a replacement two positive numbers.\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n sections) {\n this.sections = sections;\n }\n /**\n The length of the document before the change.\n */\n get length() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2)\n result += this.sections[i];\n return result;\n }\n /**\n The length of the document after the change.\n */\n get newLength() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2) {\n let ins = this.sections[i + 1];\n result += ins < 0 ? this.sections[i] : ins;\n }\n return result;\n }\n /**\n False when there are actual changes in this set.\n */\n get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n /**\n Iterate over the unchanged parts left by these changes. `posA`\n provides the position of the range in the old document, `posB`\n the new position in the changed document.\n */\n iterGaps(f) {\n for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0) {\n f(posA, posB, len);\n posB += len;\n }\n else {\n posB += ins;\n }\n posA += len;\n }\n }\n /**\n Iterate over the ranges changed by these changes. (See\n [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n variant that also provides you with the inserted text.)\n `fromA`/`toA` provides the extent of the change in the starting\n document, `fromB`/`toB` the extent of the replacement in the\n changed document.\n \n When `individual` is true, adjacent changes (which are kept\n separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n reported separately.\n */\n iterChangedRanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a description of the inverted form of these changes.\n */\n get invertedDesc() {\n let sections = [];\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0)\n sections.push(len, ins);\n else\n sections.push(ins, len);\n }\n return new ChangeDesc(sections);\n }\n /**\n Compute the combined effect of applying another set of changes\n after this one. The length of the document after this set should\n match the length before `other`.\n */\n composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n /**\n Map this description, which should start with the same document\n as `other`, over another set of changes, so that it can be\n applied after it. When `before` is true, map as if the changes\n in `other` happened before the ones in `this`.\n */\n mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n let posA = 0, posB = 0;\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n if (ins < 0) {\n if (endA > pos)\n return posB + (pos - posA);\n posB += len;\n }\n else {\n if (mode != MapMode.Simple && endA >= pos &&\n (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n mode == MapMode.TrackBefore && posA < pos ||\n mode == MapMode.TrackAfter && endA > pos))\n return null;\n if (endA > pos || endA == pos && assoc < 0 && !len)\n return pos == posA || assoc < 0 ? posB : posB + ins;\n posB += ins;\n }\n posA = endA;\n }\n if (pos > posA)\n throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n return posB;\n }\n /**\n Check whether these changes touch a given range. When one of the\n changes entirely covers the range, the string `\"cover\"` is\n returned.\n */\n touchesRange(from, to = from) {\n for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n if (ins >= 0 && pos <= to && end >= from)\n return pos < from && end > to ? \"cover\" : true;\n pos = end;\n }\n return false;\n }\n /**\n @internal\n */\n toString() {\n let result = \"\";\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n }\n return result;\n }\n /**\n Serialize this change desc to a JSON-representable value.\n */\n toJSON() { return this.sections; }\n /**\n Create a change desc from its JSON representation (as produced\n by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n return new ChangeDesc(json);\n }\n /**\n @internal\n */\n static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n constructor(sections, \n /**\n @internal\n */\n inserted) {\n super(sections);\n this.inserted = inserted;\n }\n /**\n Apply the changes to a document, returning the modified\n document.\n */\n apply(doc) {\n if (this.length != doc.length)\n throw new RangeError(\"Applying change set to a document with the wrong length\");\n iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n return doc;\n }\n mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n /**\n Given the document as it existed _before_ the changes, return a\n change set that represents the inverse of this set, which could\n be used to go from the document created by the changes back to\n the document as it existed before the changes.\n */\n invert(doc) {\n let sections = this.sections.slice(), inserted = [];\n for (let i = 0, pos = 0; i < sections.length; i += 2) {\n let len = sections[i], ins = sections[i + 1];\n if (ins >= 0) {\n sections[i] = ins;\n sections[i + 1] = len;\n let index = i >> 1;\n while (inserted.length < index)\n inserted.push(Text.empty);\n inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n }\n pos += len;\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n Combine two subsequent change sets into a single set. `other`\n must start in the document produced by `this`. If `this` goes\n `docA` → `docB` and `other` represents `docB` → `docC`, the\n returned value will represent the change `docA` → `docC`.\n */\n compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n /**\n Given another change set starting in the same document, maps this\n change set over the other, producing a new change set that can be\n applied to the document produced by applying `other`. When\n `before` is `true`, order changes as if `this` comes before\n `other`, otherwise (the default) treat `other` as coming first.\n \n Given two changes `A` and `B`, `A.compose(B.map(A))` and\n `B.compose(A.map(B, true))` will produce the same document. This\n provides a basic form of [operational\n transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n and can be used for collaborative editing.\n */\n map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n /**\n Iterate over the changed ranges in the document, calling `f` for\n each, with the range in the original document (`fromA`-`toA`)\n and the range that replaces it in the new document\n (`fromB`-`toB`).\n \n When `individual` is true, adjacent changes are reported\n separately.\n */\n iterChanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n set.\n */\n get desc() { return ChangeDesc.create(this.sections); }\n /**\n @internal\n */\n filter(ranges) {\n let resultSections = [], resultInserted = [], filteredSections = [];\n let iter = new SectionIter(this);\n done: for (let i = 0, pos = 0;;) {\n let next = i == ranges.length ? 1e9 : ranges[i++];\n while (pos < next || pos == next && iter.len == 0) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, next - pos);\n addSection(filteredSections, len, -1);\n let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n addSection(resultSections, len, ins);\n if (ins > 0)\n addInsert(resultInserted, resultSections, iter.text);\n iter.forward(len);\n pos += len;\n }\n let end = ranges[i++];\n while (pos < end) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, end - pos);\n addSection(resultSections, len, -1);\n addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n iter.forward(len);\n pos += len;\n }\n }\n return { changes: new ChangeSet(resultSections, resultInserted),\n filtered: ChangeDesc.create(filteredSections) };\n }\n /**\n Serialize this change set to a JSON-representable value.\n */\n toJSON() {\n let parts = [];\n for (let i = 0; i < this.sections.length; i += 2) {\n let len = this.sections[i], ins = this.sections[i + 1];\n if (ins < 0)\n parts.push(len);\n else if (ins == 0)\n parts.push([len]);\n else\n parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n }\n return parts;\n }\n /**\n Create a change set for the given changes, for a document of the\n given length, using `lineSep` as line separator.\n */\n static of(changes, length, lineSep) {\n let sections = [], inserted = [], pos = 0;\n let total = null;\n function flush(force = false) {\n if (!force && !sections.length)\n return;\n if (pos < length)\n addSection(sections, length - pos, -1);\n let set = new ChangeSet(sections, inserted);\n total = total ? total.compose(set.map(total)) : set;\n sections = [];\n inserted = [];\n pos = 0;\n }\n function process(spec) {\n if (Array.isArray(spec)) {\n for (let sub of spec)\n process(sub);\n }\n else if (spec instanceof ChangeSet) {\n if (spec.length != length)\n throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n flush();\n total = total ? total.compose(spec.map(total)) : spec;\n }\n else {\n let { from, to = from, insert } = spec;\n if (from > to || from < 0 || to > length)\n throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n let insLen = insText.length;\n if (from == to && insLen == 0)\n return;\n if (from < pos)\n flush();\n if (from > pos)\n addSection(sections, from - pos, -1);\n addSection(sections, to - from, insLen);\n addInsert(inserted, sections, insText);\n pos = to;\n }\n }\n process(changes);\n flush(!total);\n return total;\n }\n /**\n Create an empty changeset of the given length.\n */\n static empty(length) {\n return new ChangeSet(length ? [length, -1] : [], []);\n }\n /**\n Create a changeset from its JSON representation (as produced by\n [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json))\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n let sections = [], inserted = [];\n for (let i = 0; i < json.length; i++) {\n let part = json[i];\n if (typeof part == \"number\") {\n sections.push(part, -1);\n }\n else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n }\n else if (part.length == 1) {\n sections.push(part[0], 0);\n }\n else {\n while (inserted.length < i)\n inserted.push(Text.empty);\n inserted[i] = Text.of(part.slice(1));\n sections.push(part[0], inserted[i].length);\n }\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n @internal\n */\n static createSet(sections, inserted) {\n return new ChangeSet(sections, inserted);\n }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n if (len == 0 && ins <= 0)\n return;\n let last = sections.length - 2;\n if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n sections[last] += len;\n else if (len == 0 && sections[last] == 0)\n sections[last + 1] += ins;\n else if (forceJoin) {\n sections[last] += len;\n sections[last + 1] += ins;\n }\n else\n sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n if (value.length == 0)\n return;\n let index = (sections.length - 2) >> 1;\n if (index < values.length) {\n values[values.length - 1] = values[values.length - 1].append(value);\n }\n else {\n while (values.length < index)\n values.push(Text.empty);\n values.push(value);\n }\n}\nfunction iterChanges(desc, f, individual) {\n let inserted = desc.inserted;\n for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n let len = desc.sections[i++], ins = desc.sections[i++];\n if (ins < 0) {\n posA += len;\n posB += len;\n }\n else {\n let endA = posA, endB = posB, text = Text.empty;\n for (;;) {\n endA += len;\n endB += ins;\n if (ins && inserted)\n text = text.append(inserted[(i - 2) >> 1]);\n if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n break;\n len = desc.sections[i++];\n ins = desc.sections[i++];\n }\n f(posA, endA, posB, endB, text);\n posA = endA;\n posB = endB;\n }\n }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n // Produce a copy of setA that applies to the document after setB\n // has been applied (assuming both start at the same document).\n let sections = [], insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n // Iterate over both sets in parallel. inserted tracks, for changes\n // in A that have to be processed piece-by-piece, whether their\n // content has been inserted already, and refers to the section\n // index.\n for (let inserted = -1;;) {\n if (a.ins == -1 && b.ins == -1) {\n // Move across ranges skipped by both sets.\n let len = Math.min(a.len, b.len);\n addSection(sections, len, -1);\n a.forward(len);\n b.forward(len);\n }\n else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n // If there's a change in B that comes before the next change in\n // A (ordered by start pos, then len, then before flag), skip\n // that (and process any changes in A it covers).\n let len = b.len;\n addSection(sections, b.ins, -1);\n while (len) {\n let piece = Math.min(a.len, len);\n if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n addSection(sections, 0, a.ins);\n if (insert)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n }\n a.forward(piece);\n len -= piece;\n }\n b.next();\n }\n else if (a.ins >= 0) {\n // Process the part of a change in A up to the start of the next\n // non-deletion change in B (if overlapping).\n let len = 0, left = a.len;\n while (left) {\n if (b.ins == -1) {\n let piece = Math.min(left, b.len);\n len += piece;\n left -= piece;\n b.forward(piece);\n }\n else if (b.ins == 0 && b.len < left) {\n left -= b.len;\n b.next();\n }\n else {\n break;\n }\n }\n addSection(sections, len, inserted < a.i ? a.ins : 0);\n if (insert && inserted < a.i)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n a.forward(a.len - left);\n }\n else if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else {\n throw new Error(\"Mismatched change set lengths\");\n }\n }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n let sections = [];\n let insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n for (let open = false;;) {\n if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else if (a.ins == 0) { // Deletion in A\n addSection(sections, a.len, 0, open);\n a.next();\n }\n else if (b.len == 0 && !b.done) { // Insertion in B\n addSection(sections, 0, b.ins, open);\n if (insert)\n addInsert(insert, sections, b.text);\n b.next();\n }\n else if (a.done || b.done) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else {\n let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n if (a.ins == -1) {\n let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n addSection(sections, len, insB, open);\n if (insert && insB)\n addInsert(insert, sections, b.text);\n }\n else if (b.ins == -1) {\n addSection(sections, a.off ? 0 : a.len, len, open);\n if (insert)\n addInsert(insert, sections, a.textBit(len));\n }\n else {\n addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n if (insert && !b.off)\n addInsert(insert, sections, b.text);\n }\n open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n a.forward2(len);\n b.forward(len);\n }\n }\n}\nclass SectionIter {\n constructor(set) {\n this.set = set;\n this.i = 0;\n this.next();\n }\n next() {\n let { sections } = this.set;\n if (this.i < sections.length) {\n this.len = sections[this.i++];\n this.ins = sections[this.i++];\n }\n else {\n this.len = 0;\n this.ins = -2;\n }\n this.off = 0;\n }\n get done() { return this.ins == -2; }\n get len2() { return this.ins < 0 ? this.len : this.ins; }\n get text() {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length ? Text.empty : inserted[index];\n }\n textBit(len) {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length && !len ? Text.empty\n : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n }\n forward(len) {\n if (len == this.len)\n this.next();\n else {\n this.len -= len;\n this.off += len;\n }\n }\n forward2(len) {\n if (this.ins == -1)\n this.forward(len);\n else if (len == this.ins)\n this.next();\n else {\n this.ins -= len;\n this.off += len;\n }\n }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n constructor(\n /**\n The lower boundary of the range.\n */\n from, \n /**\n The upper boundary of the range.\n */\n to, flags) {\n this.from = from;\n this.to = to;\n this.flags = flags;\n }\n /**\n The anchor of the range—the side that doesn't move when you\n extend it.\n */\n get anchor() { return this.flags & 16 /* RangeFlag.Inverted */ ? this.to : this.from; }\n /**\n The head of the range, which is moved when the range is\n [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n */\n get head() { return this.flags & 16 /* RangeFlag.Inverted */ ? this.from : this.to; }\n /**\n True when `anchor` and `head` are at the same position.\n */\n get empty() { return this.from == this.to; }\n /**\n If this is a cursor that is explicitly associated with the\n character on one of its sides, this returns the side. -1 means\n the character before its position, 1 the character after, and 0\n means no association.\n */\n get assoc() { return this.flags & 4 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 8 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n /**\n The bidirectional text level associated with this cursor, if\n any.\n */\n get bidiLevel() {\n let level = this.flags & 3 /* RangeFlag.BidiLevelMask */;\n return level == 3 ? null : level;\n }\n /**\n The goal column (stored vertical offset) associated with a\n cursor. This is used to preserve the vertical position when\n [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n lines of different length.\n */\n get goalColumn() {\n let value = this.flags >> 5 /* RangeFlag.GoalColumnOffset */;\n return value == 33554431 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n }\n /**\n Map this range through a change, producing a valid range in the\n updated document.\n */\n map(change, assoc = -1) {\n let from, to;\n if (this.empty) {\n from = to = change.mapPos(this.from, assoc);\n }\n else {\n from = change.mapPos(this.from, 1);\n to = change.mapPos(this.to, -1);\n }\n return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n }\n /**\n Extend this range to cover at least `from` to `to`.\n */\n extend(from, to = from) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head);\n }\n /**\n Compare this range to another range.\n */\n eq(other) {\n return this.anchor == other.anchor && this.head == other.head;\n }\n /**\n Return a JSON-serializable object representing the range.\n */\n toJSON() { return { anchor: this.anchor, head: this.head }; }\n /**\n Convert a JSON representation of a range to a `SelectionRange`\n instance.\n */\n static fromJSON(json) {\n if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n return EditorSelection.range(json.anchor, json.head);\n }\n /**\n @internal\n */\n static create(from, to, flags) {\n return new SelectionRange(from, to, flags);\n }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n constructor(\n /**\n The ranges in the selection, sorted by position. Ranges cannot\n overlap (but they may touch, if they aren't empty).\n */\n ranges, \n /**\n The index of the _main_ range in the selection (which is\n usually the range that was added last).\n */\n mainIndex) {\n this.ranges = ranges;\n this.mainIndex = mainIndex;\n }\n /**\n Map a selection through a change. Used to adjust the selection\n position for changes.\n */\n map(change, assoc = -1) {\n if (change.empty)\n return this;\n return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n }\n /**\n Compare this selection to another selection.\n */\n eq(other) {\n if (this.ranges.length != other.ranges.length ||\n this.mainIndex != other.mainIndex)\n return false;\n for (let i = 0; i < this.ranges.length; i++)\n if (!this.ranges[i].eq(other.ranges[i]))\n return false;\n return true;\n }\n /**\n Get the primary selection range. Usually, you should make sure\n your code applies to _all_ ranges, by using methods like\n [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n */\n get main() { return this.ranges[this.mainIndex]; }\n /**\n Make sure the selection only has one range. Returns a selection\n holding only the main range from this selection.\n */\n asSingle() {\n return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n }\n /**\n Extend this selection with an extra range.\n */\n addRange(range, main = true) {\n return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n }\n /**\n Replace a given range with another range, and then normalize the\n selection to merge and sort ranges if necessary.\n */\n replaceRange(range, which = this.mainIndex) {\n let ranges = this.ranges.slice();\n ranges[which] = range;\n return EditorSelection.create(ranges, this.mainIndex);\n }\n /**\n Convert this selection to an object that can be serialized to\n JSON.\n */\n toJSON() {\n return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n }\n /**\n Create a selection from a JSON representation.\n */\n static fromJSON(json) {\n if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n }\n /**\n Create a selection holding a single range.\n */\n static single(anchor, head = anchor) {\n return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n }\n /**\n Sort and merge the given set of ranges, creating a valid\n selection.\n */\n static create(ranges, mainIndex = 0) {\n if (ranges.length == 0)\n throw new RangeError(\"A selection needs at least one range\");\n for (let pos = 0, i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n if (range.empty ? range.from <= pos : range.from < pos)\n return EditorSelection.normalized(ranges.slice(), mainIndex);\n pos = range.to;\n }\n return new EditorSelection(ranges, mainIndex);\n }\n /**\n Create a cursor selection range at the given position. You can\n safely ignore the optional arguments in most situations.\n */\n static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 4 /* RangeFlag.AssocBefore */ : 8 /* RangeFlag.AssocAfter */) |\n (bidiLevel == null ? 3 : Math.min(2, bidiLevel)) |\n ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431 /* RangeFlag.NoGoalColumn */) << 5 /* RangeFlag.GoalColumnOffset */));\n }\n /**\n Create a selection range.\n */\n static range(anchor, head, goalColumn) {\n let goal = (goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431 /* RangeFlag.NoGoalColumn */) << 5 /* RangeFlag.GoalColumnOffset */;\n return head < anchor ? SelectionRange.create(head, anchor, 16 /* RangeFlag.Inverted */ | goal | 8 /* RangeFlag.AssocAfter */)\n : SelectionRange.create(anchor, head, goal | (head > anchor ? 4 /* RangeFlag.AssocBefore */ : 0));\n }\n /**\n @internal\n */\n static normalized(ranges, mainIndex = 0) {\n let main = ranges[mainIndex];\n ranges.sort((a, b) => a.from - b.from);\n mainIndex = ranges.indexOf(main);\n for (let i = 1; i < ranges.length; i++) {\n let range = ranges[i], prev = ranges[i - 1];\n if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n let from = prev.from, to = Math.max(range.to, prev.to);\n if (i <= mainIndex)\n mainIndex--;\n ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n }\n }\n return new EditorSelection(ranges, mainIndex);\n }\n}\nfunction checkSelection(selection, docLength) {\n for (let range of selection.ranges)\n if (range.to > docLength)\n throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n*/\nclass Facet {\n constructor(\n /**\n @internal\n */\n combine, \n /**\n @internal\n */\n compareInput, \n /**\n @internal\n */\n compare, isStatic, enables) {\n this.combine = combine;\n this.compareInput = compareInput;\n this.compare = compare;\n this.isStatic = isStatic;\n /**\n @internal\n */\n this.id = nextID++;\n this.default = combine([]);\n this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n }\n /**\n Define a new facet.\n */\n static define(config = {}) {\n return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n }\n /**\n Returns an extension that adds the given value to this facet.\n */\n of(value) {\n return new FacetProvider([], this, 0 /* Provider.Static */, value);\n }\n /**\n Create an extension that computes a value for the facet from a\n state. You must take care to declare the parts of the state that\n this value depends on, since your function is only called again\n for a new state when one of those parts changed.\n \n In cases where your value depends only on a single field, you'll\n want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n */\n compute(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n }\n /**\n Create an extension that computes zero or more values for this\n facet from a state.\n */\n computeN(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n }\n from(field, get) {\n if (!get)\n get = x => x;\n return this.compute([field], state => get(state.field(field)));\n }\n}\nfunction sameArray(a, b) {\n return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n constructor(dependencies, facet, type, value) {\n this.dependencies = dependencies;\n this.facet = facet;\n this.type = type;\n this.value = value;\n this.id = nextID++;\n }\n dynamicSlot(addresses) {\n var _a;\n let getter = this.value;\n let compare = this.facet.compareInput;\n let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n let depDoc = false, depSel = false, depAddrs = [];\n for (let dep of this.dependencies) {\n if (dep == \"doc\")\n depDoc = true;\n else if (dep == \"selection\")\n depSel = true;\n else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n depAddrs.push(addresses[dep.id]);\n }\n return {\n create(state) {\n state.values[idx] = getter(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n let newVal = getter(state);\n if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n }\n return 0;\n },\n reconfigure: (state, oldState) => {\n let newVal = getter(state);\n let oldAddr = oldState.config.address[id];\n if (oldAddr != null) {\n let oldVal = getAddr(oldState, oldAddr);\n if (this.dependencies.every(dep => {\n return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n }) || (multi ? compareArray(newVal, oldVal, compare) : compare(newVal, oldVal))) {\n state.values[idx] = oldVal;\n return 0;\n }\n }\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n}\nfunction compareArray(a, b, compare) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compare(a[i], b[i]))\n return false;\n return true;\n}\nfunction ensureAll(state, addrs) {\n let changed = false;\n for (let addr of addrs)\n if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n changed = true;\n return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n let providerAddrs = providers.map(p => addresses[p.id]);\n let providerTypes = providers.map(p => p.type);\n let dynamic = providerAddrs.filter(p => !(p & 1));\n let idx = addresses[facet.id] >> 1;\n function get(state) {\n let values = [];\n for (let i = 0; i < providerAddrs.length; i++) {\n let value = getAddr(state, providerAddrs[i]);\n if (providerTypes[i] == 2 /* Provider.Multi */)\n for (let val of value)\n values.push(val);\n else\n values.push(value);\n }\n return facet.combine(values);\n }\n return {\n create(state) {\n for (let addr of providerAddrs)\n ensureAddr(state, addr);\n state.values[idx] = get(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if (!ensureAll(state, dynamic))\n return 0;\n let value = get(state);\n if (facet.compare(value, state.values[idx]))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure(state, oldState) {\n let depChanged = ensureAll(state, providerAddrs);\n let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n state.values[idx] = oldValue;\n return 0;\n }\n let value = get(state);\n if (facet.compare(value, oldValue)) {\n state.values[idx] = oldValue;\n return 0;\n }\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n }\n };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n constructor(\n /**\n @internal\n */\n id, createF, updateF, compareF, \n /**\n @internal\n */\n spec) {\n this.id = id;\n this.createF = createF;\n this.updateF = updateF;\n this.compareF = compareF;\n this.spec = spec;\n /**\n @internal\n */\n this.provides = undefined;\n }\n /**\n Define a state field.\n */\n static define(config) {\n let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n if (config.provide)\n field.provides = config.provide(field);\n return field;\n }\n create(state) {\n let init = state.facet(initField).find(i => i.field == this);\n return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n }\n /**\n @internal\n */\n slot(addresses) {\n let idx = addresses[this.id] >> 1;\n return {\n create: (state) => {\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n },\n update: (state, tr) => {\n let oldVal = state.values[idx];\n let value = this.updateF(oldVal, tr);\n if (this.compareF(oldVal, value))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure: (state, oldState) => {\n if (oldState.config.address[this.id] != null) {\n state.values[idx] = oldState.field(this);\n return 0;\n }\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n /**\n Returns an extension that enables this field and overrides the\n way it is initialized. Can be useful when you need to provide a\n non-default starting value for the field.\n */\n init(create) {\n return [this, initField.of({ field: this, create })];\n }\n /**\n State field instances can be used as\n [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n given state.\n */\n get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n /**\n The highest precedence level, for extensions that should end up\n near the start of the precedence ordering.\n */\n highest: /*@__PURE__*/prec(Prec_.highest),\n /**\n A higher-than-default precedence, for extensions that should\n come before those with default precedence.\n */\n high: /*@__PURE__*/prec(Prec_.high),\n /**\n The default precedence, which is also used for extensions\n without an explicit precedence.\n */\n default: /*@__PURE__*/prec(Prec_.default),\n /**\n A lower-than-default precedence.\n */\n low: /*@__PURE__*/prec(Prec_.low),\n /**\n The lowest precedence level. Meant for things that should end up\n near the end of the extension order.\n */\n lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n constructor(inner, prec) {\n this.inner = inner;\n this.prec = prec;\n }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n /**\n Create an instance of this compartment to add to your [state\n configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n */\n of(ext) { return new CompartmentInstance(this, ext); }\n /**\n Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n reconfigures this compartment.\n */\n reconfigure(content) {\n return Compartment.reconfigure.of({ compartment: this, extension: content });\n }\n /**\n Get the current content of the compartment in the state, or\n `undefined` if it isn't present.\n */\n get(state) {\n return state.config.compartments.get(this);\n }\n}\nclass CompartmentInstance {\n constructor(compartment, inner) {\n this.compartment = compartment;\n this.inner = inner;\n }\n}\nclass Configuration {\n constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n this.base = base;\n this.compartments = compartments;\n this.dynamicSlots = dynamicSlots;\n this.address = address;\n this.staticValues = staticValues;\n this.facets = facets;\n this.statusTemplate = [];\n while (this.statusTemplate.length < dynamicSlots.length)\n this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n }\n staticFacet(facet) {\n let addr = this.address[facet.id];\n return addr == null ? facet.default : this.staticValues[addr >> 1];\n }\n static resolve(base, compartments, oldState) {\n let fields = [];\n let facets = Object.create(null);\n let newCompartments = new Map();\n for (let ext of flatten(base, compartments, newCompartments)) {\n if (ext instanceof StateField)\n fields.push(ext);\n else\n (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n }\n let address = Object.create(null);\n let staticValues = [];\n let dynamicSlots = [];\n for (let field of fields) {\n address[field.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => field.slot(a));\n }\n let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n for (let id in facets) {\n let providers = facets[id], facet = providers[0].facet;\n let oldProviders = oldFacets && oldFacets[id] || [];\n if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n address[facet.id] = (staticValues.length << 1) | 1;\n if (sameArray(oldProviders, providers)) {\n staticValues.push(oldState.facet(facet));\n }\n else {\n let value = facet.combine(providers.map(p => p.value));\n staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n }\n }\n else {\n for (let p of providers) {\n if (p.type == 0 /* Provider.Static */) {\n address[p.id] = (staticValues.length << 1) | 1;\n staticValues.push(p.value);\n }\n else {\n address[p.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => p.dynamicSlot(a));\n }\n }\n address[facet.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n }\n }\n let dynamic = dynamicSlots.map(f => f(address));\n return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n }\n}\nfunction flatten(extension, compartments, newCompartments) {\n let result = [[], [], [], [], []];\n let seen = new Map();\n function inner(ext, prec) {\n let known = seen.get(ext);\n if (known != null) {\n if (known <= prec)\n return;\n let found = result[known].indexOf(ext);\n if (found > -1)\n result[known].splice(found, 1);\n if (ext instanceof CompartmentInstance)\n newCompartments.delete(ext.compartment);\n }\n seen.set(ext, prec);\n if (Array.isArray(ext)) {\n for (let e of ext)\n inner(e, prec);\n }\n else if (ext instanceof CompartmentInstance) {\n if (newCompartments.has(ext.compartment))\n throw new RangeError(`Duplicate use of compartment in extensions`);\n let content = compartments.get(ext.compartment) || ext.inner;\n newCompartments.set(ext.compartment, content);\n inner(content, prec);\n }\n else if (ext instanceof PrecExtension) {\n inner(ext.inner, ext.prec);\n }\n else if (ext instanceof StateField) {\n result[prec].push(ext);\n if (ext.provides)\n inner(ext.provides, prec);\n }\n else if (ext instanceof FacetProvider) {\n result[prec].push(ext);\n if (ext.facet.extensions)\n inner(ext.facet.extensions, Prec_.default);\n }\n else {\n let content = ext.extension;\n if (!content)\n throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n inner(content, prec);\n }\n }\n inner(extension, Prec_.default);\n return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n if (addr & 1)\n return 2 /* SlotStatus.Computed */;\n let idx = addr >> 1;\n let status = state.status[idx];\n if (status == 4 /* SlotStatus.Computing */)\n throw new Error(\"Cyclic dependency between fields and/or facets\");\n if (status & 2 /* SlotStatus.Computed */)\n return status;\n state.status[idx] = 4 /* SlotStatus.Computing */;\n let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n combine: values => values.some(v => v),\n static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : undefined,\n static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n /**\n @internal\n */\n constructor(\n /**\n The annotation type.\n */\n type, \n /**\n The value of this annotation.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Define a new type of annotation.\n */\n static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n /**\n Create an instance of this annotation.\n */\n of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n /**\n @internal\n */\n constructor(\n // The `any` types in these function types are there to work\n // around TypeScript issue #37631, where the type guard on\n // `StateEffect.is` mysteriously stops working when these properly\n // have type `Value`.\n /**\n @internal\n */\n map) {\n this.map = map;\n }\n /**\n Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n type.\n */\n of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n type, \n /**\n The value of this effect.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Map this effect through a position mapping. Will return\n `undefined` when that ends up deleting the effect.\n */\n map(mapping) {\n let mapped = this.type.map(this.value, mapping);\n return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n }\n /**\n Tells you whether this effect object is of a given\n [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n */\n is(type) { return this.type == type; }\n /**\n Define a new effect type. The type parameter indicates the type\n of values that his effect holds.\n */\n static define(spec = {}) {\n return new StateEffectType(spec.map || (v => v));\n }\n /**\n Map an array of effects through a change set.\n */\n static mapEffects(effects, mapping) {\n if (!effects.length)\n return effects;\n let result = [];\n for (let effect of effects) {\n let mapped = effect.map(mapping);\n if (mapped)\n result.push(mapped);\n }\n return result;\n }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n constructor(\n /**\n The state from which the transaction starts.\n */\n startState, \n /**\n The document changes made by this transaction.\n */\n changes, \n /**\n The selection set by this transaction, or undefined if it\n doesn't explicitly set a selection.\n */\n selection, \n /**\n The effects added to the transaction.\n */\n effects, \n /**\n @internal\n */\n annotations, \n /**\n Whether the selection should be scrolled into view after this\n transaction is dispatched.\n */\n scrollIntoView) {\n this.startState = startState;\n this.changes = changes;\n this.selection = selection;\n this.effects = effects;\n this.annotations = annotations;\n this.scrollIntoView = scrollIntoView;\n /**\n @internal\n */\n this._doc = null;\n /**\n @internal\n */\n this._state = null;\n if (selection)\n checkSelection(selection, changes.newLength);\n if (!annotations.some((a) => a.type == Transaction.time))\n this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n }\n /**\n @internal\n */\n static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n }\n /**\n The new document produced by the transaction. Contrary to\n [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n force the entire new state to be computed right away, so it is\n recommended that [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n when they need to look at the new document.\n */\n get newDoc() {\n return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n }\n /**\n The new selection produced by the transaction. If\n [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n current selection through the changes made by the transaction.\n */\n get newSelection() {\n return this.selection || this.startState.selection.map(this.changes);\n }\n /**\n The new state created by the transaction. Computed on demand\n (but retained for subsequent access), so it is recommended not to\n access it in [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n */\n get state() {\n if (!this._state)\n this.startState.applyTransaction(this);\n return this._state;\n }\n /**\n Get the value of the given annotation type, if any.\n */\n annotation(type) {\n for (let ann of this.annotations)\n if (ann.type == type)\n return ann.value;\n return undefined;\n }\n /**\n Indicates whether the transaction changed the document.\n */\n get docChanged() { return !this.changes.empty; }\n /**\n Indicates whether this transaction reconfigures the state\n (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n with a top-level configuration\n [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n */\n get reconfigured() { return this.startState.config != this.state.config; }\n /**\n Returns true if the transaction has a [user\n event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n or more specific than `event`. For example, if the transaction\n has `\"select.pointer\"` as user event, `\"select\"` and\n `\"select.pointer\"` will match it.\n */\n isUserEvent(event) {\n let e = this.annotation(Transaction.userEvent);\n return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n - `\"input.type\"` for typed input\n - `\"input.type.compose\"` for composition\n - `\"input.paste\"` for pasted input\n - `\"input.drop\"` when adding content with drag-and-drop\n - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n - `\"delete.selection\"` when deleting the selection\n - `\"delete.forward\"` when deleting forward from the selection\n - `\"delete.backward\"` when deleting backward from the selection\n - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n let result = [];\n for (let iA = 0, iB = 0;;) {\n let from, to;\n if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n from = a[iA++];\n to = a[iA++];\n }\n else if (iB < b.length) {\n from = b[iB++];\n to = b[iB++];\n }\n else\n return result;\n if (!result.length || result[result.length - 1] < from)\n result.push(from, to);\n else if (result[result.length - 1] < to)\n result[result.length - 1] = to;\n }\n}\nfunction mergeTransaction(a, b, sequential) {\n var _a;\n let mapForA, mapForB, changes;\n if (sequential) {\n mapForA = b.changes;\n mapForB = ChangeSet.empty(b.changes.length);\n changes = a.changes.compose(b.changes);\n }\n else {\n mapForA = b.changes.map(a.changes);\n mapForB = a.changes.mapDesc(b.changes, true);\n changes = a.changes.compose(mapForA);\n }\n return {\n changes,\n selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n scrollIntoView: a.scrollIntoView || b.scrollIntoView\n };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n let sel = spec.selection, annotations = asArray(spec.annotations);\n if (spec.userEvent)\n annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n return {\n changes: spec.changes instanceof ChangeSet ? spec.changes\n : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n effects: asArray(spec.effects),\n annotations,\n scrollIntoView: !!spec.scrollIntoView\n };\n}\nfunction resolveTransaction(state, specs, filter) {\n let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n if (specs.length && specs[0].filter === false)\n filter = false;\n for (let i = 1; i < specs.length; i++) {\n if (specs[i].filter === false)\n filter = false;\n let seq = !!specs[i].sequential;\n s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n }\n let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n let state = tr.startState;\n // Change filters\n let result = true;\n for (let filter of state.facet(changeFilter)) {\n let value = filter(tr);\n if (value === false) {\n result = false;\n break;\n }\n if (Array.isArray(value))\n result = result === true ? value : joinRanges(result, value);\n }\n if (result !== true) {\n let changes, back;\n if (result === false) {\n back = tr.changes.invertedDesc;\n changes = ChangeSet.empty(state.doc.length);\n }\n else {\n let filtered = tr.changes.filter(result);\n changes = filtered.changes;\n back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n }\n tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n }\n // Transaction filters\n let filters = state.facet(transactionFilter);\n for (let i = filters.length - 1; i >= 0; i--) {\n let filtered = filters[i](tr);\n if (filtered instanceof Transaction)\n tr = filtered;\n else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n tr = filtered[0];\n else\n tr = resolveTransaction(state, asArray(filtered), false);\n }\n return tr;\n}\nfunction extendTransaction(tr) {\n let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n for (let i = extenders.length - 1; i >= 0; i--) {\n let extension = extenders[i](tr);\n if (extension && Object.keys(extension).length)\n spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n }\n return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n /**\n Word characters.\n */\n CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n /**\n Whitespace.\n */\n CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n /**\n Anything else.\n */\n CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n if (wordChar)\n return wordChar.test(str);\n for (let i = 0; i < str.length; i++) {\n let ch = str[i];\n if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n return true;\n }\n return false;\n}\nfunction makeCategorizer(wordChars) {\n return (char) => {\n if (!/\\S/.test(char))\n return CharCategory.Space;\n if (hasWordChar(char))\n return CharCategory.Word;\n for (let i = 0; i < wordChars.length; i++)\n if (char.indexOf(wordChars[i]) > -1)\n return CharCategory.Word;\n return CharCategory.Other;\n };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n constructor(\n /**\n @internal\n */\n config, \n /**\n The current document.\n */\n doc, \n /**\n The current selection.\n */\n selection, \n /**\n @internal\n */\n values, computeSlot, tr) {\n this.config = config;\n this.doc = doc;\n this.selection = selection;\n this.values = values;\n this.status = config.statusTemplate.slice();\n this.computeSlot = computeSlot;\n // Fill in the computed state immediately, so that further queries\n // for it made during the update return this state\n if (tr)\n tr._state = this;\n for (let i = 0; i < this.config.dynamicSlots.length; i++)\n ensureAddr(this, i << 1);\n this.computeSlot = null;\n }\n field(field, require = true) {\n let addr = this.config.address[field.id];\n if (addr == null) {\n if (require)\n throw new RangeError(\"Field is not present in this state\");\n return undefined;\n }\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n can be passed. Unless\n [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n are assumed to start in the _current_ document (not the document\n produced by previous specs), and its\n [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n to the document created by its _own_ changes. The resulting\n transaction contains the combined effect of all the different\n specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n specs take precedence over earlier ones.\n */\n update(...specs) {\n return resolveTransaction(this, specs, true);\n }\n /**\n @internal\n */\n applyTransaction(tr) {\n let conf = this.config, { base, compartments } = conf;\n for (let effect of tr.effects) {\n if (effect.is(Compartment.reconfigure)) {\n if (conf) {\n compartments = new Map;\n conf.compartments.forEach((val, key) => compartments.set(key, val));\n conf = null;\n }\n compartments.set(effect.value.compartment, effect.value.extension);\n }\n else if (effect.is(StateEffect.reconfigure)) {\n conf = null;\n base = effect.value;\n }\n else if (effect.is(StateEffect.appendConfig)) {\n conf = null;\n base = asArray(base).concat(effect.value);\n }\n }\n let startValues;\n if (!conf) {\n conf = Configuration.resolve(base, compartments, this);\n let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n startValues = intermediateState.values;\n }\n else {\n startValues = tr.startState.values.slice();\n }\n new EditorState(conf, tr.newDoc, tr.newSelection, startValues, (state, slot) => slot.update(state, tr), tr);\n }\n /**\n Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n replaces every selection range with the given content.\n */\n replaceSelection(text) {\n if (typeof text == \"string\")\n text = this.toText(text);\n return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n range: EditorSelection.cursor(range.from + text.length) }));\n }\n /**\n Create a set of changes and a new selection by running the given\n function for each range in the active selection. The function\n can return an optional set of changes (in the coordinate space\n of the start document), plus an updated range (in the coordinate\n space of the document produced by the call's own changes). This\n method will merge all the changes and ranges into a single\n changeset and selection, and return it as a [transaction\n spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n */\n changeByRange(f) {\n let sel = this.selection;\n let result1 = f(sel.ranges[0]);\n let changes = this.changes(result1.changes), ranges = [result1.range];\n let effects = asArray(result1.effects);\n for (let i = 1; i < sel.ranges.length; i++) {\n let result = f(sel.ranges[i]);\n let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n for (let j = 0; j < i; j++)\n ranges[j] = ranges[j].map(newMapped);\n let mapBy = changes.mapDesc(newChanges, true);\n ranges.push(result.range.map(mapBy));\n changes = changes.compose(newMapped);\n effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n }\n return {\n changes,\n selection: EditorSelection.create(ranges, sel.mainIndex),\n effects\n };\n }\n /**\n Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n description, taking the state's document length and line\n separator into account.\n */\n changes(spec = []) {\n if (spec instanceof ChangeSet)\n return spec;\n return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n }\n /**\n Using the state's [line\n separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n */\n toText(string) {\n return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n }\n /**\n Return the given range of the document as a string.\n */\n sliceDoc(from = 0, to = this.doc.length) {\n return this.doc.sliceString(from, to, this.lineBreak);\n }\n /**\n Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n */\n facet(facet) {\n let addr = this.config.address[facet.id];\n if (addr == null)\n return facet.default;\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Convert this state to a JSON-serializable object. When custom\n fields should be serialized, you can pass them in as an object\n mapping property names (in the resulting object, which should\n not use `doc` or `selection`) to fields.\n */\n toJSON(fields) {\n let result = {\n doc: this.sliceDoc(),\n selection: this.selection.toJSON()\n };\n if (fields)\n for (let prop in fields) {\n let value = fields[prop];\n if (value instanceof StateField && this.config.address[value.id] != null)\n result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n }\n return result;\n }\n /**\n Deserialize a state from its JSON representation. When custom\n fields should be deserialized, pass the same object you passed\n to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n third argument.\n */\n static fromJSON(json, config = {}, fields) {\n if (!json || typeof json.doc != \"string\")\n throw new RangeError(\"Invalid JSON representation for EditorState\");\n let fieldInit = [];\n if (fields)\n for (let prop in fields) {\n if (Object.prototype.hasOwnProperty.call(json, prop)) {\n let field = fields[prop], value = json[prop];\n fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n }\n }\n return EditorState.create({\n doc: json.doc,\n selection: EditorSelection.fromJSON(json.selection),\n extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n });\n }\n /**\n Create a new state. You'll usually only need this when\n initializing an editor—updated states are created by applying\n transactions.\n */\n static create(config = {}) {\n let configuration = Configuration.resolve(config.extensions || [], new Map);\n let doc = config.doc instanceof Text ? config.doc\n : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n let selection = !config.selection ? EditorSelection.single(0)\n : config.selection instanceof EditorSelection ? config.selection\n : EditorSelection.single(config.selection.anchor, config.selection.head);\n checkSelection(selection, doc.length);\n if (!configuration.staticFacet(allowMultipleSelections))\n selection = selection.asSingle();\n return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n }\n /**\n The size (in columns) of a tab in the document, determined by\n the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n */\n get tabSize() { return this.facet(EditorState.tabSize); }\n /**\n Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n string for this state.\n */\n get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n /**\n Returns true when the editor is\n [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n */\n get readOnly() { return this.facet(readOnly); }\n /**\n Look up a translation for the given phrase (via the\n [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n original string if no translation is found.\n \n If additional arguments are passed, they will be inserted in\n place of markers like `$1` (for the first value) and `$2`, etc.\n A single `$` is equivalent to `$1`, and `$$` will produce a\n literal dollar sign.\n */\n phrase(phrase, ...insert) {\n for (let map of this.facet(EditorState.phrases))\n if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n phrase = map[phrase];\n break;\n }\n if (insert.length)\n phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n if (i == \"$\")\n return \"$\";\n let n = +(i || 1);\n return !n || n > insert.length ? m : insert[n - 1];\n });\n return phrase;\n }\n /**\n Find the values for a given language data field, provided by the\n the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n */\n languageDataAt(name, pos, side = -1) {\n let values = [];\n for (let provider of this.facet(languageData)) {\n for (let result of provider(this, pos, side)) {\n if (Object.prototype.hasOwnProperty.call(result, name))\n values.push(result[name]);\n }\n }\n return values;\n }\n /**\n Return a function that can categorize strings (expected to\n represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n into one of:\n \n - Word (contains an alphanumeric character or a character\n explicitly listed in the local language's `\"wordChars\"`\n language data, which should be a string)\n - Space (contains only whitespace)\n - Other (anything else)\n */\n charCategorizer(at) {\n return makeCategorizer(this.languageDataAt(\"wordChars\", at).join(\"\"));\n }\n /**\n Find the word at the given position, meaning the range\n containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n around it. If no word characters are adjacent to the position,\n this returns null.\n */\n wordAt(pos) {\n let { text, from, length } = this.doc.lineAt(pos);\n let cat = this.charCategorizer(pos);\n let start = pos - from, end = pos - from;\n while (start > 0) {\n let prev = findClusterBreak(text, start, false);\n if (cat(text.slice(prev, start)) != CharCategory.Word)\n break;\n start = prev;\n }\n while (end < length) {\n let next = findClusterBreak(text, end);\n if (cat(text.slice(end, next)) != CharCategory.Word)\n break;\n end = next;\n }\n return start == end ? null : EditorSelection.range(start + from, end + from);\n }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n compare(a, b) {\n let kA = Object.keys(a), kB = Object.keys(b);\n return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n let result = {};\n for (let config of configs)\n for (let key of Object.keys(config)) {\n let value = config[key], current = result[key];\n if (current === undefined)\n result[key] = value;\n else if (current === value || value === undefined) ; // No conflict\n else if (Object.hasOwnProperty.call(combine, key))\n result[key] = combine[key](current, value);\n else\n throw new Error(\"Config merge conflict for field \" + key);\n }\n for (let key in defaults)\n if (result[key] === undefined)\n result[key] = defaults[key];\n return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n /**\n Compare this value with another value. Used when comparing\n rangesets. The default implementation compares by identity.\n Unless you are only creating a fixed number of unique instances\n of your value type, it is a good idea to implement this\n properly.\n */\n eq(other) { return this == other; }\n /**\n Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n */\n range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n constructor(\n /**\n The range's start position.\n */\n from, \n /**\n Its end position.\n */\n to, \n /**\n The value associated with this range.\n */\n value) {\n this.from = from;\n this.to = to;\n this.value = value;\n }\n /**\n @internal\n */\n static create(from, to, value) {\n return new Range(from, to, value);\n }\n}\nfunction cmpRange(a, b) {\n return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n constructor(from, to, value, \n // Chunks are marked with the largest point that occurs\n // in them (or -1 for no points), so that scans that are\n // only interested in points (such as the\n // heightmap-related logic) can skip range-only chunks.\n maxPoint) {\n this.from = from;\n this.to = to;\n this.value = value;\n this.maxPoint = maxPoint;\n }\n get length() { return this.to[this.to.length - 1]; }\n // Find the index of the given position and side. Use the ranges'\n // `from` pos when `end == false`, `to` when `end == true`.\n findIndex(pos, side, end, startAt = 0) {\n let arr = end ? this.to : this.from;\n for (let lo = startAt, hi = arr.length;;) {\n if (lo == hi)\n return lo;\n let mid = (lo + hi) >> 1;\n let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n if (mid == lo)\n return diff >= 0 ? lo : hi;\n if (diff >= 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n }\n between(offset, from, to, f) {\n for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n return false;\n }\n map(offset, changes) {\n let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n for (let i = 0; i < this.value.length; i++) {\n let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n if (curFrom == curTo) {\n let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n if (mapped == null)\n continue;\n newFrom = newTo = mapped;\n if (val.startSide != val.endSide) {\n newTo = changes.mapPos(curFrom, val.endSide);\n if (newTo < newFrom)\n continue;\n }\n }\n else {\n newFrom = changes.mapPos(curFrom, val.startSide);\n newTo = changes.mapPos(curTo, val.endSide);\n if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n continue;\n }\n if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n continue;\n if (newPos < 0)\n newPos = newFrom;\n if (val.point)\n maxPoint = Math.max(maxPoint, newTo - newFrom);\n value.push(val);\n from.push(newFrom - newPos);\n to.push(newTo - newPos);\n }\n return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n constructor(\n /**\n @internal\n */\n chunkPos, \n /**\n @internal\n */\n chunk, \n /**\n @internal\n */\n nextLayer, \n /**\n @internal\n */\n maxPoint) {\n this.chunkPos = chunkPos;\n this.chunk = chunk;\n this.nextLayer = nextLayer;\n this.maxPoint = maxPoint;\n }\n /**\n @internal\n */\n static create(chunkPos, chunk, nextLayer, maxPoint) {\n return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n }\n /**\n @internal\n */\n get length() {\n let last = this.chunk.length - 1;\n return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n }\n /**\n The number of ranges in the set.\n */\n get size() {\n if (this.isEmpty)\n return 0;\n let size = this.nextLayer.size;\n for (let chunk of this.chunk)\n size += chunk.value.length;\n return size;\n }\n /**\n @internal\n */\n chunkEnd(index) {\n return this.chunkPos[index] + this.chunk[index].length;\n }\n /**\n Update the range set, optionally adding new ranges or filtering\n out existing ones.\n \n (Note: The type parameter is just there as a kludge to work\n around TypeScript variance issues that prevented `RangeSet`\n from being a subtype of `RangeSet` when `X` is a subtype of\n `Y`.)\n */\n update(updateSpec) {\n let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n let filter = updateSpec.filter;\n if (add.length == 0 && !filter)\n return this;\n if (sort)\n add = add.slice().sort(cmpRange);\n if (this.isEmpty)\n return add.length ? RangeSet.of(add) : this;\n let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n let builder = new RangeSetBuilder();\n while (cur.value || i < add.length) {\n if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n let range = add[i++];\n if (!builder.addInner(range.from, range.to, range.value))\n spill.push(range);\n }\n else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n cur.nextChunk();\n }\n else {\n if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n if (!builder.addInner(cur.from, cur.to, cur.value))\n spill.push(Range.create(cur.from, cur.to, cur.value));\n }\n cur.next();\n }\n }\n return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n }\n /**\n Map this range set through a set of changes, return the new set.\n */\n map(changes) {\n if (changes.empty || this.isEmpty)\n return this;\n let chunks = [], chunkPos = [], maxPoint = -1;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n let touch = changes.touchesRange(start, start + chunk.length);\n if (touch === false) {\n maxPoint = Math.max(maxPoint, chunk.maxPoint);\n chunks.push(chunk);\n chunkPos.push(changes.mapPos(start));\n }\n else if (touch === true) {\n let { mapped, pos } = chunk.map(start, changes);\n if (mapped) {\n maxPoint = Math.max(maxPoint, mapped.maxPoint);\n chunks.push(mapped);\n chunkPos.push(pos);\n }\n }\n }\n let next = this.nextLayer.map(changes);\n return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n }\n /**\n Iterate over the ranges that touch the region `from` to `to`,\n calling `f` for each. There is no guarantee that the ranges will\n be reported in any specific order. When the callback returns\n `false`, iteration stops.\n */\n between(from, to, f) {\n if (this.isEmpty)\n return;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n if (to >= start && from <= start + chunk.length &&\n chunk.between(start, from - start, to - start, f) === false)\n return;\n }\n this.nextLayer.between(from, to, f);\n }\n /**\n Iterate over the ranges in this set, in order, including all\n ranges that end at or after `from`.\n */\n iter(from = 0) {\n return HeapCursor.from([this]).goto(from);\n }\n /**\n @internal\n */\n get isEmpty() { return this.nextLayer == this; }\n /**\n Iterate over the ranges in a collection of sets, in order,\n starting from `from`.\n */\n static iter(sets, from = 0) {\n return HeapCursor.from(sets).goto(from);\n }\n /**\n Iterate over two groups of sets, calling methods on `comparator`\n to notify it of possible differences.\n */\n static compare(oldSets, newSets, \n /**\n This indicates how the underlying data changed between these\n ranges, and is needed to synchronize the iteration. `from` and\n `to` are coordinates in the _new_ space, after these changes.\n */\n textDiff, comparator, \n /**\n Can be used to ignore all non-point ranges, and points below\n the given size. When -1, all ranges are compared.\n */\n minPointSize = -1) {\n let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let sharedChunks = findSharedChunks(a, b, textDiff);\n let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n if (textDiff.empty && textDiff.length == 0)\n compare(sideA, 0, sideB, 0, 0, comparator);\n }\n /**\n Compare the contents of two groups of range sets, returning true\n if they are equivalent in the given range.\n */\n static eq(oldSets, newSets, from = 0, to) {\n if (to == null)\n to = 1000000000 /* C.Far */;\n let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n if (a.length != b.length)\n return false;\n if (!a.length)\n return true;\n let sharedChunks = findSharedChunks(a, b);\n let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n for (;;) {\n if (sideA.to != sideB.to ||\n !sameValues(sideA.active, sideB.active) ||\n sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))\n return false;\n if (sideA.to > to)\n return true;\n sideA.next();\n sideB.next();\n }\n }\n /**\n Iterate over a group of range sets at the same time, notifying\n the iterator about the ranges covering every given piece of\n content. Returns the open count (see\n [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n of the iteration.\n */\n static spans(sets, from, to, iterator, \n /**\n When given and greater than -1, only points of at least this\n size are taken into account.\n */\n minPointSize = -1) {\n let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n let open = cursor.openStart;\n for (;;) {\n let curTo = Math.min(cursor.to, to);\n if (cursor.point) {\n iterator.point(pos, curTo, cursor.point, cursor.activeForPoint(cursor.to), open, cursor.pointRank);\n open = cursor.openEnd(curTo) + (cursor.to > curTo ? 1 : 0);\n }\n else if (curTo > pos) {\n iterator.span(pos, curTo, cursor.active, open);\n open = cursor.openEnd(curTo);\n }\n if (cursor.to > to)\n break;\n pos = cursor.to;\n cursor.next();\n }\n return open;\n }\n /**\n Create a range set for the given range or array of ranges. By\n default, this expects the ranges to be _sorted_ (by start\n position and, if two start at the same position,\n `value.startSide`). You can pass `true` as second argument to\n cause the method to sort them.\n */\n static of(ranges, sort = false) {\n let build = new RangeSetBuilder();\n for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n build.add(range.from, range.to, range.value);\n return build.finish();\n }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n if (ranges.length > 1)\n for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n let cur = ranges[i];\n if (cmpRange(prev, cur) > 0)\n return ranges.slice().sort(cmpRange);\n prev = cur;\n }\n return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n /**\n Create an empty builder.\n */\n constructor() {\n this.chunks = [];\n this.chunkPos = [];\n this.chunkStart = -1;\n this.last = null;\n this.lastFrom = -1000000000 /* C.Far */;\n this.lastTo = -1000000000 /* C.Far */;\n this.from = [];\n this.to = [];\n this.value = [];\n this.maxPoint = -1;\n this.setMaxPoint = -1;\n this.nextLayer = null;\n }\n finishChunk(newArrays) {\n this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n this.chunkPos.push(this.chunkStart);\n this.chunkStart = -1;\n this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n this.maxPoint = -1;\n if (newArrays) {\n this.from = [];\n this.to = [];\n this.value = [];\n }\n }\n /**\n Add a range. Ranges should be added in sorted (by `from` and\n `value.startSide`) order.\n */\n add(from, to, value) {\n if (!this.addInner(from, to, value))\n (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n }\n /**\n @internal\n */\n addInner(from, to, value) {\n let diff = from - this.lastTo || value.startSide - this.last.endSide;\n if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n if (diff < 0)\n return false;\n if (this.from.length == 250 /* C.ChunkSize */)\n this.finishChunk(true);\n if (this.chunkStart < 0)\n this.chunkStart = from;\n this.from.push(from - this.chunkStart);\n this.to.push(to - this.chunkStart);\n this.last = value;\n this.lastFrom = from;\n this.lastTo = to;\n this.value.push(value);\n if (value.point)\n this.maxPoint = Math.max(this.maxPoint, to - from);\n return true;\n }\n /**\n @internal\n */\n addChunk(from, chunk) {\n if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n return false;\n if (this.from.length)\n this.finishChunk(true);\n this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n this.chunks.push(chunk);\n this.chunkPos.push(from);\n let last = chunk.value.length - 1;\n this.last = chunk.value[last];\n this.lastFrom = chunk.from[last] + from;\n this.lastTo = chunk.to[last] + from;\n return true;\n }\n /**\n Finish the range set. Returns the new set. The builder can't be\n used anymore after this has been called.\n */\n finish() { return this.finishInner(RangeSet.empty); }\n /**\n @internal\n */\n finishInner(next) {\n if (this.from.length)\n this.finishChunk(false);\n if (this.chunks.length == 0)\n return next;\n let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n this.from = null; // Make sure further `add` calls produce errors\n return result;\n }\n}\nfunction findSharedChunks(a, b, textDiff) {\n let inA = new Map();\n for (let set of a)\n for (let i = 0; i < set.chunk.length; i++)\n if (set.chunk[i].maxPoint <= 0)\n inA.set(set.chunk[i], set.chunkPos[i]);\n let shared = new Set();\n for (let set of b)\n for (let i = 0; i < set.chunk.length; i++) {\n let known = inA.get(set.chunk[i]);\n if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n shared.add(set.chunk[i]);\n }\n return shared;\n}\nclass LayerCursor {\n constructor(layer, skip, minPoint, rank = 0) {\n this.layer = layer;\n this.skip = skip;\n this.minPoint = minPoint;\n this.rank = rank;\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n get endSide() { return this.value ? this.value.endSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.chunkIndex = this.rangeIndex = 0;\n this.gotoInner(pos, side, false);\n return this;\n }\n gotoInner(pos, side, forward) {\n while (this.chunkIndex < this.layer.chunk.length) {\n let next = this.layer.chunk[this.chunkIndex];\n if (!(this.skip && this.skip.has(next) ||\n this.layer.chunkEnd(this.chunkIndex) < pos ||\n next.maxPoint < this.minPoint))\n break;\n this.chunkIndex++;\n forward = false;\n }\n if (this.chunkIndex < this.layer.chunk.length) {\n let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n if (!forward || this.rangeIndex < rangeIndex)\n this.setRangeIndex(rangeIndex);\n }\n this.next();\n }\n forward(pos, side) {\n if ((this.to - pos || this.endSide - side) < 0)\n this.gotoInner(pos, side, true);\n }\n next() {\n for (;;) {\n if (this.chunkIndex == this.layer.chunk.length) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n break;\n }\n else {\n let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n let from = chunkPos + chunk.from[this.rangeIndex];\n this.from = from;\n this.to = chunkPos + chunk.to[this.rangeIndex];\n this.value = chunk.value[this.rangeIndex];\n this.setRangeIndex(this.rangeIndex + 1);\n if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n break;\n }\n }\n }\n setRangeIndex(index) {\n if (index == this.layer.chunk[this.chunkIndex].value.length) {\n this.chunkIndex++;\n if (this.skip) {\n while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n this.chunkIndex++;\n }\n this.rangeIndex = 0;\n }\n else {\n this.rangeIndex = index;\n }\n }\n nextChunk() {\n this.chunkIndex++;\n this.rangeIndex = 0;\n this.next();\n }\n compare(other) {\n return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n this.to - other.to || this.endSide - other.endSide;\n }\n}\nclass HeapCursor {\n constructor(heap) {\n this.heap = heap;\n }\n static from(sets, skip = null, minPoint = -1) {\n let heap = [];\n for (let i = 0; i < sets.length; i++) {\n for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n if (cur.maxPoint >= minPoint)\n heap.push(new LayerCursor(cur, skip, minPoint, i));\n }\n }\n return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n for (let cur of this.heap)\n cur.goto(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n this.next();\n return this;\n }\n forward(pos, side) {\n for (let cur of this.heap)\n cur.forward(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n if ((this.to - pos || this.value.endSide - side) < 0)\n this.next();\n }\n next() {\n if (this.heap.length == 0) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n this.rank = -1;\n }\n else {\n let top = this.heap[0];\n this.from = top.from;\n this.to = top.to;\n this.value = top.value;\n this.rank = top.rank;\n if (top.value)\n top.next();\n heapBubble(this.heap, 0);\n }\n }\n}\nfunction heapBubble(heap, index) {\n for (let cur = heap[index];;) {\n let childIndex = (index << 1) + 1;\n if (childIndex >= heap.length)\n break;\n let child = heap[childIndex];\n if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n child = heap[childIndex + 1];\n childIndex++;\n }\n if (cur.compare(child) < 0)\n break;\n heap[childIndex] = cur;\n heap[index] = child;\n index = childIndex;\n }\n}\nclass SpanCursor {\n constructor(sets, skip, minPoint) {\n this.minPoint = minPoint;\n this.active = [];\n this.activeTo = [];\n this.activeRank = [];\n this.minActive = -1;\n // A currently active point range, if any\n this.point = null;\n this.pointFrom = 0;\n this.pointRank = 0;\n this.to = -1000000000 /* C.Far */;\n this.endSide = 0;\n this.openStart = -1;\n this.cursor = HeapCursor.from(sets, skip, minPoint);\n }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.cursor.goto(pos, side);\n this.active.length = this.activeTo.length = this.activeRank.length = 0;\n this.minActive = -1;\n this.to = pos;\n this.endSide = side;\n this.openStart = -1;\n this.next();\n return this;\n }\n forward(pos, side) {\n while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n this.removeActive(this.minActive);\n this.cursor.forward(pos, side);\n }\n removeActive(index) {\n remove(this.active, index);\n remove(this.activeTo, index);\n remove(this.activeRank, index);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n addActive(trackOpen) {\n let i = 0, { value, to, rank } = this.cursor;\n while (i < this.activeRank.length && this.activeRank[i] <= rank)\n i++;\n insert(this.active, i, value);\n insert(this.activeTo, i, to);\n insert(this.activeRank, i, rank);\n if (trackOpen)\n insert(trackOpen, i, this.cursor.from);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n // After calling this, if `this.point` != null, the next range is a\n // point. Otherwise, it's a regular range, covered by `this.active`.\n next() {\n let from = this.to, wasPoint = this.point;\n this.point = null;\n let trackOpen = this.openStart < 0 ? [] : null, trackExtra = 0;\n for (;;) {\n let a = this.minActive;\n if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n if (this.activeTo[a] > from) {\n this.to = this.activeTo[a];\n this.endSide = this.active[a].endSide;\n break;\n }\n this.removeActive(a);\n if (trackOpen)\n remove(trackOpen, a);\n }\n else if (!this.cursor.value) {\n this.to = this.endSide = 1000000000 /* C.Far */;\n break;\n }\n else if (this.cursor.from > from) {\n this.to = this.cursor.from;\n this.endSide = this.cursor.startSide;\n break;\n }\n else {\n let nextVal = this.cursor.value;\n if (!nextVal.point) { // Opening a range\n this.addActive(trackOpen);\n if (this.cursor.from < from && this.cursor.to > from)\n trackExtra++;\n this.cursor.next();\n }\n else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n // Ignore any non-empty points that end precisely at the end of the prev point\n this.cursor.next();\n }\n else { // New point\n this.point = nextVal;\n this.pointFrom = this.cursor.from;\n this.pointRank = this.cursor.rank;\n this.to = this.cursor.to;\n this.endSide = nextVal.endSide;\n if (this.cursor.from < from)\n trackExtra = 1;\n this.cursor.next();\n this.forward(this.to, this.endSide);\n break;\n }\n }\n }\n if (trackOpen) {\n let openStart = 0;\n while (openStart < trackOpen.length && trackOpen[openStart] < from)\n openStart++;\n this.openStart = openStart + trackExtra;\n }\n }\n activeForPoint(to) {\n if (!this.active.length)\n return this.active;\n let active = [];\n for (let i = this.active.length - 1; i >= 0; i--) {\n if (this.activeRank[i] < this.pointRank)\n break;\n if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n active.push(this.active[i]);\n }\n return active.reverse();\n }\n openEnd(to) {\n let open = 0;\n for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n open++;\n return open;\n }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n a.goto(startA);\n b.goto(startB);\n let endB = startB + length;\n let pos = startB, dPos = startB - startA;\n for (;;) {\n let diff = (a.to + dPos) - b.to || a.endSide - b.endSide;\n let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n if (a.point || b.point) {\n if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) &&\n sameValues(a.activeForPoint(a.to + dPos), b.activeForPoint(b.to))))\n comparator.comparePoint(pos, clipEnd, a.point, b.point);\n }\n else {\n if (clipEnd > pos && !sameValues(a.active, b.active))\n comparator.compareRange(pos, clipEnd, a.active, b.active);\n }\n if (end > endB)\n break;\n pos = end;\n if (diff <= 0)\n a.next();\n if (diff >= 0)\n b.next();\n }\n}\nfunction sameValues(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (a[i] != b[i] && !a[i].eq(b[i]))\n return false;\n return true;\n}\nfunction remove(array, index) {\n for (let i = index, e = array.length - 1; i < e; i++)\n array[i] = array[i + 1];\n array.pop();\n}\nfunction insert(array, index, value) {\n for (let i = array.length - 1; i >= index; i--)\n array[i + 1] = array[i];\n array[index] = value;\n}\nfunction findMinIndex(value, array) {\n let found = -1, foundPos = 1000000000 /* C.Far */;\n for (let i = 0; i < array.length; i++)\n if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n found = i;\n foundPos = array[i];\n }\n return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n let n = 0;\n for (let i = 0; i < to;) {\n if (string.charCodeAt(i) == 9) {\n n += tabSize - (n % tabSize);\n i++;\n }\n else {\n n++;\n i = findClusterBreak(string, i);\n }\n }\n return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n for (let i = 0, n = 0;;) {\n if (n >= col)\n return i;\n if (i == string.length)\n break;\n n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n i = findClusterBreak(string, i);\n }\n return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n // :: (Object\n","\n\n\n\n\n","\n\n\n\t\n\t{#if copied}\n\t\t\n\t{/if}\n
\n\n\n","\n\n
\n\t\n\t\n
\n\n\n","\n\n{#if mode === \"static\"}\n\t\n\t\t\n\n\t\t\n\n\t\t{#if !value}\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t{:else}\n\t\t\t\n\n\t\t\t\n\t\t{/if}\n\t\n{:else}\n\t\n\t\t\n\n\t\t\n\n\t\t\n\t\n{/if}\n\n\n","export { default as Component } from \"@gradio/code\";\nexport const modes = [\"static\", \"dynamic\"];\n"],"file":"assets/index.8f4ac20d.js"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.8f9fffde.css b/gradio/templates/frontend/assets/index.8f9fffde.css new file mode 100644 index 0000000000000000000000000000000000000000..79d901421a55ea578fdaf2c50c84e8fafcea8c41 --- /dev/null +++ b/gradio/templates/frontend/assets/index.8f9fffde.css @@ -0,0 +1 @@ +div.svelte-1gww5xe{display:flex;position:absolute;justify-content:center;align-items:center;border-radius:var(--radius-sm);background-color:#000c;padding:var(--size-1) .4rem;color:#fff;font-size:var(--text-sm)}span.svelte-1gww5xe{display:inline-block;margin-right:var(--size-1);border-radius:var(--radius-xs);width:var(--size-3);height:var(--size-3)}.wrap.svelte-1mjxput{margin-top:var(--size-3)}.legend.svelte-1mjxput{display:flex;justify-content:center;align-items:center;color:var(--body-text-color)}.legend-item.svelte-1mjxput{display:flex;align-items:center;gap:var(--spacing-sm);margin-right:var(--size-2);margin-left:var(--size-2)}.legend-box.svelte-1mjxput{display:inline-block;border-radius:var(--radius-xs);width:var(--size-3);height:var(--size-3)}svg.svelte-1mjxput{width:var(--size-full)}.label-text.svelte-1mjxput{fill:var(--body-text-color);font-size:var(--text-sm);font-family:var(--font-mono)}.main-label.svelte-1mjxput{display:flex;justify-content:center;align-items:center;color:var(--body-text-color)}.chart.svelte-etmurc{display:flex;display:relative;justify-content:center;align-items:center;background:var(--background-fill-primary);width:var(--size-full);height:var(--size-64)} diff --git a/gradio/templates/frontend/assets/index.941e34fd.js b/gradio/templates/frontend/assets/index.941e34fd.js new file mode 100644 index 0000000000000000000000000000000000000000..26192c41848529e8f004df85dba6b8c9be31fcc1 --- /dev/null +++ b/gradio/templates/frontend/assets/index.941e34fd.js @@ -0,0 +1,2 @@ +import{S as T,i as j,s as H,F as L,B as r,O as o,f as d,E as M,p as g,q as S,b as q,c as v,m as h,o as b,t as k,l as w,v as B,a7 as C,G as E,g as z,h as D,x as F}from"./index.37b24c07.js";import{a as G}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";function O(t){let e,l;return{c(){e=L("div"),r(e,"id",t[0]),r(e,"class",l="prose "+t[1].join(" ")+" svelte-1yrv54"),r(e,"data-testid","markdown"),o(e,"min",t[4]),o(e,"hide",!t[2])},m(s,i){d(s,e,i),e.innerHTML=t[3],t[6](e)},p(s,[i]){i&8&&(e.innerHTML=s[3]),i&1&&r(e,"id",s[0]),i&2&&l!==(l="prose "+s[1].join(" ")+" svelte-1yrv54")&&r(e,"class",l),i&18&&o(e,"min",s[4]),i&6&&o(e,"hide",!s[2])},i:M,o:M,d(s){s&&g(e),t[6](null)}}}function A(t,e,l){let{elem_id:s=""}=e,{elem_classes:i=[]}=e,{visible:m=!0}=e,{value:u}=e,{min_height:f=!1}=e;const a=S();let _;function c(n){q[n?"unshift":"push"](()=>{_=n,l(5,_)})}return t.$$set=n=>{"elem_id"in n&&l(0,s=n.elem_id),"elem_classes"in n&&l(1,i=n.elem_classes),"visible"in n&&l(2,m=n.visible),"value"in n&&l(3,u=n.value),"min_height"in n&&l(4,f=n.min_height)},t.$$.update=()=>{t.$$.dirty&8&&a("change")},[s,i,m,u,f,_,c]}class I extends T{constructor(e){super(),j(this,e,A,O,H,{elem_id:0,elem_classes:1,visible:2,value:3,min_height:4})}}function J(t){let e,l,s,i,m;const u=[t[4],{variant:"center"}];let f={};for(let a=0;a{"label"in n&&l(5,s=n.label),"elem_id"in n&&l(0,i=n.elem_id),"elem_classes"in n&&l(1,m=n.elem_classes),"visible"in n&&l(2,u=n.visible),"value"in n&&l(3,f=n.value),"loading_status"in n&&l(4,a=n.loading_status)},t.$$.update=()=>{t.$$.dirty&32&&_("change")},[i,m,u,f,a,s,c]}class P extends T{constructor(e){super(),j(this,e,N,K,H,{label:5,elem_id:0,elem_classes:1,visible:2,value:3,loading_status:4})}}var U=P;const V=["static"],W=t=>({type:{payload:"string"},description:{payload:"HTML rendering of markdown"}});export{U as Component,W as document,V as modes}; +//# sourceMappingURL=index.941e34fd.js.map diff --git a/gradio/templates/frontend/assets/index.941e34fd.js.map b/gradio/templates/frontend/assets/index.941e34fd.js.map new file mode 100644 index 0000000000000000000000000000000000000000..7de4dee7787e5ae94a0aa9868b041239dae12d1b --- /dev/null +++ b/gradio/templates/frontend/assets/index.941e34fd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.941e34fd.js","sources":["../../../../ui/packages/markdown/src/Markdown.svelte","../../../../ui/packages/app/src/components/Markdown/Markdown.svelte","../../../../ui/packages/app/src/components/Markdown/index.ts"],"sourcesContent":["\n\n\n\t{@html value}\n\n\n\n","\n\n\n\t\n\t
\n\t\t\n\t
\n
\n\n\n","export { default as Component } from \"./Markdown.svelte\";\nexport const modes = [\"static\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"string\"\n\t},\n\tdescription: {\n\t\tpayload: \"HTML rendering of markdown\"\n\t}\n});\n"],"names":[],"mappings":"uTAgBK,6BAEU,KAAa,KAAK,GAAG,4DADxB,kBAEE,cAJd,qBAQQ,yCAAA,oBAPH,2BAEU,KAAa,KAAK,GAAG,oDADxB,uBAEE,+DAjBF,UAAkB,OAClB,sBACA,UAAmB,OACnB,YACA,aAAa,WAElB,GAAW,OAEb,4CAUO,4OARD,EAAS,QAAQ,4KCQR,+HAGL,MAAkB,KAAe,SAAW,8LAFtC,MAAgB,SAAW,SAAS,4BAAxD,sDADmB,yDAGL,MAAkB,KAAe,SAAW,qIAFtC,MAAgB,SAAW,SAAS,8OAFN,uUAZvC,YACA,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAgB,OAChB,yBAEL,GAAW,uSAEP,EAAS,QAAQ,gKCff,GAAQ,CAAC,QAAQ,EAEjB,EAAW,AAAC,KACxB,KAAM,CACL,QAAS,UAEV,YAAa,CACZ,QAAS,6BAEX"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.949232a2.css b/gradio/templates/frontend/assets/index.949232a2.css new file mode 100644 index 0000000000000000000000000000000000000000..463d37a8a75c97e2c4ecd3aaf5081dd8a2f90164 --- /dev/null +++ b/gradio/templates/frontend/assets/index.949232a2.css @@ -0,0 +1 @@ +.rangeSlider{--pip:var(--range-pip, lightslategray);--pip-text:var(--range-pip-text, var(--pip));--pip-active:var(--range-pip-active, darkslategrey);--pip-active-text:var(--range-pip-active-text, var(--pip-active));--pip-hover:var(--range-pip-hover, darkslategrey);--pip-hover-text:var(--range-pip-hover-text, var(--pip-hover));--pip-in-range:var(--range-pip-in-range, var(--pip-active));--pip-in-range-text:var(--range-pip-in-range-text, var(--pip-active-text))}.rangePips{position:absolute;height:1em;left:0;right:0;bottom:-1em}.rangePips.vertical{height:auto;width:1em;inset:0 auto 0 100%}.rangePips .pip{height:.4em;position:absolute;top:.25em;width:1px;white-space:nowrap}.rangePips.vertical .pip{height:1px;width:.4em;left:.25em;top:auto;bottom:auto}.rangePips .pipVal{position:absolute;top:.4em;transform:translate(-50%,25%)}.rangePips.vertical .pipVal{position:absolute;top:0;left:.4em;transform:translate(25%,-50%)}.rangePips .pip{transition:all .15s ease}.rangePips .pipVal{transition:all .15s ease,font-weight 0s linear}.rangePips .pip{color:#789;color:var(--pip-text);background-color:#789;background-color:var(--pip)}.rangePips .pip.selected{color:#2f4f4f;color:var(--pip-active-text);background-color:#2f4f4f;background-color:var(--pip-active)}.rangePips.hoverable:not(.disabled) .pip:hover{color:#2f4f4f;color:var(--pip-hover-text);background-color:#2f4f4f;background-color:var(--pip-hover)}.rangePips .pip.in-range{color:#2f4f4f;color:var(--pip-in-range-text);background-color:#2f4f4f;background-color:var(--pip-in-range)}.rangePips .pip.selected{height:.75em}.rangePips.vertical .pip.selected{height:1px;width:.75em}.rangePips .pip.selected .pipVal{font-weight:700;top:.75em}.rangePips.vertical .pip.selected .pipVal{top:0;left:.75em}.rangePips.hoverable:not(.disabled) .pip:not(.selected):hover{transition:none}.rangePips.hoverable:not(.disabled) .pip:not(.selected):hover .pipVal{transition:none;font-weight:700}.rangeSlider{--slider:var(--range-slider, #d7dada);--handle-inactive:var(--range-handle-inactive, #99a2a2);--handle:var(--range-handle, #838de7);--handle-focus:var(--range-handle-focus, #4a40d4);--handle-border:var(--range-handle-border, var(--handle));--range-inactive:var(--range-range-inactive, var(--handle-inactive));--range:var(--range-range, var(--handle-focus));--float-inactive:var(--range-float-inactive, var(--handle-inactive));--float:var(--range-float, var(--handle-focus));--float-text:var(--range-float-text, white)}.rangeSlider{position:relative;border-radius:100px;height:.5em;margin:1em;transition:opacity .2s ease;user-select:none}.rangeSlider *{user-select:none}.rangeSlider.pips{margin-bottom:1.8em}.rangeSlider.pip-labels{margin-bottom:2.8em}.rangeSlider.vertical{display:inline-block;border-radius:100px;width:.5em;min-height:200px}.rangeSlider.vertical.pips{margin-right:1.8em;margin-bottom:1em}.rangeSlider.vertical.pip-labels{margin-right:2.8em;margin-bottom:1em}.rangeSlider .rangeHandle{position:absolute;display:block;height:1.4em;width:1.4em;top:.25em;bottom:auto;transform:translateY(-50%) translate(-50%);z-index:2}.rangeSlider.reversed .rangeHandle{transform:translateY(-50%) translate(50%)}.rangeSlider.vertical .rangeHandle{left:.25em;top:auto;transform:translateY(50%) translate(-50%)}.rangeSlider.vertical.reversed .rangeHandle{transform:translateY(-50%) translate(-50%)}.rangeSlider .rangeNub,.rangeSlider .rangeHandle:before{position:absolute;left:0;top:0;display:block;border-radius:10em;height:100%;width:100%;transition:box-shadow .2s ease}.rangeSlider .rangeHandle:before{content:"";inset:1px;height:auto;width:auto;box-shadow:0 0 0 0 var(--handle-border);opacity:0}.rangeSlider.hoverable:not(.disabled) .rangeHandle:hover:before{box-shadow:0 0 0 8px var(--handle-border);opacity:.2}.rangeSlider.hoverable:not(.disabled) .rangeHandle.press:before,.rangeSlider.hoverable:not(.disabled) .rangeHandle.press:hover:before{box-shadow:0 0 0 12px var(--handle-border);opacity:.4}.rangeSlider.range:not(.min):not(.max) .rangeNub{border-radius:10em 10em 10em 1.6em}.rangeSlider.range .rangeHandle:nth-of-type(1) .rangeNub{transform:rotate(-135deg)}.rangeSlider.range .rangeHandle:nth-of-type(2) .rangeNub{transform:rotate(45deg)}.rangeSlider.range.reversed .rangeHandle:nth-of-type(1) .rangeNub{transform:rotate(45deg)}.rangeSlider.range.reversed .rangeHandle:nth-of-type(2) .rangeNub{transform:rotate(-135deg)}.rangeSlider.range.vertical .rangeHandle:nth-of-type(1) .rangeNub{transform:rotate(135deg)}.rangeSlider.range.vertical .rangeHandle:nth-of-type(2) .rangeNub{transform:rotate(-45deg)}.rangeSlider.range.vertical.reversed .rangeHandle:nth-of-type(1) .rangeNub{transform:rotate(-45deg)}.rangeSlider.range.vertical.reversed .rangeHandle:nth-of-type(2) .rangeNub{transform:rotate(135deg)}.rangeSlider .rangeFloat{display:block;position:absolute;left:50%;top:-.5em;transform:translate(-50%,-100%);font-size:1em;text-align:center;opacity:0;pointer-events:none;white-space:nowrap;transition:all .2s ease;font-size:.9em;padding:.2em .4em;border-radius:.2em}.rangeSlider .rangeHandle.active .rangeFloat,.rangeSlider.hoverable .rangeHandle:hover .rangeFloat{opacity:1;top:-.2em;transform:translate(-50%,-100%)}.rangeSlider .rangeBar{position:absolute;display:block;transition:background .2s ease;border-radius:1em;height:.5em;top:0;user-select:none;z-index:1}.rangeSlider.vertical .rangeBar{width:.5em;height:auto}.rangeSlider{background-color:#d7dada;background-color:var(--slider)}.rangeSlider .rangeBar{background-color:#99a2a2;background-color:var(--range-inactive)}.rangeSlider.focus .rangeBar{background-color:#838de7;background-color:var(--range)}.rangeSlider .rangeNub{background-color:#99a2a2;background-color:var(--handle-inactive)}.rangeSlider.focus .rangeNub{background-color:#838de7;background-color:var(--handle)}.rangeSlider .rangeHandle.active .rangeNub{background-color:#4a40d4;background-color:var(--handle-focus)}.rangeSlider .rangeFloat{color:#fff;color:var(--float-text);background-color:#99a2a2;background-color:var(--float-inactive)}.rangeSlider.focus .rangeFloat{background-color:#4a40d4;background-color:var(--float)}.rangeSlider.disabled{opacity:.5}.rangeSlider.disabled .rangeNub{background-color:#d7dada;background-color:var(--slider)}.mic-wrap.svelte-1thnwz{padding:var(--size-2)}.record-icon.svelte-1thnwz{display:flex;position:relative;margin-right:var(--size-2);width:6px;height:6px}.dot.svelte-1thnwz{display:inline-flex;position:relative;border-radius:var(--radius-full);background:var(--color-red-500);width:6px;height:6px}.pinger.svelte-1thnwz{display:inline-flex;position:absolute;opacity:.9;animation:svelte-1thnwz-ping 1s cubic-bezier(0,0,.2,1) infinite;border-radius:var(--radius-full);background:var(--color-red-500);width:var(--size-full);height:var(--size-full)}@keyframes svelte-1thnwz-ping{75%,to{transform:scale(2);opacity:0}}audio.svelte-1thnwz{padding:var(--size-2);width:var(--size-full);height:var(--size-14)}audio.svelte-eemfgq{padding:var(--size-2);width:var(--size-full);height:var(--size-14)} diff --git a/gradio/templates/frontend/assets/index.9bb1e80a.js b/gradio/templates/frontend/assets/index.9bb1e80a.js new file mode 100644 index 0000000000000000000000000000000000000000..936f5e308df1251853f58ea8d7fe80626f8a74e9 --- /dev/null +++ b/gradio/templates/frontend/assets/index.9bb1e80a.js @@ -0,0 +1,2 @@ +import{S as G,i as H,s as J,F as S,G as q,H as N,B as b,O as B,f as v,D as k,I as D,J as O,E,p as C,a2 as z,q as A,c as j,m as w,o as r,t as h,l as p,v as K,a7 as L,b as M,a as P,g as Q,h as R,k as U,n as V,j as W,x as T}from"./index.37b24c07.js";/* empty css */import{a as X}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";import{I as Y}from"./Info.1218d587.js";/* empty css */function Z(l){let e,a,t,s,o,c,m;return{c(){e=S("label"),a=S("input"),t=q(),s=S("span"),o=N(l[2]),a.disabled=l[1],b(a,"type","checkbox"),b(a,"name","test"),b(a,"data-testid","checkbox"),b(a,"class","svelte-1ojmf70"),b(s,"class","ml-2 svelte-1ojmf70"),b(e,"class","svelte-1ojmf70"),B(e,"disabled",l[1])},m(u,i){v(u,e,i),k(e,a),a.checked=l[0],k(e,t),k(e,s),k(s,o),c||(m=[D(a,"change",l[4]),D(a,"input",l[5])],c=!0)},p(u,[i]){i&2&&(a.disabled=u[1]),i&1&&(a.checked=u[0]),i&4&&O(o,u[2]),i&2&&B(e,"disabled",u[1])},i:E,o:E,d(u){u&&C(e),c=!1,z(m)}}}function y(l,e,a){let{value:t}=e,{disabled:s=!1}=e,{label:o}=e;const c=A();function m(_){c("change",_)}function u(){t=this.checked,a(0,t)}const i=_=>c("select",{index:0,value:o,selected:_.currentTarget.checked});return l.$$set=_=>{"value"in _&&a(0,t=_.value),"disabled"in _&&a(1,s=_.disabled),"label"in _&&a(2,o=_.label)},l.$$.update=()=>{l.$$.dirty&1&&m(t)},[t,s,o,c,u,i]}class x extends G{constructor(e){super(),H(this,e,y,Z,J,{value:0,disabled:1,label:2})}}function F(l){let e,a;return e=new Y({props:{$$slots:{default:[$]},$$scope:{ctx:l}}}),{c(){j(e.$$.fragment)},m(t,s){w(e,t,s),a=!0},p(t,s){const o={};s&4128&&(o.$$scope={dirty:s,ctx:t}),e.$set(o)},i(t){a||(r(e.$$.fragment,t),a=!0)},o(t){h(e.$$.fragment,t),a=!1},d(t){p(e,t)}}}function $(l){let e;return{c(){e=N(l[5])},m(a,t){v(a,e,t)},p(a,t){t&32&&O(e,a[5])},d(a){a&&C(e)}}}function ee(l){let e,a,t,s,o,c;const m=[l[8]];let u={};for(let n=0;nP(s,"value",_)),s.$on("change",l[10]),s.$on("select",l[11]),{c(){j(e.$$.fragment),a=q(),i&&i.c(),t=q(),j(s.$$.fragment)},m(n,d){w(e,n,d),v(n,a,d),i&&i.m(n,d),v(n,t,d),w(s,n,d),c=!0},p(n,d){const I=d&256?Q(m,[R(n[8])]):{};e.$set(I),n[5]?i?(i.p(n,d),d&32&&r(i,1)):(i=F(n),i.c(),r(i,1),i.m(t.parentNode,t)):i&&(U(),h(i,1,1,()=>{i=null}),V());const f={};d&16&&(f.label=n[4]),d&64&&(f.disabled=n[6]==="static"),!o&&d&1&&(o=!0,f.value=n[0],W(()=>o=!1)),s.$set(f)},i(n){c||(r(e.$$.fragment,n),r(i),r(s.$$.fragment,n),c=!0)},o(n){h(e.$$.fragment,n),h(i),h(s.$$.fragment,n),c=!1},d(n){p(e,n),n&&C(a),i&&i.d(n),n&&C(t),p(s,n)}}}function ae(l){let e,a;return e=new X({props:{visible:l[3],elem_id:l[1],elem_classes:l[2],disable:typeof l[7].container=="boolean"&&!l[7].container,$$slots:{default:[ee]},$$scope:{ctx:l}}}),{c(){j(e.$$.fragment)},m(t,s){w(e,t,s),a=!0},p(t,[s]){const o={};s&8&&(o.visible=t[3]),s&2&&(o.elem_id=t[1]),s&4&&(o.elem_classes=t[2]),s&128&&(o.disable=typeof t[7].container=="boolean"&&!t[7].container),s&4465&&(o.$$scope={dirty:s,ctx:t}),e.$set(o)},i(t){a||(r(e.$$.fragment,t),a=!0)},o(t){h(e.$$.fragment,t),a=!1},d(t){p(e,t)}}}function te(l,e,a){let{elem_id:t=""}=e,{elem_classes:s=[]}=e,{visible:o=!0}=e,{value:c=!1}=e,{label:m="Checkbox"}=e,{info:u=void 0}=e,{mode:i}=e,{style:_={}}=e,{loading_status:g}=e;function n(f){c=f,a(0,c)}function d(f){T.call(this,l,f)}function I(f){T.call(this,l,f)}return l.$$set=f=>{"elem_id"in f&&a(1,t=f.elem_id),"elem_classes"in f&&a(2,s=f.elem_classes),"visible"in f&&a(3,o=f.visible),"value"in f&&a(0,c=f.value),"label"in f&&a(4,m=f.label),"info"in f&&a(5,u=f.info),"mode"in f&&a(6,i=f.mode),"style"in f&&a(7,_=f.style),"loading_status"in f&&a(8,g=f.loading_status)},[c,t,s,o,m,u,i,_,g,n,d,I]}class le extends G{constructor(e){super(),H(this,e,te,ae,J,{elem_id:1,elem_classes:2,visible:3,value:0,label:4,info:5,mode:6,style:7,loading_status:8})}}var ce=le;const ue=["static","dynamic"],_e=l=>({type:{payload:"boolean"},description:{payload:"checked status"},example_data:l.value});export{ce as Component,_e as document,ue as modes}; +//# sourceMappingURL=index.9bb1e80a.js.map diff --git a/gradio/templates/frontend/assets/index.9bb1e80a.js.map b/gradio/templates/frontend/assets/index.9bb1e80a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d9b5a9f84ada5d125ffcdea71ec59787d853b0c7 --- /dev/null +++ b/gradio/templates/frontend/assets/index.9bb1e80a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.9bb1e80a.js","sources":["../../../../ui/packages/form/src/Checkbox.svelte","../../../../ui/packages/app/src/components/Checkbox/Checkbox.svelte","../../../../ui/packages/app/src/components/Checkbox/index.ts"],"sourcesContent":["\n\n\n\n\n\n","\n\n\n\t\n\n\t{#if info}\n\t\t{info}\n\t{/if}\n\t\n\n","export { default as Component } from \"./Checkbox.svelte\";\nexport const modes = [\"static\", \"dynamic\"];\n\nexport const document = (config: Record) => ({\n\ttype: {\n\t\tpayload: \"boolean\"\n\t},\n\tdescription: {\n\t\tpayload: \"checked status\"\n\t},\n\texample_data: config.value\n});\n"],"names":[],"mappings":"ikBAmCqB,0NAdrB,SACC,iBACe,YAYf,kHAZe,eAYK,wFA/BT,YACA,WAAoB,OACpB,gBAEL,GAAW,eAKM,GACtB,EAAS,SAAU,CAAK,eASV,8BACH,GACV,EAAS,UACR,MAAO,EACP,MAAO,EACP,SAAU,EAAI,cAAc,uJAX5B,EAAc,CAAK,8ZCUd,yCAAA,8DAHW,gFAEd,4DAQM,OAAS,+RAVD,qBAEd,8JAQM,OAAS,sUAZJ,MAAM,WAAc,YAAc,KAAM,oNAAxC,MAAM,WAAc,YAAc,KAAM,gKAf7C,UAAkB,OAClB,sBACA,UAAmB,OACnB,QAAiB,OACjB,QAAgB,eAChB,OAA2B,WAC3B,WACA,eACA,imBCdC,IAAQ,CAAC,SAAU,SAAS,EAE5B,GAAW,AAAC,KACxB,KAAM,CACL,QAAS,WAEV,YAAa,CACZ,QAAS,kBAEV,aAAc,EAAO,KACtB"} \ No newline at end of file diff --git a/gradio/templates/frontend/assets/index.9e3b8e14.js b/gradio/templates/frontend/assets/index.9e3b8e14.js new file mode 100644 index 0000000000000000000000000000000000000000..12ef521a16939a78aa9c7b1646798f3cce7bac90 --- /dev/null +++ b/gradio/templates/frontend/assets/index.9e3b8e14.js @@ -0,0 +1,2 @@ +import{S as m,i as u,s as r,c as d,m as b,o as c,t as f,l as g,W as v,X as h,Y as k,Z as p}from"./index.37b24c07.js";import{a as B}from"./Empty.svelte_svelte_type_style_lang.94e7c7a3.js";function C(i){let t;const l=i[3].default,e=v(l,i,i[4],null);return{c(){e&&e.c()},m(s,n){e&&e.m(s,n),t=!0},p(s,n){e&&e.p&&(!t||n&16)&&h(e,l,s,s[4],t?p(l,s[4],n,null):k(s[4]),null)},i(s){t||(c(e,s),t=!0)},o(s){f(e,s),t=!1},d(s){e&&e.d(s)}}}function S(i){let t,l;return t=new B({props:{elem_id:i[0],elem_classes:i[1],visible:i[2],explicit_call:!0,$$slots:{default:[C]},$$scope:{ctx:i}}}),{c(){d(t.$$.fragment)},m(e,s){b(t,e,s),l=!0},p(e,[s]){const n={};s&1&&(n.elem_id=e[0]),s&2&&(n.elem_classes=e[1]),s&4&&(n.visible=e[2]),s&16&&(n.$$scope={dirty:s,ctx:e}),t.$set(n)},i(e){l||(c(t.$$.fragment,e),l=!0)},o(e){f(t.$$.fragment,e),l=!1},d(e){g(t,e)}}}function q(i,t,l){let{$$slots:e={},$$scope:s}=t,{elem_id:n}=t,{elem_classes:a}=t,{visible:_=!0}=t;return i.$$set=o=>{"elem_id"in o&&l(0,n=o.elem_id),"elem_classes"in o&&l(1,a=o.elem_classes),"visible"in o&&l(2,_=o.visible),"$$scope"in o&&l(4,s=o.$$scope)},[n,a,_,e,s]}class w extends m{constructor(t){super(),u(this,t,q,S,r,{elem_id:0,elem_classes:1,visible:2})}}var Y=w;const Z=["static"];export{Y as Component,Z as modes}; +//# sourceMappingURL=index.9e3b8e14.js.map diff --git a/gradio/templates/frontend/favicon.png b/gradio/templates/frontend/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6f5eb5a2f1f1c882d265cf479de25caa925645 Binary files /dev/null and b/gradio/templates/frontend/favicon.png differ diff --git a/gradio/templates/frontend/index.html b/gradio/templates/frontend/index.html new file mode 100644 index 0000000000000000000000000000000000000000..519c8ff6112f05dfa846ff55f81b332fa8bb9a95 --- /dev/null +++ b/gradio/templates/frontend/index.html @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradio/templates/frontend/share.html b/gradio/templates/frontend/share.html new file mode 100644 index 0000000000000000000000000000000000000000..c5c97e3f62616401fa805bc5ab8f36effcd4e39c --- /dev/null +++ b/gradio/templates/frontend/share.html @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradio/templates/frontend/static/img/Bunny.obj b/gradio/templates/frontend/static/img/Bunny.obj new file mode 100644 index 0000000000000000000000000000000000000000..9baeb363cce8feb5dd62ecaf8d64a14b6c50ce37 --- /dev/null +++ b/gradio/templates/frontend/static/img/Bunny.obj @@ -0,0 +1,7474 @@ +# OBJ file format with ext .obj +# vertex count = 2503 +# face count = 4968 +v -3.4101800e-003 1.3031957e-001 2.1754370e-002 +v -8.1719160e-002 1.5250145e-001 2.9656090e-002 +v -3.0543480e-002 1.2477885e-001 1.0983400e-003 +v -2.4901590e-002 1.1211138e-001 3.7560240e-002 +v -1.8405680e-002 1.7843055e-001 -2.4219580e-002 +v 1.9067940e-002 1.2144925e-001 3.1968440e-002 +v 6.0412000e-003 1.2494359e-001 3.2652890e-002 +v -1.3469030e-002 1.6299355e-001 -1.2000020e-002 +v -3.4393240e-002 1.7236688e-001 -9.8213000e-004 +v -8.4314160e-002 1.0957263e-001 3.7097300e-003 +v -4.2233540e-002 1.7211574e-001 -4.1799800e-003 +v -6.3308390e-002 1.5660615e-001 -1.3838790e-002 +v -7.6903950e-002 1.6708033e-001 -2.6931360e-002 +v -7.2253920e-002 1.1539550e-001 5.1670300e-002 +v 1.2981330e-002 1.1366375e-001 3.8302950e-002 +v -3.7857280e-002 1.7010102e-001 1.4236000e-003 +v 4.8689400e-003 3.7962370e-002 4.5867630e-002 +v -5.7180550e-002 4.0918830e-002 4.6301340e-002 +v -4.5209070e-002 3.8839100e-002 4.4503770e-002 +v -3.3761490e-002 1.2617876e-001 1.7132300e-003 +v -5.0242270e-002 1.5773747e-001 9.3944500e-003 +v -2.1216950e-002 1.5887938e-001 -4.6923700e-003 +v -5.6472950e-002 1.5778406e-001 8.1786500e-003 +v -5.2802060e-002 4.1319860e-002 4.6169800e-002 +v -4.9960340e-002 4.3101950e-002 4.4462650e-002 +v -2.9748750e-002 3.6539860e-002 5.2493310e-002 +v -3.5438900e-003 4.2659770e-002 4.7541530e-002 +v 4.9304900e-003 4.1982660e-002 4.5723390e-002 +v -3.9088180e-002 1.6872020e-001 -1.1924680e-002 +v -5.6901000e-002 4.5437000e-002 4.3236960e-002 +v -4.1244880e-002 4.3098890e-002 4.2129560e-002 +v -2.6471980e-002 4.5034530e-002 5.1219460e-002 +v -2.1866970e-002 4.4022930e-002 5.3243800e-002 +v -3.6996250e-002 1.6899301e-001 1.3256300e-003 +v -6.7216590e-002 1.6171340e-001 -1.3733710e-002 +v 4.9760060e-002 7.0235220e-002 2.3732020e-002 +v -4.9186640e-002 4.6411230e-002 4.1170040e-002 +v -4.4590380e-002 4.3797990e-002 4.2685460e-002 +v -4.3686470e-002 4.7154500e-002 4.0286310e-002 +v -2.2491950e-002 4.6513620e-002 5.1885310e-002 +v -6.5174200e-003 4.5036200e-002 4.7502780e-002 +v 3.7699000e-004 4.4935790e-002 4.6519930e-002 +v 3.4023920e-002 1.1353879e-001 2.4595280e-002 +v -2.6467900e-002 1.8104250e-001 -8.0811700e-003 +v -1.7533470e-002 4.7964250e-002 4.8829630e-002 +v -7.0012600e-003 4.6416520e-002 4.7485540e-002 +v 5.9862300e-003 4.6689140e-002 4.9073620e-002 +v 9.1007200e-003 4.8474490e-002 4.9353190e-002 +v -3.5453700e-002 1.1244769e-001 3.5055410e-002 +v -7.5983200e-002 1.3820800e-001 4.9216580e-002 +v 3.4838440e-002 4.3153410e-002 2.8954310e-002 +v -5.2655550e-002 4.8494220e-002 3.8731190e-002 +v -4.7378940e-002 4.8456670e-002 3.9126790e-002 +v -3.8933750e-002 4.6364270e-002 4.0364780e-002 +v -2.6468940e-002 4.7816430e-002 4.9322590e-002 +v -2.2365790e-002 4.8073650e-002 5.0126500e-002 +v -1.3373430e-002 4.7892410e-002 4.7883850e-002 +v -1.2193490e-002 4.9470300e-002 4.9484490e-002 +v -6.3364000e-004 4.7193060e-002 4.9136900e-002 +v 2.0656800e-003 5.0104680e-002 5.2290220e-002 +v -2.2749270e-002 4.9883880e-002 4.6605520e-002 +v -1.8002080e-002 4.9917850e-002 4.6947970e-002 +v -7.8036800e-003 5.0169310e-002 5.0988650e-002 +v -2.6843800e-003 5.1247420e-002 5.3186790e-002 +v -6.3875650e-002 1.6140094e-001 -2.0064210e-002 +v 3.2434000e-002 4.5333970e-002 3.0316760e-002 +v -8.8064570e-002 1.2496764e-001 5.7412000e-004 +v -4.1503710e-002 1.6748512e-001 3.2765900e-003 +v -6.4457010e-002 1.5342891e-001 -5.1180400e-003 +v -3.4303190e-002 5.0520150e-002 3.8286020e-002 +v -2.2949400e-002 5.1020650e-002 4.3926450e-002 +v -1.4354710e-002 5.4428200e-002 5.0710310e-002 +v 1.3773100e-003 5.2302710e-002 5.3149010e-002 +v 3.6285000e-003 5.3198640e-002 5.3422710e-002 +v 8.0723800e-003 5.1574140e-002 5.1773560e-002 +v -7.2665890e-002 1.3005582e-001 5.1668200e-002 +v 3.7992780e-002 4.9793200e-002 3.1902020e-002 +v 3.8497260e-002 4.8062400e-002 3.1737450e-002 +v 2.1503510e-002 1.2563988e-001 2.1252620e-002 +v -7.6481330e-002 1.4827412e-001 -8.9376200e-003 +v -8.7240410e-002 1.1967213e-001 -1.7813000e-004 +v -4.3719960e-002 1.6822738e-001 2.3425000e-003 +v -4.0652200e-002 1.2266506e-001 2.6290300e-002 +v -4.6686180e-002 5.4570720e-002 3.7587370e-002 +v -4.4071750e-002 5.1058250e-002 3.8977810e-002 +v -3.8144110e-002 5.0599600e-002 3.9302160e-002 +v -1.9875770e-002 5.1607710e-002 4.6142000e-002 +v -1.6911250e-002 5.1843550e-002 4.8459320e-002 +v -1.6249190e-002 5.4292110e-002 5.0306940e-002 +v -1.0446540e-002 5.3685970e-002 5.1958610e-002 +v -4.3090900e-003 5.4467500e-002 5.3908250e-002 +v 7.8152700e-003 5.5050680e-002 5.2750250e-002 +v 3.7955090e-002 1.0488710e-001 -3.2031800e-003 +v -7.9003790e-002 1.2850550e-001 5.3149340e-002 +v -7.9778990e-002 1.3448894e-001 5.0990290e-002 +v -5.9129700e-002 1.5039712e-001 3.4489540e-002 +v -6.5691790e-002 1.4961818e-001 3.8160980e-002 +v -3.1951660e-002 1.2518394e-001 1.9400580e-002 +v -6.9372590e-002 1.6061775e-001 -9.1905000e-003 +v -4.5225500e-002 1.2935459e-001 2.0377520e-002 +v -4.1879110e-002 5.6164390e-002 3.9796700e-002 +v -3.0614840e-002 5.4412650e-002 3.6694290e-002 +v -2.4787600e-002 5.2606220e-002 4.0839760e-002 +v -2.1588860e-002 5.6836920e-002 4.5467040e-002 +v -2.4264000e-004 5.4536020e-002 5.4641200e-002 +v -8.0900510e-002 1.2558713e-001 5.2155370e-002 +v -2.9996210e-002 1.7811137e-001 -5.2358200e-003 +v 3.5515390e-002 5.0449570e-002 3.1439830e-002 +v 4.3315550e-002 5.2145550e-002 3.2492110e-002 +v -6.3938540e-002 1.5262699e-001 3.4481070e-002 +v -4.4489440e-002 6.1077710e-002 3.9545320e-002 +v -3.8979900e-002 5.7996270e-002 4.0151390e-002 +v -7.9087730e-002 1.7044488e-001 -4.1373170e-002 +v -4.6247300e-003 5.7759650e-002 5.3990710e-002 +v -1.4985500e-003 5.5925480e-002 5.4630800e-002 +v 5.1981700e-003 5.7017990e-002 5.3423530e-002 +v 3.0920000e-005 1.2315746e-001 3.4749660e-002 +v 3.3568300e-002 1.1523716e-001 2.1798410e-002 +v 3.8686300e-002 5.6450590e-002 3.1188930e-002 +v -3.4385780e-002 5.4096000e-002 3.8060290e-002 +v -8.5308300e-003 6.0159420e-002 5.5308950e-002 +v -4.4024000e-004 5.8343410e-002 5.4483410e-002 +v -9.1078730e-002 1.1506037e-001 4.0141810e-002 +v 4.0775480e-002 5.4557490e-002 3.2014740e-002 +v 4.5636880e-002 5.7402620e-002 3.1992220e-002 +v 2.0358850e-002 1.2448747e-001 2.5906340e-002 +v -1.4169700e-002 1.2767892e-001 1.3080500e-003 +v -1.1987590e-002 5.7493210e-002 5.2752420e-002 +v 3.2514500e-003 5.9828640e-002 5.5464300e-002 +v -1.2395240e-002 1.2264726e-001 3.3588280e-002 +v 1.3813780e-002 1.2322188e-001 3.2502590e-002 +v -7.7004310e-002 1.5521281e-001 2.4534770e-002 +v -2.8001360e-002 6.1075420e-002 3.7471210e-002 +v -8.5480000e-004 6.0593520e-002 5.5824810e-002 +v -3.8050200e-002 1.1527068e-001 3.3178540e-002 +v -1.6231340e-002 1.2382942e-001 2.9576990e-002 +v -2.5373550e-002 1.5840012e-001 -1.4801300e-003 +v -6.7818590e-002 1.5454353e-001 3.0233720e-002 +v -4.3082600e-003 6.1418570e-002 5.5688490e-002 +v -3.1958900e-003 1.1912518e-001 3.8349580e-002 +v -6.4292400e-003 1.2201090e-001 3.5740890e-002 +v 4.2312960e-002 5.9099150e-002 3.0848420e-002 +v 4.8510010e-002 6.1780760e-002 3.0347250e-002 +v 5.0412290e-002 6.0312610e-002 3.0245060e-002 +v -3.9185590e-002 6.3074530e-002 4.1382890e-002 +v -3.4448660e-002 6.0780500e-002 3.9543990e-002 +v -1.4746030e-002 6.5583910e-002 5.3730860e-002 +v 2.6645200e-003 6.2700010e-002 5.6525210e-002 +v -1.3991610e-002 1.1962575e-001 3.6251540e-002 +v 1.9659170e-002 1.1236219e-001 3.7545270e-002 +v -3.2597160e-002 1.7498725e-001 -2.5953100e-003 +v -2.1513900e-003 9.9437380e-002 4.9849750e-002 +v -5.6001390e-002 6.1830670e-002 2.7931150e-002 +v -5.4707260e-002 6.3461570e-002 3.1670590e-002 +v -5.1307940e-002 6.0521660e-002 3.1434930e-002 +v -4.1979320e-002 6.9629980e-002 4.1824930e-002 +v -3.0272490e-002 6.2474660e-002 3.7982220e-002 +v -1.1387860e-002 6.4742460e-002 5.4918000e-002 +v 6.9544900e-003 6.4700130e-002 5.5599150e-002 +v 4.3015090e-002 9.7690960e-002 1.0258300e-003 +v 4.0635900e-002 6.1574860e-002 2.9841250e-002 +v 4.6183560e-002 6.1910110e-002 3.0223400e-002 +v 3.7552960e-002 1.0685291e-001 2.6303470e-002 +v -7.8640730e-002 1.6387238e-001 -2.8387790e-002 +v -6.1996240e-002 1.4761484e-001 -4.3256800e-003 +v -5.7499800e-003 6.5488980e-002 5.6173390e-002 +v 2.5369000e-004 6.5741170e-002 5.6569260e-002 +v -2.0542550e-002 1.1979518e-001 3.3003670e-002 +v 4.3155900e-003 1.2782561e-001 2.8646880e-002 +v -4.6549580e-002 6.7652130e-002 3.9635790e-002 +v -1.7420580e-002 6.9659490e-002 5.4089530e-002 +v -1.5242190e-002 7.0909900e-002 5.5004790e-002 +v -1.0282890e-002 6.8926360e-002 5.5289610e-002 +v -1.1289000e-004 6.9288200e-002 5.6579790e-002 +v -3.6309330e-002 1.1876943e-001 3.0674020e-002 +v -7.0325800e-002 6.3367770e-002 1.9809180e-002 +v 4.3023100e-002 6.3795810e-002 2.8039210e-002 +v 4.2831110e-002 8.5556040e-002 2.7873760e-002 +v 1.6981600e-002 1.2715003e-001 2.2931490e-002 +v -4.2121490e-002 1.2825104e-001 1.0751500e-003 +v 1.6329230e-002 1.2251895e-001 3.1375390e-002 +v -8.1264160e-002 1.5381172e-001 2.5897830e-002 +v -3.2257870e-002 8.8192600e-002 -2.5130960e-002 +v -1.3774950e-002 7.0887950e-002 5.4695630e-002 +v 5.2929600e-003 6.8006030e-002 5.5670490e-002 +v 7.6962500e-003 7.2375600e-002 5.6062150e-002 +v 3.4830600e-003 1.2002635e-001 3.6911950e-002 +v 6.6532500e-003 1.1673563e-001 3.8716340e-002 +v 4.6086570e-002 6.6473930e-002 2.6808990e-002 +v 5.2327290e-002 6.4327070e-002 2.8281890e-002 +v -6.1897630e-002 1.2297065e-001 -8.7725500e-003 +v -6.3934700e-003 1.0524472e-001 -2.2841900e-002 +v -3.5218330e-002 6.8559830e-002 4.1381470e-002 +v -3.2689880e-002 6.7729720e-002 4.0124390e-002 +v -2.9245440e-002 6.9551520e-002 3.9369010e-002 +v -5.0024500e-003 6.9655000e-002 5.6892510e-002 +v 1.6573960e-002 1.1890153e-001 3.5042300e-002 +v -8.9385100e-002 9.9024040e-002 1.7521830e-002 +v 4.5719230e-002 6.9489400e-002 2.3549340e-002 +v 5.4537210e-002 6.8796720e-002 2.4517690e-002 +v -4.4989450e-002 7.1577330e-002 4.1929250e-002 +v -4.2439400e-003 1.2914902e-001 2.5829230e-002 +v -7.3880090e-002 1.2091638e-001 5.3395800e-002 +v -7.4033870e-002 1.4406894e-001 4.4994970e-002 +v 5.0400010e-002 6.7292480e-002 2.6851470e-002 +v -5.4056890e-002 1.5671602e-001 -2.4865900e-003 +v 2.6148110e-002 1.2014725e-001 2.7308010e-002 +v -1.0736490e-002 1.2990285e-001 1.0993790e-002 +v -4.5078840e-002 8.7261130e-002 -2.1865520e-002 +v -3.8340900e-002 6.8843770e-002 4.1846470e-002 +v -2.9255580e-002 7.5169210e-002 4.1186430e-002 +v -4.7311210e-002 1.6296037e-001 6.0740300e-003 +v -1.1866030e-002 7.3183750e-002 5.6250050e-002 +v -6.3734600e-003 7.2184340e-002 5.7972980e-002 +v -2.9935300e-003 7.2186440e-002 5.8167190e-002 +v -2.5781060e-002 9.3778180e-002 -2.8388220e-002 +v -1.6692560e-002 1.1568553e-001 3.7853150e-002 +v -8.4123410e-002 1.0832050e-001 2.4730980e-002 +v -7.4294080e-002 1.6356850e-001 -1.5534220e-002 +v -9.4297150e-002 1.2617744e-001 1.9224650e-002 +v -3.5207090e-002 1.2505219e-001 2.1635690e-002 +v -4.9495940e-002 7.3436340e-002 4.1673570e-002 +v -3.3064160e-002 7.6654840e-002 4.1277900e-002 +v -7.3157300e-003 7.3919590e-002 5.7971690e-002 +v 2.1850000e-005 7.3496040e-002 5.7696650e-002 +v 4.1934400e-003 7.2915170e-002 5.6298730e-002 +v -7.7256080e-002 1.4565854e-001 4.3122930e-002 +v 4.1073260e-002 8.8724320e-002 -9.7879400e-003 +v 3.7418710e-002 1.0850822e-001 3.3973000e-004 +v -5.5111380e-002 7.4687840e-002 4.1939740e-002 +v -4.2740230e-002 7.6995340e-002 4.2804080e-002 +v -6.8531190e-002 1.5630045e-001 2.0997710e-002 +v -9.9440200e-003 7.6343100e-002 5.7388560e-002 +v -3.2479200e-003 7.5710690e-002 5.8714640e-002 +v 1.3414380e-002 9.3073740e-002 5.1467750e-002 +v -7.3504440e-002 9.3883340e-002 -1.4751720e-002 +v -7.4471830e-002 1.3507476e-001 5.0688900e-002 +v -2.5851310e-002 1.2182948e-001 2.6079670e-002 +v -3.4022940e-002 1.7597076e-001 -3.7271600e-003 +v -7.5405850e-002 1.6839072e-001 -2.6792980e-002 +v -3.6658410e-002 7.5087300e-002 4.2006940e-002 +v -1.7795480e-002 7.7486190e-002 5.6087240e-002 +v -1.1378660e-002 7.9877150e-002 5.7698880e-002 +v -1.0415000e-004 7.6881950e-002 5.8190740e-002 +v 2.7381400e-003 7.9105680e-002 5.6719190e-002 +v 5.5681200e-003 7.6397140e-002 5.6327220e-002 +v -6.1895860e-002 1.5424247e-001 -1.9018600e-002 +v -7.2646960e-002 1.4098943e-001 4.6976640e-002 +v 1.5799740e-002 1.2901416e-001 1.3236870e-002 +v -1.1703420e-002 9.7355720e-002 5.1592080e-002 +v -5.8922160e-002 7.7545490e-002 4.2961390e-002 +v -5.3121320e-002 7.7912430e-002 4.3334920e-002 +v -5.0745740e-002 7.6148400e-002 4.3137630e-002 +v -4.7401820e-002 7.5550340e-002 4.2630140e-002 +v -4.5055620e-002 7.8796280e-002 4.2341310e-002 +v -3.9517650e-002 7.8127780e-002 4.2918620e-002 +v -1.5245570e-002 8.2940770e-002 5.6934590e-002 +v -1.4557790e-002 7.6582160e-002 5.6493250e-002 +v -5.9406000e-003 7.9038240e-002 5.7969830e-002 +v 3.7176540e-002 1.1064404e-001 1.8811330e-002 +v 2.3929700e-003 1.3162713e-001 1.1955100e-002 +v -9.3644210e-002 1.1789378e-001 1.8662080e-002 +v -6.3939810e-002 7.8621830e-002 4.2083520e-002 +v -4.5376460e-002 8.2383550e-002 4.3282120e-002 +v -3.6505460e-002 8.1152260e-002 4.3162320e-002 +v -3.3244340e-002 8.2266590e-002 4.1852180e-002 +v -3.0800650e-002 8.0068420e-002 4.1798070e-002 +v -2.0578500e-003 8.0998290e-002 5.7553840e-002 +v 8.1848100e-003 8.0756170e-002 5.5374510e-002 +v -1.2953370e-002 1.1593580e-001 3.8920230e-002 +v -7.8081470e-002 1.2351940e-001 5.2136990e-002 +v -2.6580930e-002 1.5567694e-001 -4.1963400e-003 +v -8.2471600e-002 1.1624130e-001 -2.3236300e-003 +v -2.7538480e-002 7.9964780e-002 4.7697210e-002 +v 1.2556400e-003 8.3845570e-002 5.7446440e-002 +v 6.1508300e-003 8.3406240e-002 5.6463500e-002 +v -6.2433240e-002 8.4035270e-002 4.4203120e-002 +v -5.9867170e-002 8.0540510e-002 4.3277090e-002 +v -5.5238340e-002 8.1999450e-002 4.4984770e-002 +v -5.4000400e-002 8.0568410e-002 4.4601460e-002 +v -5.0027020e-002 8.1311330e-002 4.4264180e-002 +v -4.1996120e-002 8.1083670e-002 4.2456150e-002 +v -3.9357940e-002 8.3631380e-002 4.3502350e-002 +v -8.6161480e-002 1.0838594e-001 1.8244920e-002 +v -8.6723010e-002 9.9917250e-002 3.5537100e-003 +v -2.2413700e-002 8.3283520e-002 5.5590700e-002 +v -1.6993180e-002 8.2555820e-002 5.7523880e-002 +v -1.2406010e-002 8.5222570e-002 5.7267780e-002 +v -7.4442100e-003 1.1693417e-001 3.9283850e-002 +v -2.1452000e-003 1.1143287e-001 4.2436620e-002 +v -7.5718220e-002 1.2522734e-001 5.3087330e-002 +v -7.7056660e-002 1.3193469e-001 5.2462430e-002 +v -6.1121040e-002 1.5569660e-001 2.2517050e-002 +v -3.7538540e-002 1.2744127e-001 1.5320870e-002 +v -2.0516700e-003 1.0093469e-001 4.5625920e-002 +v -6.4992150e-002 8.4550900e-002 4.4120060e-002 +v -5.7861950e-002 8.3944360e-002 4.4186030e-002 +v -4.5681080e-002 8.4988010e-002 4.4159500e-002 +v -3.5022640e-002 8.2888160e-002 4.2912760e-002 +v -2.9982010e-002 8.5402300e-002 4.3745080e-002 +v -8.8892260e-002 9.9209100e-002 9.5703200e-003 +v -1.9135300e-002 8.3474800e-002 5.7217390e-002 +v -8.3489710e-002 1.0724729e-001 7.5790000e-004 +v -7.0112800e-002 1.1790350e-001 5.2714160e-002 +v -3.5526320e-002 1.7595563e-001 -4.8676200e-003 +v -7.0831390e-002 1.2254425e-001 5.3274880e-002 +v 4.5133810e-002 9.3630690e-002 6.2336800e-003 +v -5.3616700e-002 8.5346850e-002 4.5332470e-002 +v -4.9000840e-002 8.6221680e-002 4.5352040e-002 +v -3.6744880e-002 8.6083690e-002 4.3612890e-002 +v -1.0872600e-002 8.8826770e-002 5.6665490e-002 +v -3.8450200e-003 8.4787810e-002 5.7197980e-002 +v -4.9020070e-002 1.1771293e-001 3.1581430e-002 +v -4.2914400e-002 1.1835991e-001 3.0645040e-002 +v -5.7684530e-002 1.5561695e-001 1.2983110e-002 +v -2.5411730e-002 1.2472533e-001 1.2886000e-004 +v 1.9012230e-002 1.2736197e-001 1.7786580e-002 +v -5.9498600e-002 8.8845470e-002 4.5109290e-002 +v -5.6931050e-002 8.8101500e-002 4.4692930e-002 +v 3.5765600e-003 1.3138981e-001 7.2086000e-003 +v -1.6683350e-002 8.7266690e-002 5.6741190e-002 +v -8.4980800e-003 8.3990470e-002 5.7605220e-002 +v 3.5078200e-003 8.6339520e-002 5.7048320e-002 +v -2.8398700e-002 1.8070650e-001 -7.8469500e-003 +v -7.6565830e-002 1.1674037e-001 5.1489350e-002 +v 1.7869430e-002 9.0898610e-002 4.8712940e-002 +v -4.0342100e-002 1.1669551e-001 3.2460200e-002 +v 5.9105700e-003 1.3140929e-001 1.6823750e-002 +v -8.5777550e-002 9.1701370e-002 -4.6970000e-005 +v -5.0372230e-002 8.8844660e-002 4.5188000e-002 +v -4.4434130e-002 8.7654530e-002 4.3477620e-002 +v -4.2056390e-002 8.6711520e-002 4.2534630e-002 +v -3.3058460e-002 8.6185500e-002 4.2560350e-002 +v -2.9241910e-002 9.0453360e-002 4.4236610e-002 +v -6.8964100e-003 8.4432910e-002 5.7168580e-002 +v -6.6210600e-003 9.0415250e-002 5.6879750e-002 +v -1.2439100e-003 8.9093200e-002 5.6552120e-002 +v 9.4076000e-003 9.0328050e-002 5.4214140e-002 +v 4.0194810e-002 1.0231597e-001 -2.0048600e-003 +v -8.6227130e-002 1.1466841e-001 2.2102000e-003 +v -8.9495490e-002 9.5632430e-002 1.4234810e-002 +v -6.7132160e-002 1.5709447e-001 -6.2032000e-003 +v -5.2935640e-002 9.0913520e-002 4.4568870e-002 +v -3.6744910e-002 8.8886950e-002 4.3312050e-002 +v -1.3626110e-002 8.9787930e-002 5.6674380e-002 +v 2.3337130e-002 1.2353449e-001 2.4874140e-002 +v -3.7053790e-002 1.2715094e-001 3.5474000e-004 +v -7.3696690e-002 1.5613015e-001 1.4359790e-002 +v -6.5592380e-002 9.1042400e-002 4.4092080e-002 +v -5.8997380e-002 9.2030670e-002 4.5335270e-002 +v -3.3238910e-002 8.8573580e-002 4.3697040e-002 +v -3.1834990e-002 9.0722970e-002 4.4173460e-002 +v -2.0022170e-002 8.8032110e-002 5.5589350e-002 +v -1.1213830e-002 9.2366370e-002 5.6105260e-002 +v 3.9108440e-002 1.0829072e-001 1.3142330e-002 +v 2.8675700e-002 1.1959600e-001 2.4545910e-002 +v -6.8940210e-002 1.5652777e-001 -1.9716000e-003 +v -6.2615110e-002 9.1126880e-002 4.5090730e-002 +v 3.0444560e-002 1.1886441e-001 2.0821750e-002 +v -1.5241090e-002 9.1821720e-002 5.5817230e-002 +v -5.6221700e-003 9.3235010e-002 5.5893630e-002 +v 4.7989900e-003 9.1654840e-002 5.4715170e-002 +v -6.8282400e-002 9.2376840e-002 4.2388730e-002 +v -5.5623730e-002 9.2187420e-002 4.5054970e-002 +v -5.1901030e-002 9.5457620e-002 4.3937650e-002 +v -4.8809030e-002 9.1083890e-002 4.4456690e-002 +v -4.5411560e-002 9.1002130e-002 4.3252770e-002 +v -4.4514550e-002 9.4860420e-002 4.2972490e-002 +v -3.9430320e-002 8.9597620e-002 4.3177890e-002 +v -3.5642240e-002 9.2617410e-002 4.4238490e-002 +v -1.2246000e-004 9.3201160e-002 5.5398380e-002 +v 9.5104600e-003 9.5483870e-002 5.0910600e-002 +v 2.1441660e-002 9.1354960e-002 4.8043360e-002 +v -8.9830300e-003 1.6926449e-001 -2.2683480e-002 +v -7.3019050e-002 1.5602104e-001 2.2419340e-002 +v -6.4760430e-002 1.5311588e-001 -2.0371200e-003 +v -6.9368510e-002 9.5242790e-002 4.2129000e-002 +v -6.0117140e-002 9.5552910e-002 4.4183820e-002 +v -2.9241690e-002 9.4290440e-002 4.4821190e-002 +v -2.6561430e-002 9.3289510e-002 4.4975420e-002 +v -1.4394030e-002 9.4587640e-002 5.3993500e-002 +v -8.8691600e-003 9.5400260e-002 5.4445980e-002 +v -1.2188700e-003 9.6201750e-002 5.3815910e-002 +v 4.0479000e-003 9.5817360e-002 5.2936770e-002 +v -4.6019400e-003 1.2428544e-001 3.3471960e-002 +v -7.8436460e-002 1.3928013e-001 4.8329360e-002 +v 1.0774610e-002 1.3079162e-001 1.4341740e-002 +v -5.6623730e-002 9.6322170e-002 4.3667910e-002 +v -3.6298870e-002 9.5695620e-002 4.3580310e-002 +v -2.4379930e-002 9.5866450e-002 4.4434530e-002 +v 1.0915500e-002 1.2633629e-001 2.9857020e-002 +v -5.8622700e-003 9.7350210e-002 5.2743650e-002 +v 1.6973450e-002 9.7106620e-002 4.7440920e-002 +v -6.7231980e-002 9.9173950e-002 4.1593880e-002 +v -5.4994210e-002 9.9640820e-002 4.2955230e-002 +v -4.8617990e-002 9.6452700e-002 4.4183060e-002 +v -5.5369000e-002 1.5442476e-001 1.6160650e-002 +v -9.4243550e-002 1.2207432e-001 2.3568470e-002 +v 1.3242990e-002 9.6738240e-002 4.8750160e-002 +v 2.0639290e-002 9.6602480e-002 4.6971000e-002 +v 7.3429700e-003 1.2098188e-001 3.5973430e-002 +v -1.3493870e-002 1.2882438e-001 5.9690700e-003 +v -2.0110640e-002 1.2504545e-001 2.3588310e-002 +v -6.9438450e-002 1.6479930e-001 -1.7218700e-002 +v -6.4028050e-002 9.7838670e-002 4.2565330e-002 +v -5.1996350e-002 9.9707850e-002 4.2716590e-002 +v -4.3990880e-002 9.9425460e-002 4.2383430e-002 +v -3.9738250e-002 1.0215357e-001 4.0574410e-002 +v -3.5931490e-002 9.9809950e-002 4.2335800e-002 +v -3.0867600e-002 9.6914680e-002 4.4651400e-002 +v -2.8342070e-002 9.7782680e-002 4.3761280e-002 +v -2.5622580e-002 9.8713420e-002 4.4210890e-002 +v -8.5236620e-002 1.1077356e-001 2.4537670e-002 +v 7.1936000e-003 9.8859470e-002 4.8419510e-002 +v 9.6509200e-003 1.0108782e-001 4.7373080e-002 +v 1.3487100e-002 1.0076420e-001 4.7454290e-002 +v 7.7389800e-003 1.3147500e-001 1.1682970e-002 +v 8.0905000e-004 1.1633319e-001 4.0167560e-002 +v -7.2652570e-002 1.6567918e-001 -1.8212480e-002 +v -5.6009400e-003 1.3076674e-001 1.0516060e-002 +v -2.6303720e-002 1.2518875e-001 1.7392980e-002 +v -4.7590430e-002 1.0081180e-001 4.2349150e-002 +v -4.1460830e-002 9.8544800e-002 4.1778620e-002 +v -3.3582070e-002 1.0383908e-001 4.0737990e-002 +v -2.2870240e-002 1.0284737e-001 4.3544750e-002 +v -2.2361970e-002 9.8207610e-002 4.4765940e-002 +v -1.8870510e-002 9.8973200e-002 4.4489280e-002 +v -7.1433690e-002 7.7573520e-002 3.8060760e-002 +v -7.3001150e-002 1.1826712e-001 5.3034590e-002 +v -6.8466430e-002 1.3498146e-001 -8.3359800e-003 +v -7.4683810e-002 1.0786100e-001 -9.0477100e-003 +v -6.4958960e-002 1.5852021e-001 -1.2595320e-002 +v -7.8931700e-002 1.5093057e-001 3.5151900e-002 +v -7.4113550e-002 9.9442520e-002 3.8337710e-002 +v -7.0456930e-002 1.0098777e-001 3.9794060e-002 +v -5.9058760e-002 1.0041260e-001 4.2725130e-002 +v -4.9187330e-002 1.0452012e-001 4.0301390e-002 +v -2.9151180e-002 1.0197369e-001 4.2633060e-002 +v -1.1599720e-002 1.0107813e-001 4.4191660e-002 +v 5.1450400e-003 1.0163906e-001 4.5423010e-002 +v -5.1495700e-002 1.0496738e-001 4.0347210e-002 +v -2.0218210e-002 1.0214391e-001 4.3701160e-002 +v 4.2515900e-003 1.0523743e-001 4.2563550e-002 +v 1.6832800e-002 1.0337487e-001 4.5287270e-002 +v -2.5661080e-002 1.2562669e-001 4.5537500e-003 +v -7.2141950e-002 1.0536685e-001 3.7523210e-002 +v -6.4984570e-002 1.0371550e-001 4.0647810e-002 +v -6.0652480e-002 1.0467197e-001 4.0906390e-002 +v -5.5308980e-002 1.0365394e-001 4.1516690e-002 +v -4.4243240e-002 1.0431726e-001 4.1339990e-002 +v -1.5513340e-002 1.0436131e-001 4.2919420e-002 +v -7.6323200e-003 1.0304531e-001 4.3710640e-002 +v -7.8046900e-003 1.0516619e-001 4.3825460e-002 +v 9.7163200e-003 1.0523506e-001 4.3603830e-002 +v 3.0300390e-002 1.1553645e-001 2.8685010e-002 +v -4.7496910e-002 1.0635662e-001 4.0165640e-002 +v -3.8978950e-002 1.0683037e-001 3.8247660e-002 +v -2.5869310e-002 1.0426705e-001 4.2207540e-002 +v -1.8057930e-002 1.0503919e-001 4.2802830e-002 +v -1.5180030e-002 1.0807750e-001 4.2350430e-002 +v -3.8981500e-003 1.0566175e-001 4.4047190e-002 +v 2.6820000e-005 1.0446731e-001 4.3775910e-002 +v 1.1978350e-002 1.0403629e-001 4.5396310e-002 +v 1.5004970e-002 1.0726898e-001 4.1811990e-002 +v 2.6488060e-002 1.2230287e-001 2.0398110e-002 +v -3.6225630e-002 1.0634244e-001 3.8644860e-002 +v -2.1126780e-002 1.0932290e-001 4.0715320e-002 +v -1.2819810e-002 1.0457100e-001 4.3465690e-002 +v 5.2847900e-003 1.0943666e-001 4.1674980e-002 +v 8.9403700e-003 1.0710645e-001 4.1243400e-002 +v -5.1839670e-002 1.6062039e-001 7.1421300e-003 +v -5.4201370e-002 1.1451730e-001 3.4843990e-002 +v 1.3226250e-002 1.2958070e-001 1.9689610e-002 +v -6.9382410e-002 1.0865787e-001 3.7507800e-002 +v -6.7691040e-002 1.0734145e-001 3.8018440e-002 +v -6.3782400e-002 1.1037270e-001 3.7579790e-002 +v -5.0749390e-002 1.0928682e-001 3.8297580e-002 +v -9.3936200e-003 1.0742813e-001 4.3454570e-002 +v 1.1760100e-003 1.0932531e-001 4.2662800e-002 +v 9.8020300e-003 1.1003994e-001 3.9945400e-002 +v 2.0131290e-002 1.0732778e-001 4.0323840e-002 +v -2.7872800e-003 1.0577531e-001 -2.2459030e-002 +v -5.4996890e-002 1.0774199e-001 3.9424590e-002 +v -4.5966740e-002 1.0905146e-001 3.8754110e-002 +v -4.2324540e-002 1.0737278e-001 3.9456440e-002 +v -3.2161240e-002 1.0896504e-001 3.8102720e-002 +v -3.0770180e-002 1.1597313e-001 3.2858800e-002 +v -1.1608610e-002 1.0983707e-001 4.2475330e-002 +v -2.9428320e-002 9.3166620e-002 -2.4931860e-002 +v -8.0043570e-002 9.2080160e-002 -9.4198200e-003 +v -4.9797430e-002 1.1342104e-001 3.5117920e-002 +v -4.3723850e-002 1.6191369e-001 5.7713400e-003 +v -5.7981740e-002 1.0943152e-001 3.7997640e-002 +v -4.1491180e-002 1.1224766e-001 3.5873450e-002 +v -2.4929830e-002 1.1592775e-001 3.4094730e-002 +v -2.0881690e-002 1.1409528e-001 3.7872990e-002 +v -7.5519700e-003 1.1183813e-001 4.2039690e-002 +v 3.7667200e-003 1.1240547e-001 4.1494710e-002 +v -6.2829620e-002 1.5189480e-001 -9.2373400e-003 +v -5.9195950e-002 1.1320797e-001 3.6234680e-002 +v -5.1079080e-002 9.3892810e-002 -2.1761690e-002 +v -7.3945370e-002 8.4374880e-002 -1.5154490e-002 +v -7.2146240e-002 1.3486431e-001 -7.7592200e-003 +v -1.9408870e-002 1.7041104e-001 -2.0994830e-002 +v -5.5530450e-002 1.4905531e-001 -1.9602100e-003 +v 1.6688460e-002 3.6976600e-002 4.3000600e-002 +v -5.2277330e-002 1.1775075e-001 3.3769460e-002 +v -6.9201380e-002 9.3039200e-002 -1.6486120e-002 +v 2.6579210e-002 1.1702438e-001 3.0867940e-002 +v -2.3574310e-002 3.7036910e-002 5.4144750e-002 +v -7.3775100e-003 3.8988430e-002 4.8929450e-002 +v 1.3234660e-002 3.8453060e-002 4.4501470e-002 +v 1.9487350e-002 4.0809290e-002 4.2641060e-002 +v -6.3953930e-002 1.4694729e-001 3.8484200e-002 +v -4.9579470e-002 3.6096540e-002 4.5955360e-002 +v -4.3323650e-002 3.6286400e-002 4.4042360e-002 +v -2.9047200e-002 1.2556338e-001 7.7617700e-003 +v -1.7343100e-003 3.9476800e-002 4.7262900e-002 +v -3.1358130e-002 1.5362199e-001 -4.6738900e-003 +v 2.5822000e-003 1.0747582e-001 -2.0606030e-002 +v -5.6802300e-002 1.4514674e-001 3.1740300e-002 +v -5.6464330e-002 3.7683110e-002 4.6819640e-002 +v -5.0964750e-002 3.8312290e-002 4.6286140e-002 +v -5.0980410e-002 1.3486613e-001 2.7585000e-002 +v -2.5647410e-002 3.8860730e-002 5.4161390e-002 +v -2.2542110e-002 4.0615780e-002 5.3986030e-002 +v -1.7618010e-002 3.8911170e-002 5.2403440e-002 +v -1.9711750e-002 1.6829145e-001 -1.3020960e-002 +v 2.3780070e-002 9.5222940e-002 4.6347330e-002 +v 1.4744290e-002 4.2716950e-002 4.4510310e-002 +v 2.1691360e-002 4.0161530e-002 4.0846450e-002 +v -6.4067240e-002 9.0172190e-002 -1.8855520e-002 +v 2.0319150e-002 1.0041961e-001 4.5760520e-002 +v -3.6425000e-002 9.3630690e-002 -2.3534630e-002 +v -1.4981170e-002 4.2571420e-002 5.1404530e-002 +v -5.7335340e-002 1.2340101e-001 4.0231470e-002 +v -5.4172560e-002 1.2337919e-001 3.7576440e-002 +v 2.2625210e-002 4.3621680e-002 4.0904580e-002 +v 2.8810520e-002 4.3352290e-002 3.2157720e-002 +v -4.2764160e-002 1.5727487e-001 5.2016200e-003 +v 9.2231900e-003 4.4125090e-002 4.5057440e-002 +v 1.5048210e-002 4.5755840e-002 4.3793870e-002 +v -6.3757290e-002 1.0251144e-001 -1.7484400e-002 +v -3.4070430e-002 1.6148975e-001 -1.3786960e-002 +v -8.2191500e-002 7.5610200e-002 1.6542620e-002 +v -6.6299420e-002 1.2337119e-001 5.0615920e-002 +v -1.5510100e-002 4.5283110e-002 5.0653040e-002 +v 1.8928020e-002 4.4249610e-002 4.3009830e-002 +v 2.5821800e-002 4.6326610e-002 3.8277230e-002 +v 2.7268700e-002 4.4547790e-002 3.6152520e-002 +v -4.5301340e-002 1.5695057e-001 7.2036900e-003 +v 2.3855760e-002 1.0616625e-001 3.9378080e-002 +v 2.1632670e-002 4.8127270e-002 4.0694430e-002 +v 4.3785360e-002 4.8803700e-002 3.1343420e-002 +v 4.8074790e-002 4.8969960e-002 2.8165490e-002 +v 5.2663090e-002 4.7673620e-002 2.1201270e-002 +v -5.2722450e-002 4.4722850e-002 4.4143250e-002 +v -3.0071610e-002 1.7258324e-001 -6.3597700e-003 +v -3.4508050e-002 1.5447469e-001 1.6504600e-003 +v 1.0629710e-002 4.6711810e-002 4.6472020e-002 +v 1.6743440e-002 4.8439000e-002 4.3678630e-002 +v 2.8827050e-002 9.2133370e-002 4.3920090e-002 +v -5.9937100e-002 1.2726188e-001 4.0771270e-002 +v -3.6752090e-002 1.5802075e-001 4.1862000e-003 +v -3.7885390e-002 1.6199719e-001 2.4686000e-004 +v -2.2047790e-002 1.8348586e-001 -1.2094990e-002 +v -2.4364620e-002 1.8096836e-001 -9.8312000e-003 +v -4.4882280e-002 1.5052959e-001 7.6451700e-003 +v 2.6996760e-002 5.1317780e-002 3.8752040e-002 +v 4.7735750e-002 5.2751040e-002 3.0797290e-002 +v 5.1703790e-002 4.8857380e-002 2.4147970e-002 +v -6.7504360e-002 1.1424088e-001 4.8036050e-002 +v -1.6257520e-002 1.6031250e-001 -9.6926000e-003 +v -6.3926300e-002 1.6792441e-001 -4.0730420e-002 +v -4.1665290e-002 1.4996141e-001 4.5405000e-003 +v -3.5203230e-002 1.6493551e-001 -2.6810000e-003 +v 4.1318770e-002 9.9496740e-002 2.4275750e-002 +v 1.4055220e-002 5.2523910e-002 4.8593880e-002 +v 1.9421220e-002 5.1321300e-002 4.4798910e-002 +v 2.3677990e-002 5.1474390e-002 4.1053270e-002 +v 3.4258130e-002 5.1930810e-002 3.2757880e-002 +v 5.5957340e-002 5.3147410e-002 2.3197720e-002 +v -3.9937960e-002 1.4922850e-001 1.6017200e-003 +v -4.6988800e-002 1.2600802e-001 2.6985500e-002 +v -2.7708370e-002 9.0081290e-002 -3.1911460e-002 +v 1.9204630e-002 5.5166510e-002 4.7722150e-002 +v 2.1886000e-002 5.3927560e-002 4.5102460e-002 +v 3.1286270e-002 5.2863840e-002 3.6913620e-002 +v 4.6661160e-002 5.4719230e-002 3.1976810e-002 +v 5.1823730e-002 5.3276700e-002 2.7927010e-002 +v -2.9264880e-002 1.6140418e-001 -2.1039500e-003 +v -6.8700770e-002 1.4463537e-001 4.3041630e-002 +v -5.6070060e-002 1.5000706e-001 2.9867640e-002 +v 4.4717850e-002 9.4802660e-002 1.2024710e-002 +v -4.1804090e-002 1.5582081e-001 6.4548200e-003 +v -6.8369340e-002 1.2289287e-001 5.2437860e-002 +v -6.4114810e-002 9.5509880e-002 -1.8114610e-002 +v -1.8383130e-002 1.8543664e-001 -1.7136370e-002 +v 1.1745400e-002 5.6678340e-002 5.1914060e-002 +v -5.9375360e-002 1.1998238e-001 4.0548240e-002 +v 5.9092080e-002 5.7956980e-002 2.0270120e-002 +v 4.3547740e-002 9.7389400e-002 1.7314650e-002 +v -2.6291780e-002 1.5963381e-001 -5.1845000e-004 +v 1.4904780e-002 5.6350380e-002 4.9522780e-002 +v 2.4286200e-002 5.4958580e-002 4.3086850e-002 +v 2.8952610e-002 5.6125250e-002 4.0388970e-002 +v -4.9507770e-002 1.2949500e-001 3.0259270e-002 +v 4.0824790e-002 9.5170220e-002 2.8657920e-002 +v 1.7774800e-002 5.8243780e-002 4.8864720e-002 +v 3.3573840e-002 5.8515260e-002 3.8310990e-002 +v 3.6385040e-002 5.6996480e-002 3.3601460e-002 +v -6.4205010e-002 1.2243894e-001 4.8008340e-002 +v -6.5424500e-002 1.4011279e-001 4.1308960e-002 +v 5.0801340e-002 5.7308080e-002 3.0001390e-002 +v 5.6671750e-002 5.6970820e-002 2.4291920e-002 +v -4.9349930e-002 1.4913519e-001 1.1274060e-002 +v -6.9760570e-002 1.3442855e-001 4.8265220e-002 +v 1.9537060e-002 6.0003780e-002 4.8576140e-002 +v 2.7013910e-002 5.9952790e-002 4.3454420e-002 +v 5.7679430e-002 6.1392970e-002 2.4201790e-002 +v -5.6916540e-002 1.2623512e-001 3.9426610e-002 +v 2.3469280e-002 1.1656262e-001 3.3537270e-002 +v -5.8298640e-002 1.3885500e-001 3.2937460e-002 +v 6.4598400e-003 6.0297430e-002 5.4780030e-002 +v 1.0406020e-002 5.9162400e-002 5.2484370e-002 +v 2.3183950e-002 5.8654360e-002 4.5871060e-002 +v 3.3040360e-002 6.1773840e-002 3.9781440e-002 +v -6.4348220e-002 1.2628088e-001 4.6650200e-002 +v -5.7031440e-002 1.1562007e-001 3.6494880e-002 +v 5.4451560e-002 5.8342890e-002 2.7653010e-002 +v -3.0134400e-002 1.7011322e-001 -7.3591600e-003 +v -3.7077100e-002 1.5986369e-001 1.6096500e-003 +v -5.6032760e-002 1.3731083e-001 3.1970590e-002 +v -6.7676470e-002 1.4150325e-001 4.3868140e-002 +v 9.9911700e-003 6.2735270e-002 5.4009240e-002 +v 1.4521510e-002 6.1382890e-002 5.0500900e-002 +v 3.0051740e-002 6.2169610e-002 4.1545810e-002 +v 3.7519170e-002 6.1062710e-002 3.4366020e-002 +v 5.3944010e-002 6.1391550e-002 2.8268530e-002 +v 5.9119900e-002 6.3128810e-002 2.1561830e-002 +v -2.4366390e-002 1.7693266e-001 -1.1719630e-002 +v -1.3253420e-002 1.6627152e-001 -1.4120370e-002 +v 3.9218740e-002 1.0669250e-001 2.0450190e-002 +v -1.7968980e-002 1.8078031e-001 -1.8103430e-002 +v 2.1902390e-002 6.0875970e-002 4.7282360e-002 +v 3.5341750e-002 6.1630030e-002 3.7606020e-002 +v -6.2145620e-002 1.3599775e-001 3.6700970e-002 +v 5.6820620e-002 6.3691150e-002 2.5286090e-002 +v -3.2800040e-002 1.5948699e-001 2.1962800e-003 +v 1.1212140e-002 6.6584120e-002 5.3982180e-002 +v 1.2919590e-002 6.4203580e-002 5.2441150e-002 +v 2.0126950e-002 6.3851330e-002 4.7919660e-002 +v 3.5971760e-002 6.6669610e-002 3.7781400e-002 +v 3.9906940e-002 6.4361260e-002 3.1686660e-002 +v -6.6702350e-002 1.3210600e-001 4.5480940e-002 +v -4.1601430e-002 1.5978000e-001 3.5374700e-003 +v 3.3044580e-002 1.0766252e-001 3.1916150e-002 +v 2.4672100e-002 6.3694500e-002 4.5204640e-002 +v 2.6108660e-002 6.8007640e-002 4.3902690e-002 +v 3.3363940e-002 6.7054760e-002 3.9729480e-002 +v 4.2915790e-002 6.6707700e-002 2.6994720e-002 +v 5.4714960e-002 6.4697160e-002 2.6979680e-002 +v -1.6530940e-002 1.6325000e-001 -9.2475200e-003 +v -1.7891600e-002 1.6113800e-001 -6.7072700e-003 +v 4.1118120e-002 9.7491260e-002 -3.9756700e-003 +v 2.3386770e-002 7.0075990e-002 4.7012620e-002 +v 3.8102900e-002 6.5678440e-002 3.5132520e-002 +v 1.0145240e-002 1.2221678e-001 3.4718950e-002 +v 5.8392410e-002 6.6741240e-002 2.1979460e-002 +v 3.8302050e-002 8.4549140e-002 -1.4478830e-002 +v 3.4126440e-002 9.7053980e-002 3.7590390e-002 +v -3.1355740e-002 1.5809888e-001 1.9128800e-003 +v -5.8259510e-002 1.4099493e-001 3.2440640e-002 +v -6.6817230e-002 1.1951525e-001 5.1490220e-002 +v -6.8090040e-002 1.1647050e-001 5.1151230e-002 +v 1.6568300e-002 6.6269890e-002 5.1009890e-002 +v 2.9362870e-002 6.6509780e-002 4.2289380e-002 +v 3.7027180e-002 9.3949630e-002 -1.1674040e-002 +v 5.6412730e-002 6.7659930e-002 2.3969320e-002 +v -6.1295740e-002 1.4519988e-001 3.7137830e-002 +v 8.3873000e-003 1.1336223e-001 3.9792610e-002 +v 1.1807030e-002 7.0920980e-002 5.4240490e-002 +v 2.9741730e-002 7.0647100e-002 4.1653890e-002 +v 3.6294410e-002 7.1220700e-002 3.7114610e-002 +v 3.9899680e-002 7.0294820e-002 3.2720020e-002 +v -6.2763130e-002 1.3778012e-001 3.6678590e-002 +v -1.5815440e-002 1.7504938e-001 -1.8654160e-002 +v -9.2268990e-002 1.1475156e-001 1.7017380e-002 +v -9.4964000e-004 1.0141111e-001 4.4290070e-002 +v -6.3712920e-002 1.1274250e-001 3.8006760e-002 +v -6.1096020e-002 1.1701650e-001 3.9654020e-002 +v 2.0991870e-002 6.9335450e-002 4.9003540e-002 +v 2.5658530e-002 7.0550460e-002 4.4539930e-002 +v 3.2978560e-002 7.3500690e-002 4.0486510e-002 +v 4.2156130e-002 6.9717580e-002 2.8318230e-002 +v -5.5516860e-002 1.2956070e-001 3.6598450e-002 +v -4.0802290e-002 1.6436059e-001 3.7448800e-003 +v -6.2546500e-003 1.0121650e-001 4.4322030e-002 +v -1.0986820e-002 1.6621199e-001 -1.6047550e-002 +v -3.0351420e-002 1.6448158e-001 -5.3291400e-003 +v 2.6110920e-002 1.0088990e-001 4.1733260e-002 +v -6.5599940e-002 1.1329504e-001 4.2318710e-002 +v 2.8814660e-002 9.6712680e-002 4.2257700e-002 +v 1.5263280e-002 7.1571940e-002 5.2717390e-002 +v 2.8982400e-002 7.4088480e-002 4.3447240e-002 +v 4.4872540e-002 7.5516710e-002 2.3155250e-002 +v -7.8225230e-002 1.4962481e-001 -2.5019400e-003 +v -4.6094940e-002 1.5296850e-001 9.0029700e-003 +v -5.2369030e-002 1.4682913e-001 1.8934650e-002 +v -2.1592100e-002 1.5763440e-001 -6.8623600e-003 +v 1.7176770e-002 7.3066230e-002 5.1826600e-002 +v 2.2687500e-002 7.5149180e-002 4.9312500e-002 +v 3.5472040e-002 7.3076670e-002 3.8482270e-002 +v -8.9480840e-002 1.3839976e-001 2.5061450e-002 +v -5.3216730e-002 1.3221978e-001 3.2978380e-002 +v -3.7776780e-002 1.5551947e-001 4.3700800e-003 +v -9.0549380e-002 1.3511875e-001 2.1680550e-002 +v -6.3366580e-002 1.3037076e-001 4.1669940e-002 +v 1.4074270e-002 7.6651720e-002 5.4221350e-002 +v 1.8109790e-002 7.5806590e-002 5.2488260e-002 +v 4.2209940e-002 7.8861480e-002 2.9187200e-002 +v -5.2115930e-002 1.4179906e-001 2.0510310e-002 +v 2.9063090e-002 1.1149602e-001 3.3805790e-002 +v -5.4731460e-002 1.4267229e-001 2.8980480e-002 +v 2.5903640e-002 7.5536040e-002 4.6416650e-002 +v 3.1298760e-002 7.5907440e-002 4.2699060e-002 +v 3.8446170e-002 7.5649430e-002 3.5050640e-002 +v 4.6351670e-002 7.4079520e-002 1.8354320e-002 +v -4.7656560e-002 1.3077525e-001 2.5523570e-002 +v -1.1447430e-002 1.7131059e-001 -1.9602980e-002 +v -3.6647240e-002 1.6640131e-001 -2.8167000e-004 +v -4.6653530e-002 1.5917824e-001 7.8019000e-003 +v -4.5569890e-002 1.4663612e-001 5.6514200e-003 +v 4.1438880e-002 9.2365100e-002 -7.4587000e-003 +v -6.4287420e-002 1.3463625e-001 3.9945640e-002 +v -6.1128890e-002 1.3178328e-001 3.8915910e-002 +v -4.7843540e-002 1.2215063e-001 2.8833160e-002 +v -4.9536830e-002 1.2491344e-001 3.1778440e-002 +v -7.1135380e-002 1.3817656e-001 4.7853960e-002 +v 1.0113870e-002 7.6468110e-002 5.5256790e-002 +v 1.7897450e-002 7.9516550e-002 5.2759530e-002 +v 2.1740850e-002 8.0250650e-002 5.0425390e-002 +v 2.5271590e-002 7.8724920e-002 4.8026570e-002 +v 3.0885040e-002 7.8999480e-002 4.3388770e-002 +v -6.2441930e-002 1.4084781e-001 3.6965840e-002 +v -6.2165060e-002 1.5666850e-001 -1.7837760e-002 +v 2.0657260e-002 1.0416830e-001 4.3004680e-002 +v -6.3602800e-002 1.1571453e-001 4.2572290e-002 +v 1.4424020e-002 8.0085500e-002 5.3755600e-002 +v 2.8779340e-002 8.2553250e-002 4.4527350e-002 +v 4.4450130e-002 8.1846900e-002 2.4552920e-002 +v 4.5541990e-002 8.3338380e-002 1.9700850e-002 +v -4.9665810e-002 1.2063801e-001 3.2163270e-002 +v -2.9177290e-002 1.7619959e-001 -5.6241100e-003 +v -5.8203130e-002 1.3270975e-001 3.6918680e-002 +v 3.8997050e-002 9.7088220e-002 -7.7799300e-003 +v -5.4725800e-002 1.2071262e-001 3.7451450e-002 +v 1.3189120e-002 8.4211180e-002 5.3065830e-002 +v -1.9926300e-002 1.6489742e-001 -9.9900200e-003 +v 2.0153130e-002 1.1849719e-001 3.4271250e-002 +v -5.5859940e-002 1.1774313e-001 3.7253480e-002 +v 1.8045260e-002 8.3623160e-002 5.1285840e-002 +v -6.3757130e-002 1.5912175e-001 -5.0155730e-002 +v -1.8527620e-002 1.7653197e-001 -1.7043540e-002 +v 2.8734400e-002 1.0360053e-001 3.8035240e-002 +v 4.1414010e-002 1.0284216e-001 1.6578920e-002 +v 2.4411730e-002 9.8016880e-002 4.4687400e-002 +v 2.0925180e-002 8.6311430e-002 4.9433120e-002 +v 3.0445010e-002 8.4959560e-002 4.3011090e-002 +v 3.3030090e-002 8.3781640e-002 4.1636930e-002 +v 3.6975090e-002 7.9876480e-002 3.7198390e-002 +v -7.7721460e-002 1.1355888e-001 4.8155990e-002 +v 2.9250000e-002 1.0651935e-001 3.6590330e-002 +v -5.3078180e-002 1.3754688e-001 2.8266470e-002 +v -6.2990590e-002 1.1999459e-001 4.5235530e-002 +v -6.5398320e-002 1.1751956e-001 4.8735570e-002 +v 3.3373910e-002 1.1227890e-001 2.7788130e-002 +v 3.8413590e-002 8.7489930e-002 3.5185850e-002 +v -6.1945930e-002 1.6479234e-001 -5.6647670e-002 +v -2.2876480e-002 1.7392813e-001 -1.3431140e-002 +v 4.3766230e-002 8.8390020e-002 -3.5708800e-003 +v 3.9291530e-002 1.0125969e-001 2.7550520e-002 +v 1.0936230e-002 8.6027290e-002 5.4732670e-002 +v 2.4108720e-002 8.4492600e-002 4.8292310e-002 +v 3.6758390e-002 9.9195470e-002 3.2837670e-002 +v -5.1941640e-002 1.2565987e-001 3.4587860e-002 +v -3.1582110e-002 1.6641850e-001 -5.7320000e-003 +v 7.6405900e-003 8.6427230e-002 5.6117850e-002 +v 1.6771020e-002 8.8644690e-002 5.0522960e-002 +v 3.4404610e-002 8.6932850e-002 4.0574270e-002 +v 3.6143820e-002 8.4439200e-002 3.7936930e-002 +v 4.1258830e-002 1.0361081e-001 2.6760600e-003 +v 2.4766140e-002 1.1081111e-001 3.6728360e-002 +v -2.2601590e-002 1.6250449e-001 -6.0717000e-003 +v -1.2893670e-002 1.7879041e-001 -2.2624750e-002 +v -2.4939150e-002 1.7031135e-001 -1.1329700e-002 +v -4.8468630e-002 1.4559606e-001 8.3661500e-003 +v 1.2534490e-002 8.9593930e-002 5.3394630e-002 +v 2.5872860e-002 8.8482290e-002 4.6655260e-002 +v 3.2756470e-002 8.8969130e-002 4.2215450e-002 +v -2.3343620e-002 1.6103450e-001 -3.1862400e-003 +v -9.2594970e-002 1.1943826e-001 2.6802950e-002 +v -7.4314840e-002 1.3761738e-001 -6.6698800e-003 +v -9.2499230e-002 1.2131500e-001 2.9256200e-002 +v -7.7378260e-002 1.5764266e-001 -1.4133650e-002 +v -9.2907340e-002 1.2307021e-001 3.6523230e-002 +v 2.8423340e-002 8.8011080e-002 4.4234200e-002 +v 3.5251680e-002 9.0836820e-002 3.9183920e-002 +v 1.5760560e-002 9.3203560e-002 4.9939310e-002 +v 3.8785530e-002 9.4954300e-002 3.2520220e-002 +v -6.1511220e-002 1.2373565e-001 4.3062680e-002 +v -6.8145120e-002 1.2748676e-001 5.0148970e-002 +v -2.0616710e-002 1.8237588e-001 -1.4299100e-002 +v 1.5137190e-002 1.1571495e-001 3.7031980e-002 +v -5.0718270e-002 1.5276300e-001 1.1816680e-002 +v 3.0168690e-002 1.0048686e-001 3.9404710e-002 +v -8.7426500e-002 9.5469530e-002 4.0312400e-003 +v -6.0010390e-002 1.4284463e-001 3.5449690e-002 +v -5.8603310e-002 1.4637237e-001 3.3808800e-002 +v 3.2411650e-002 9.3736150e-002 4.0890240e-002 +v -7.5917780e-002 1.4997690e-001 -1.6842050e-002 +v 1.8596570e-002 3.5293940e-002 -8.6782200e-003 +v 1.7209800e-002 3.5259400e-002 -1.4685160e-002 +v 4.4326540e-002 9.0818120e-002 2.2097520e-002 +v 3.8335910e-002 3.8830830e-002 3.0938100e-003 +v 2.2192920e-002 3.6775320e-002 -2.0919300e-003 +v 1.9636020e-002 3.8234010e-002 -1.2507670e-002 +v 2.3682120e-002 3.9762540e-002 3.7148760e-002 +v 4.6693280e-002 4.2465320e-002 6.5649500e-003 +v 2.1621110e-002 3.7657240e-002 -4.7021600e-003 +v 1.6638610e-002 3.8196090e-002 -1.9884930e-002 +v -9.0253980e-002 1.1366307e-001 3.7720210e-002 +v -9.0593870e-002 1.1373094e-001 1.0276770e-002 +v -6.2541690e-002 1.7679461e-001 -5.7821820e-002 +v -1.1091940e-002 1.7992082e-001 -2.5996430e-002 +v -6.2263130e-002 1.5219935e-001 -2.2578880e-002 +v -4.2276760e-002 9.4982570e-002 -2.2562420e-002 +v 4.3293410e-002 4.1864140e-002 2.0634400e-003 +v 4.3779590e-002 4.4530720e-002 -1.2622500e-003 +v 2.1696990e-002 4.0427270e-002 -9.4629500e-003 +v -1.1183700e-002 1.6450000e-001 -1.6151690e-002 +v -6.2372570e-002 1.5313041e-001 -2.8997120e-002 +v -9.2489300e-003 1.7725850e-001 -2.8270200e-002 +v 4.1477400e-002 8.5509410e-002 -9.1575000e-003 +v -8.1268710e-002 1.0879438e-001 2.9440660e-002 +v 4.9575680e-002 4.3815900e-002 1.4582960e-002 +v 5.2987960e-002 4.7747690e-002 5.0420000e-003 +v 2.1977540e-002 4.2855330e-002 -1.4536230e-002 +v 1.8505700e-002 3.8294100e-002 -1.7136500e-002 +v -3.5100500e-002 1.5203437e-001 -1.3279000e-004 +v 4.8749130e-002 4.5265000e-002 2.3023500e-003 +v 3.1912900e-002 9.9870060e-002 -1.4620980e-002 +v -1.4222520e-002 1.6167426e-001 -1.3349060e-002 +v -4.8663640e-002 1.3638523e-001 6.8063900e-003 +v -9.5837200e-003 1.7426102e-001 -2.8390760e-002 +v 5.2801850e-002 4.6539940e-002 1.0427720e-002 +v 5.1433800e-002 4.8485200e-002 1.0401000e-003 +v 2.3911240e-002 9.8021670e-002 -2.0807290e-002 +v 2.4567060e-002 4.4130110e-002 -1.0820840e-002 +v 2.0356810e-002 4.3662400e-002 -2.0456280e-002 +v -2.1882420e-002 1.1087418e-001 -1.9695320e-002 +v -5.3831800e-002 1.4981693e-001 2.5066610e-002 +v 5.4114210e-002 4.7773090e-002 1.7484000e-002 +v 5.6730570e-002 5.0515740e-002 1.0627080e-002 +v 4.5941820e-002 4.8138820e-002 -3.8715700e-003 +v -8.3817760e-002 1.1109094e-001 2.8524490e-002 +v 2.9207770e-002 4.7450250e-002 -8.5081800e-003 +v 2.8454920e-002 4.8067390e-002 -1.2847240e-002 +v 2.6637260e-002 4.7607100e-002 -1.6427740e-002 +v 2.2040110e-002 4.4992500e-002 -1.7528500e-002 +v 1.9120080e-002 4.7167750e-002 -2.2114680e-002 +v -1.5782200e-002 1.0072957e-001 -2.3724130e-002 +v -6.2514170e-002 1.7213119e-001 -5.2788100e-002 +v -6.2345600e-002 1.4745498e-001 -7.6600200e-003 +v 4.5598180e-002 8.8151720e-002 1.3124070e-002 +v -4.9422610e-002 1.4283525e-001 8.9728300e-003 +v -8.2761860e-002 1.1162341e-001 4.4221460e-002 +v -5.2166220e-002 1.5013661e-001 1.7448750e-002 +v -6.3616740e-002 1.4801371e-001 -2.0170260e-002 +v -5.1492690e-002 1.3796388e-001 2.3662180e-002 +v -6.1517580e-002 1.7517449e-001 -6.0631700e-002 +v 5.6524870e-002 5.0125660e-002 1.5564490e-002 +v 5.5257900e-002 5.1416260e-002 3.2062600e-003 +v 5.0318130e-002 5.2786370e-002 -3.4166300e-003 +v -6.2681950e-002 1.6744086e-001 -4.5713890e-002 +v 5.6520150e-002 5.1179900e-002 1.9940560e-002 +v 5.6907980e-002 5.1578130e-002 7.2538300e-003 +v 5.2854160e-002 5.1898670e-002 -6.2070000e-004 +v -3.8921140e-002 3.3767390e-002 -2.9042560e-002 +v 2.9740700e-002 5.0324690e-002 -1.3990860e-002 +v -6.8796190e-002 3.5117720e-002 -5.2067400e-003 +v 5.8826020e-002 5.5503780e-002 1.8647920e-002 +v -2.6160570e-002 1.2309988e-001 -4.4735500e-003 +v -5.3341960e-002 1.4401200e-001 2.4261390e-002 +v 5.8177390e-002 5.2821320e-002 1.5182420e-002 +v 5.9798140e-002 5.6840180e-002 1.3342730e-002 +v 5.4549870e-002 5.6044630e-002 -6.6158000e-004 +v 2.6775460e-002 5.1423450e-002 -2.0234060e-002 +v -8.6960400e-003 1.7291588e-001 -2.6708770e-002 +v -7.7039560e-002 7.1967020e-002 2.6405070e-002 +v -6.3069890e-002 1.5897471e-001 -4.2951850e-002 +v 3.5706690e-002 5.6083040e-002 -8.9993300e-003 +v 3.2600380e-002 5.3707520e-002 -1.1006150e-002 +v 2.9739960e-002 5.2538430e-002 -1.6224950e-002 +v 5.9238530e-002 5.6362780e-002 9.4530800e-003 +v 5.7421750e-002 5.6012210e-002 4.0245600e-003 +v 2.9062990e-002 5.5210580e-002 -1.8042060e-002 +v -1.7224410e-002 9.5214090e-002 -3.2085300e-002 +v -8.5911380e-002 1.0968787e-001 7.6582400e-003 +v 6.0594930e-002 6.1677210e-002 1.5591560e-002 +v 5.9531640e-002 6.0504600e-002 5.8397000e-003 +v 5.7306470e-002 5.9944620e-002 1.8886400e-003 +v 3.8829380e-002 5.9839830e-002 -6.4252500e-003 +v 3.0662770e-002 5.7300390e-002 -1.6518370e-002 +v -2.7762070e-002 1.2068537e-001 -9.0152900e-003 +v -8.8194590e-002 1.0314633e-001 1.7509020e-002 +v 6.0778800e-002 6.1646560e-002 1.0463990e-002 +v 3.5915080e-002 5.9916380e-002 -1.1966510e-002 +v 2.4251860e-002 5.6457470e-002 -2.4254800e-002 +v -6.1954390e-002 1.6865320e-001 -5.2621160e-002 +v -9.0557930e-002 1.1275994e-001 1.6141030e-002 +v -8.8469220e-002 1.1124294e-001 1.2679160e-002 +v 5.9558010e-002 6.3099260e-002 5.9471000e-003 +v 3.0940440e-002 6.0518080e-002 -1.8132720e-002 +v -9.3575750e-002 1.2474629e-001 2.6213300e-002 +v -9.3189820e-002 1.2019919e-001 3.7913720e-002 +v -9.2296100e-003 1.7314463e-001 -2.4197660e-002 +v -8.1739460e-002 7.6861340e-002 2.3313610e-002 +v -3.6992750e-002 1.5063932e-001 -2.0372300e-003 +v 6.0093570e-002 6.5693450e-002 1.8533320e-002 +v 5.9837240e-002 6.6423180e-002 8.5139400e-003 +v 4.0706180e-002 6.4475310e-002 -5.5920300e-003 +v 3.4745940e-002 6.3261340e-002 -1.4646740e-002 +v -6.1879660e-002 1.6000450e-001 -2.5806250e-002 +v -7.6537810e-002 1.5344875e-001 -1.2898750e-002 +v 3.8111070e-002 6.4811810e-002 -1.1142000e-002 +v 3.1909340e-002 6.4657050e-002 -1.8473410e-002 +v -8.3159350e-002 1.4674277e-001 3.0757900e-003 +v -8.7055900e-002 1.0562761e-001 9.7651100e-003 +v -7.1448330e-002 1.8105301e-001 -5.5478550e-002 +v -8.5632110e-002 1.2461094e-001 -2.7335800e-003 +v 6.0728970e-002 6.5806600e-002 1.3974830e-002 +v 3.9909650e-002 6.8171740e-002 -9.5698200e-003 +v 3.4981790e-002 6.7740790e-002 -1.5683210e-002 +v -9.1822030e-002 1.2747346e-001 3.6458650e-002 +v -6.2425420e-002 1.6366637e-001 -4.9667290e-002 +v -7.1168950e-002 1.4740156e-001 -2.7590940e-002 +v -5.0364760e-002 1.3715763e-001 1.9526100e-003 +v -5.0492650e-002 1.4159899e-001 1.6291740e-002 +v 5.9886670e-002 6.8513050e-002 1.6171610e-002 +v -6.1406990e-002 1.7268822e-001 -5.8265750e-002 +v 2.4990740e-002 6.5897320e-002 -2.3568270e-002 +v -7.4852750e-002 1.4993112e-001 -2.7752940e-002 +v -6.2225690e-002 6.0265200e-002 2.0449290e-002 +v -6.2001940e-002 3.6435020e-002 4.3918940e-002 +v 5.8374570e-002 7.1186410e-002 1.3072740e-002 +v -3.6125040e-002 1.2286688e-001 -8.2927900e-003 +v 2.9216510e-002 6.7850250e-002 -2.0418570e-002 +v -4.1681700e-002 1.2575112e-001 -7.0193300e-003 +v -7.4226550e-002 1.6437012e-001 -3.8240340e-002 +v -9.7845700e-003 1.6928488e-001 -2.4756660e-002 +v -8.9577950e-002 1.2078310e-001 3.5229100e-003 +v -6.2311930e-002 1.6371109e-001 -4.0623990e-002 +v 4.3514770e-002 9.1519890e-002 -2.6468100e-003 +v -4.8434350e-002 1.3754973e-001 1.3244980e-002 +v -8.9313160e-002 1.3653006e-001 3.0458750e-002 +v -7.4230190e-002 1.5652681e-001 -2.5167090e-002 +v 3.7378600e-002 7.3093410e-002 -1.2635370e-002 +v 2.6321810e-002 7.0240650e-002 -2.3878680e-002 +v -4.8023620e-002 1.4426649e-001 4.2498600e-003 +v -9.2019580e-002 1.1611534e-001 3.5842730e-002 +v -7.1305510e-002 7.3899020e-002 3.5969780e-002 +v -6.2059290e-002 1.5697807e-001 -3.3784580e-002 +v -9.7015300e-003 1.6738863e-001 -1.9360250e-002 +v 4.3342140e-002 7.1676120e-002 -2.2304600e-003 +v 4.1772460e-002 6.9568020e-002 -6.1596000e-003 +v 3.3505410e-002 7.2809860e-002 -1.7034800e-002 +v 2.9665000e-002 7.1506830e-002 -2.1282340e-002 +v -2.9460160e-002 1.5550263e-001 -1.1914700e-003 +v -8.6396440e-002 1.0479356e-001 5.9820600e-003 +v -5.4910700e-002 1.4662313e-001 2.8438970e-002 +v 4.4203810e-002 8.5204260e-002 -2.1170500e-003 +v 4.3264350e-002 7.5810540e-002 -3.8843900e-003 +v 1.3096990e-002 9.1126480e-002 -2.9269770e-002 +v -6.7069210e-002 9.1144610e-002 -1.7425950e-002 +v -9.0821680e-002 1.2276896e-001 6.0998500e-003 +v 4.5620000e-002 7.4684430e-002 2.6073900e-003 +v -9.3039800e-002 1.2026416e-001 1.1216820e-002 +v 4.4635590e-002 9.2794290e-002 1.7832070e-002 +v -1.1243390e-002 1.6457514e-001 -1.8240780e-002 +v 4.5511190e-002 8.6953050e-002 3.8865500e-003 +v 4.6252720e-002 7.7373870e-002 6.9140800e-003 +v 4.0281640e-002 7.2637130e-002 -9.2881000e-003 +v 4.3218200e-002 9.9486740e-002 5.0153300e-003 +v -5.1108270e-002 1.4520219e-001 1.4279480e-002 +v 4.4692980e-002 9.2688550e-002 2.2466700e-003 +v 4.3422540e-002 9.1860370e-002 2.4538450e-002 +v 4.0751360e-002 1.0554729e-001 7.5074100e-003 +v -8.5613030e-002 9.6277110e-002 -6.6514000e-004 +v 4.0721470e-002 7.8475530e-002 -8.2130000e-003 +v 3.5538080e-002 7.6062960e-002 -1.4434750e-002 +v -9.2736510e-002 1.2073095e-001 3.2692730e-002 +v -6.2278520e-002 1.5166598e-001 -1.4672730e-002 +v 4.4960220e-002 8.0942630e-002 6.1119000e-004 +v 3.7814740e-002 7.9698150e-002 -1.3289630e-002 +v 3.3864490e-002 7.8656690e-002 -1.7632490e-002 +v -9.1044280e-002 1.4199862e-001 2.1729630e-002 +v -7.4004450e-002 1.7818523e-001 -5.3916320e-002 +v -6.1768650e-002 1.6067957e-001 -3.4046350e-002 +v -4.9747450e-002 1.4112519e-001 5.2937500e-003 +v 4.1065440e-002 9.0460700e-002 2.9888620e-002 +v -7.2916360e-002 6.5057400e-002 1.8794620e-002 +v -9.0949690e-002 1.3895375e-001 1.7371130e-002 +v 4.2879050e-002 1.0093777e-001 9.4753200e-003 +v -7.2455480e-002 1.7610676e-001 -5.3535420e-002 +v -7.5862940e-002 1.5071299e-001 -9.0209000e-003 +v -8.5269820e-002 1.0267793e-001 1.3935600e-003 +v -7.7025570e-002 1.1396763e-001 -4.6168100e-003 +v 4.6280880e-002 7.8702020e-002 1.4786330e-002 +v 4.2106910e-002 8.1533160e-002 -6.6690900e-003 +v 3.6523880e-002 8.1991750e-002 -1.6229590e-002 +v -3.7420220e-002 4.5428500e-002 -2.4226790e-002 +v -8.5148910e-002 1.3965520e-001 2.4808500e-003 +v -6.3313300e-002 1.6503258e-001 -3.2895120e-002 +v -6.1591410e-002 1.5681572e-001 -2.5945630e-002 +v 4.5918540e-002 8.7036220e-002 8.4236300e-003 +v 4.4631140e-002 8.4178380e-002 8.2665000e-004 +v -4.4842870e-002 1.4629393e-001 1.7114800e-003 +v -6.4124180e-002 1.7953625e-001 -5.8730420e-002 +v -6.7070300e-002 1.8072682e-001 -5.6618620e-002 +v -6.4793760e-002 1.7885275e-001 -5.5883250e-002 +v -6.4371030e-002 1.7296209e-001 -4.9225660e-002 +v -7.0381530e-002 1.8071180e-001 -5.3172590e-002 +v -7.5269270e-002 1.5232949e-001 3.4374060e-002 +v -1.6273090e-002 1.2844514e-001 1.6683610e-002 +v -6.2116150e-002 1.5600787e-001 1.8034420e-002 +v -5.6010790e-002 1.5381662e-001 2.5369280e-002 +v -3.7277920e-002 1.7289068e-001 -8.6627000e-004 +v -7.4158700e-002 1.7987275e-001 -5.0794750e-002 +v -7.9039960e-002 1.5537445e-001 1.5141810e-002 +v -7.2505530e-002 1.5459529e-001 2.9588830e-002 +v -6.7738180e-002 1.7728865e-001 -5.0375960e-002 +v -7.5346900e-003 1.0021302e-001 4.7488700e-002 +v -5.9575620e-002 1.5472401e-001 2.6373250e-002 +v -7.7382710e-002 1.5346600e-001 3.0894990e-002 +v -8.1496670e-002 1.5473104e-001 1.9697340e-002 +v -7.2223320e-002 1.5896734e-001 -5.4242300e-003 +v -1.3708500e-002 1.8491150e-001 -2.5549550e-002 +v -4.3465340e-002 1.2451145e-001 2.2518890e-002 +v -6.9103650e-002 1.5559479e-001 1.6370800e-003 +v -7.3748080e-002 1.5539253e-001 2.3491700e-003 +v -6.8192410e-002 1.7439828e-001 -4.5365870e-002 +v -6.0052850e-002 1.5280350e-001 3.2887630e-002 +v -2.3459490e-002 1.2615386e-001 1.6613770e-002 +v -7.2777220e-002 1.7854465e-001 -4.8208800e-002 +v -7.6595580e-002 1.7753227e-001 -4.7118080e-002 +v 1.3906410e-002 1.2790838e-001 2.5110240e-002 +v -8.6367510e-002 1.0906537e-001 1.1980640e-002 +v -3.1358850e-002 1.2140977e-001 2.5971090e-002 +v -4.9104590e-002 1.3666879e-001 1.9314030e-002 +v -4.2930640e-002 1.2928436e-001 9.2700700e-003 +v -6.5320350e-002 1.5390322e-001 9.1386000e-004 +v -3.7606490e-002 1.2422605e-001 2.4313530e-002 +v 9.5078400e-003 1.3041865e-001 2.0715020e-002 +v -1.7976800e-003 1.3117283e-001 1.6360660e-002 +v 3.6231700e-003 1.3076791e-001 2.1168600e-002 +v -9.2674700e-002 1.1701945e-001 1.1889520e-002 +v -6.5739720e-002 1.5565338e-001 2.6017600e-002 +v -8.6561940e-002 1.4249188e-001 8.4326800e-003 +v -7.0731530e-002 1.5569959e-001 6.9058200e-003 +v -8.0840700e-003 1.3030537e-001 1.6872280e-002 +v -4.4286250e-002 1.2606625e-001 2.0795220e-002 +v -7.0222260e-002 1.5143521e-001 3.6718910e-002 +v -1.5210690e-002 1.8463639e-001 -2.2057240e-002 +v -1.7270750e-002 1.8699602e-001 -1.9977570e-002 +v -8.3560950e-002 1.5255943e-001 7.6806700e-003 +v -8.8130280e-002 9.7540510e-002 5.6788000e-003 +v -8.8399240e-002 1.3899000e-001 1.0640660e-002 +v -6.7780550e-002 1.5614453e-001 1.4276320e-002 +v -6.5864600e-003 1.2641717e-001 3.0226390e-002 +v -8.8746180e-002 1.3625578e-001 7.1477800e-003 +v -7.7206730e-002 1.5639950e-001 -1.8972540e-002 +v -9.3176480e-002 1.1821016e-001 2.3362360e-002 +v -2.3506850e-002 1.2672006e-001 1.0996900e-002 +v -6.6546650e-002 1.7171115e-001 -4.2127770e-002 +v -6.9136000e-002 1.7247836e-001 -3.9013330e-002 +v 5.7180270e-002 7.1107690e-002 8.0307600e-003 +v -7.5390870e-002 1.7952824e-001 -5.2402050e-002 +v -3.1828840e-002 1.2639115e-001 1.0013410e-002 +v -8.9888800e-003 1.2952269e-001 2.2026810e-002 +v 3.4325880e-002 1.1193312e-001 -2.2406500e-003 +v -8.1414950e-002 9.7100250e-002 -6.8745800e-003 +v -2.3298830e-002 1.8324307e-001 -1.7923000e-002 +v -6.1641660e-002 1.5582039e-001 1.1099820e-002 +v -8.8826450e-002 9.0483320e-002 2.1204700e-002 +v 5.8373130e-002 6.8067590e-002 5.7247600e-003 +v -4.3045630e-002 1.2785122e-001 1.6842260e-002 +v 3.0835720e-002 1.1554234e-001 -3.1785500e-003 +v -8.8631270e-002 9.4881200e-002 7.9337600e-003 +v -9.1715140e-002 1.1709957e-001 3.0809400e-002 +v -7.2083780e-002 1.7499844e-001 -4.1930320e-002 +v -6.9540630e-002 1.5308527e-001 3.3865720e-002 +v 6.0078690e-002 6.8129260e-002 1.1454500e-002 +v -4.0081060e-002 1.2628381e-001 1.9607250e-002 +v 3.2819930e-002 1.1655625e-001 4.4458600e-003 +v -7.2823220e-002 1.4510601e-001 -1.5654680e-002 +v -8.5270210e-002 1.0551770e-001 2.3290940e-002 +v -7.6051320e-002 1.1103825e-001 -6.2722100e-003 +v -8.6537730e-002 1.5154801e-001 2.5875370e-002 +v 5.5888480e-002 7.2579250e-002 1.0669650e-002 +v -5.4642360e-002 1.5522963e-001 1.2612400e-002 +v 3.6729960e-002 1.1116756e-001 3.8670600e-003 +v 3.1501870e-002 1.1725172e-001 1.6855100e-003 +v -7.8751550e-002 9.5240290e-002 -1.0600670e-002 +v -8.9408160e-002 1.4352815e-001 3.0924750e-002 +v -2.0891130e-002 1.8595338e-001 -1.5037360e-002 +v -7.0863560e-002 1.6136525e-001 -9.7324600e-003 +v -7.0919760e-002 1.7136688e-001 -3.2763750e-002 +v -3.0771290e-002 1.2564075e-001 1.6594770e-002 +v -5.4454180e-002 1.5297699e-001 2.2505190e-002 +v -1.5539500e-003 1.2754717e-001 2.9232870e-002 +v 2.9130550e-002 1.2027445e-001 6.1117500e-003 +v 2.5725940e-002 1.2122705e-001 -3.6150000e-005 +v -8.9318970e-002 9.9546980e-002 1.3418110e-002 +v -7.5429500e-002 1.7095605e-001 -3.2879890e-002 +v -2.8596020e-002 1.1901156e-001 2.9888170e-002 +v 2.1069780e-002 1.2497756e-001 1.0998100e-003 +v -9.2240760e-002 1.1816838e-001 4.1201730e-002 +v 2.4094600e-003 1.0016785e-001 4.6938070e-002 +v -5.6627620e-002 1.5270606e-001 2.9629030e-002 +v -5.7264800e-002 1.5506250e-001 1.9322430e-002 +v -3.6452070e-002 1.2199869e-001 2.7670650e-002 +v -7.4108160e-002 1.7355729e-001 -3.7986840e-002 +v 5.1537130e-002 7.3496690e-002 1.2698700e-002 +v -6.6096040e-002 1.5532529e-001 7.1561800e-003 +v 3.6102000e-002 1.1266103e-001 1.0491780e-002 +v 1.6715210e-002 1.2689851e-001 2.2331000e-004 +v -8.0767920e-002 1.4301400e-001 -1.5312800e-003 +v -9.1757600e-002 1.4334588e-001 1.7790710e-002 +v -8.6824940e-002 1.5280775e-001 1.5521450e-002 +v -6.5808100e-002 1.6764344e-001 -3.0558670e-002 +v -7.8217340e-002 1.6873975e-001 -3.3564250e-002 +v -7.2567060e-002 1.4753230e-001 4.1714090e-002 +v 5.8439960e-002 7.0200810e-002 1.7779620e-002 +v 5.6847560e-002 7.2017160e-002 1.7139380e-002 +v 5.4919390e-002 7.3161610e-002 1.5223590e-002 +v 4.7446900e-002 7.3691410e-002 1.2430020e-002 +v 1.2319360e-002 1.2903768e-001 1.3336200e-003 +v -7.9790640e-002 1.0351662e-001 -6.6275400e-003 +v -7.6655210e-002 1.5509766e-001 7.9686300e-003 +v 2.1747320e-002 1.2118456e-001 3.0878810e-002 +v -7.5260490e-002 1.4938613e-001 3.9175980e-002 +v -2.5919610e-002 1.8272826e-001 -1.3541090e-002 +v -6.7983790e-002 1.6974781e-001 -3.1627490e-002 +v 1.6831110e-002 1.2487146e-001 2.8425580e-002 +v 5.4016490e-002 7.2883850e-002 1.8678010e-002 +v 5.0522750e-002 7.3397910e-002 1.6166890e-002 +v -5.9582440e-002 1.5623338e-001 7.9209900e-003 +v 2.5343500e-002 1.2374750e-001 9.9818800e-003 +v 1.9262750e-002 1.2689390e-001 5.5552100e-003 +v -9.0758520e-002 1.4223375e-001 2.6008130e-002 +v -4.6548490e-002 1.3320769e-001 1.6889630e-002 +v -2.4106950e-002 1.8380887e-001 -1.1544760e-002 +v 8.6784400e-003 1.2894574e-001 2.6156880e-002 +v 2.4919200e-003 1.2983563e-001 2.4847110e-002 +v 5.7345150e-002 6.9482720e-002 2.1153510e-002 +v -8.5329840e-002 1.5339912e-001 2.0378290e-002 +v 3.2877320e-002 1.1691463e-001 9.2957500e-003 +v 2.4246630e-002 1.2377758e-001 4.8764500e-003 +v -4.7765650e-002 1.3301969e-001 2.2874020e-002 +v -6.3541830e-002 1.6332115e-001 -2.5912990e-002 +v -6.6605200e-002 1.6477375e-001 -2.0670760e-002 +v -6.8504220e-002 1.6732018e-001 -2.3959570e-002 +v -7.2759160e-002 1.6965906e-001 -2.7013420e-002 +v 4.8206850e-002 7.2698580e-002 1.6994630e-002 +v -2.7383180e-002 1.2324257e-001 2.1658860e-002 +v -4.5077500e-002 1.3124443e-001 1.1145770e-002 +v 2.9253150e-002 1.2057701e-001 1.2299330e-002 +v 1.3677610e-002 1.2967262e-001 6.9327400e-003 +v 8.4210900e-003 1.3090986e-001 6.2754400e-003 +v 9.6836000e-004 1.3064303e-001 2.5865900e-003 +v 3.0802000e-003 9.8307360e-002 5.0535640e-002 +v -5.2420170e-002 1.5310101e-001 1.2927370e-002 +v -7.0359720e-002 1.6906988e-001 -2.6144260e-002 +v 5.4359390e-002 7.1467260e-002 2.1381250e-002 +v 4.5161440e-002 7.1030380e-002 2.2530690e-002 +v 1.9320440e-002 1.2738348e-001 1.1296310e-002 +v -9.3281210e-002 1.2691094e-001 1.3505010e-002 +v -8.7405060e-002 1.0593990e-001 1.3645920e-002 +v -2.2851640e-002 9.0635040e-002 5.2280460e-002 +v -6.2099370e-002 1.5406697e-001 3.0837360e-002 +v -4.5851560e-002 1.2072981e-001 2.7665040e-002 +v 5.0781670e-002 7.2155170e-002 2.0680180e-002 +v -8.9607270e-002 1.3971105e-001 2.9308560e-002 +v -5.3323050e-002 1.5273520e-001 1.6213860e-002 +v -1.5227080e-002 1.2784878e-001 2.1545200e-002 +v 3.3663540e-002 1.1574212e-001 1.7181290e-002 +v 2.4000260e-002 1.2468761e-001 1.5517930e-002 +v -8.4166840e-002 9.7756820e-002 -3.2761900e-003 +v -3.6223590e-002 1.2777519e-001 9.8501500e-003 +v -3.9189580e-002 1.2828193e-001 5.0346300e-003 +v -3.3674050e-002 1.7774449e-001 -8.1799500e-003 +v -7.4488620e-002 1.5649443e-001 -2.5954600e-003 +v -4.6755620e-002 1.3284294e-001 8.1212800e-003 +v -8.4970410e-002 1.5322309e-001 1.2654460e-002 +v -1.0866210e-002 1.2691699e-001 2.7575440e-002 +v -3.1074000e-003 1.3072898e-001 5.6428500e-003 +v -8.8760540e-002 9.7037440e-002 2.1079040e-002 +v -6.4811320e-002 3.4530640e-002 1.5508440e-002 +v -6.4300260e-002 3.5086450e-002 2.4272050e-002 +v -6.6727020e-002 3.5895770e-002 3.3849430e-002 +v 1.9838510e-002 9.6518890e-002 -2.2785880e-002 +v -3.8670510e-002 1.6070199e-001 -1.2357760e-002 +v -7.6890090e-002 1.3041906e-001 -6.9570100e-003 +v -7.2539730e-002 3.5399270e-002 7.0298800e-003 +v -6.9209050e-002 3.5454810e-002 1.2042140e-002 +v -6.4160810e-002 3.5900770e-002 1.7687570e-002 +v -6.6804150e-002 3.7377740e-002 3.3296290e-002 +v -6.2928350e-002 3.9061660e-002 4.2707680e-002 +v -7.1752230e-002 3.6789350e-002 8.6966700e-003 +v -6.5171380e-002 3.7289500e-002 2.5953770e-002 +v -6.6392030e-002 3.7712350e-002 2.9621950e-002 +v -6.4558720e-002 3.9639900e-002 3.9411530e-002 +v -6.0145790e-002 4.1202050e-002 4.4293830e-002 +v -6.0318430e-002 3.8442990e-002 4.5245950e-002 +v -3.6756310e-002 8.8663360e-002 -2.3868800e-002 +v -3.9494750e-002 3.7551570e-002 4.2870900e-002 +v -7.2016030e-002 3.7572700e-002 3.9789400e-003 +v -7.1693630e-002 3.9461000e-002 6.0145000e-003 +v -7.1165950e-002 3.9366310e-002 8.1142100e-003 +v -6.9000300e-002 3.8467710e-002 1.0768900e-002 +v -6.7253420e-002 3.8142160e-002 1.3533960e-002 +v -6.1125670e-002 3.7790050e-002 1.9710900e-002 +v -3.9179680e-002 4.2406740e-002 4.1476070e-002 +v -3.5145960e-002 3.8585920e-002 4.7732690e-002 +v -2.8950940e-002 3.9285940e-002 5.3309090e-002 +v -1.8223900e-002 9.7494570e-002 4.6847940e-002 +v -6.6916260e-002 1.2278907e-001 -8.9077400e-003 +v -6.3754640e-002 3.8250120e-002 1.6593500e-002 +v -6.4415760e-002 4.1283840e-002 2.8243480e-002 +v -8.5856340e-002 9.7025390e-002 2.7414960e-002 +v -3.7501130e-002 4.0221900e-002 4.4296550e-002 +v -3.4333970e-002 4.0923630e-002 4.8425810e-002 +v -3.1172890e-002 4.0294330e-002 5.1312460e-002 +v -6.9997320e-002 4.2073080e-002 6.6897800e-003 +v -8.0379330e-002 9.7800660e-002 3.3645750e-002 +v -2.6273160e-002 7.7631160e-002 4.8356180e-002 +v -3.7501450e-002 4.2736690e-002 4.2988400e-002 +v -2.6177500e-002 4.2498930e-002 5.3315220e-002 +v -6.9637250e-002 4.1881270e-002 3.1825800e-003 +v -6.7156510e-002 4.1972860e-002 1.0240940e-002 +v -8.7405510e-002 1.0205209e-001 2.2020360e-002 +v -2.3944380e-002 7.8800140e-002 5.3534730e-002 +v -6.0902360e-002 4.3429500e-002 4.2678530e-002 +v -3.1217880e-002 4.3847510e-002 4.9780920e-002 +v -7.5729440e-002 1.0354026e-001 3.6070970e-002 +v -6.2425320e-002 4.1885720e-002 1.4646770e-002 +v -6.1051660e-002 4.4392230e-002 1.2421940e-002 +v 2.5855060e-002 8.9610660e-002 -2.2701840e-002 +v -7.7644960e-002 8.2214940e-002 3.5797660e-002 +v -6.0381270e-002 4.5921420e-002 4.0088740e-002 +v -2.4982010e-002 8.1777650e-002 5.3421060e-002 +v -3.4453850e-002 4.4563960e-002 4.5422990e-002 +v -2.9842910e-002 4.6782280e-002 4.7746920e-002 +v -1.5119580e-002 9.9930020e-002 4.4500270e-002 +v -6.7306470e-002 4.4176830e-002 7.5958300e-003 +v -5.7852990e-002 4.6444500e-002 1.1062610e-002 +v -5.1815260e-002 1.6392582e-001 1.7488800e-003 +v -5.5174130e-002 4.8383880e-002 3.8517780e-002 +v -7.8849150e-002 1.1867375e-001 5.0622870e-002 +v -2.7229070e-002 8.7991480e-002 4.7909730e-002 +v -7.5536880e-002 1.5977062e-001 -1.0438650e-002 +v -3.6151280e-002 4.6505140e-002 4.0740900e-002 +v -2.5439220e-002 9.0677870e-002 4.8852330e-002 +v -8.0050370e-002 1.1670406e-001 4.8762460e-002 +v -5.2513640e-002 4.7577880e-002 1.4858440e-002 +v -3.2043560e-002 5.0461830e-002 3.9341520e-002 +v -3.1487770e-002 4.6930210e-002 4.5253210e-002 +v -2.0321500e-002 9.3999570e-002 5.1588540e-002 +v -7.2145040e-002 9.1556450e-002 4.1494780e-002 +v -5.3644200e-002 4.9358170e-002 1.2201850e-002 +v -8.2403890e-002 1.2186563e-001 4.9365030e-002 +v -4.9754420e-002 4.9738300e-002 3.7037110e-002 +v -3.2332060e-002 4.8672840e-002 4.2523960e-002 +v -2.3122950e-002 9.4515900e-002 4.7358870e-002 +v -8.6347140e-002 9.1722090e-002 2.6811080e-002 +v -5.7713110e-002 4.8717820e-002 7.2765100e-003 +v -8.6970360e-002 8.8912090e-002 2.4879860e-002 +v -9.2237750e-002 1.2488519e-001 4.0786530e-002 +v -1.5862800e-002 9.7021620e-002 5.0139360e-002 +v -2.7720040e-002 5.0502090e-002 4.3340720e-002 +v -8.5918770e-002 1.4263412e-001 3.9849810e-002 +v -7.5097360e-002 9.0073560e-002 3.9581000e-002 +v -8.9430840e-002 1.4730552e-001 2.7694960e-002 +v -5.3288350e-002 5.1925760e-002 1.1730350e-002 +v -5.0168720e-002 5.3462260e-002 1.6255440e-002 +v -8.5986050e-002 1.4670902e-001 3.4827030e-002 +v -6.9937250e-002 8.6076860e-002 4.2175690e-002 +v -5.0399320e-002 5.1831330e-002 3.4037400e-002 +v -8.3298980e-002 1.4960772e-001 3.3740890e-002 +v -2.9174820e-002 5.2264530e-002 3.7637320e-002 +v -8.8763730e-002 1.1944938e-001 4.6560090e-002 +v -7.7693460e-002 1.7367969e-001 -4.1478670e-002 +v -8.3418140e-002 9.4127440e-002 3.0898450e-002 +v -5.6067510e-002 5.3470630e-002 7.3718200e-003 +v -7.8935630e-002 1.4817228e-001 3.9463070e-002 +v -6.7902770e-002 8.7817230e-002 4.3526990e-002 +v -4.4111240e-002 9.2883990e-002 -2.2373210e-002 +v -8.6605100e-002 1.3226807e-001 4.6783020e-002 +v -9.2654280e-002 1.2084025e-001 4.1629650e-002 +v -5.0887310e-002 5.2727900e-002 1.4455790e-002 +v -4.9763410e-002 5.6241200e-002 3.3624250e-002 +v -8.9771330e-002 1.2904861e-001 4.3022990e-002 +v -2.8054240e-002 5.4551030e-002 3.6786850e-002 +v -2.5867080e-002 5.6689210e-002 3.9182240e-002 +v -8.3702200e-002 1.2226381e-001 -3.7301400e-003 +v -8.1455470e-002 1.3012213e-001 5.2117660e-002 +v -5.1458550e-002 5.5878150e-002 1.5900350e-002 +v -7.8597700e-002 1.7441574e-001 -4.6607580e-002 +v -5.2909820e-002 5.7043070e-002 2.0988410e-002 +v -5.2978500e-002 5.9553770e-002 2.6211920e-002 +v -5.2130640e-002 5.6302970e-002 2.6672460e-002 +v -4.7714500e-002 6.1944520e-002 3.6705820e-002 +v -8.3539790e-002 8.1169560e-002 2.7014070e-002 +v -1.8340000e-002 5.7489970e-002 4.9763020e-002 +v -8.0069810e-002 9.0586130e-002 3.4593070e-002 +v -8.3812250e-002 8.6337700e-002 2.9223270e-002 +v -5.5436650e-002 5.9420250e-002 2.3018970e-002 +v -8.2227680e-002 1.4513771e-001 4.0600080e-002 +v -2.4187580e-002 7.2269150e-002 4.7681090e-002 +v -2.5353150e-002 6.2567200e-002 4.0642170e-002 +v -9.1132110e-002 1.2282100e-001 4.4115160e-002 +v -4.6076290e-002 1.6819719e-001 7.3744000e-004 +v -8.7829280e-002 1.4351461e-001 3.5707670e-002 +v -8.6990640e-002 1.3812326e-001 4.2316550e-002 +v -1.5715900e-002 6.0822970e-002 5.2365440e-002 +v -8.3803580e-002 1.2561100e-001 5.0440490e-002 +v -6.2786680e-002 1.1274190e-001 -1.3605440e-002 +v -8.1033840e-002 8.4698180e-002 3.3106400e-002 +v -8.8563540e-002 1.1624535e-001 4.5392840e-002 +v -2.0268380e-002 6.2266810e-002 4.8212120e-002 +v -1.2619630e-002 6.1635030e-002 5.4424080e-002 +v -7.0491190e-002 8.1818160e-002 4.0609890e-002 +v -8.3882520e-002 1.3331465e-001 4.9113540e-002 +v -5.6560350e-002 4.8355540e-002 3.6607050e-002 +v 9.9444900e-003 1.0919723e-001 -1.9472810e-002 +v -5.5928250e-002 3.5917310e-002 4.6376100e-002 +v -7.6003260e-002 1.6361344e-001 -1.8021110e-002 +v -8.3798850e-002 1.0290691e-001 2.8038330e-002 +v -8.8252110e-002 1.2692730e-001 4.6141300e-002 +v -7.9126720e-002 1.0619883e-001 3.2050700e-002 +v -8.8206230e-002 9.4485700e-002 2.3744010e-002 +v -8.9110330e-002 1.3851394e-001 3.7658780e-002 +v -1.9321360e-002 9.2123890e-002 5.3820650e-002 +v -5.8265630e-002 9.0926390e-002 -2.0948690e-002 +v -2.7046310e-002 6.7014450e-002 3.9672140e-002 +v -2.1416300e-002 1.7977662e-001 -2.1732520e-002 +v -7.8240000e-003 1.0924112e-001 -2.2185670e-002 +v -2.3988340e-002 8.5995590e-002 5.3716430e-002 +v -6.0483580e-002 1.5567975e-001 4.3343800e-003 +v -8.6389150e-002 1.2168475e-001 4.8412440e-002 +v -7.4084360e-002 1.4987744e-001 -3.2610050e-002 +v -2.0580600e-002 7.9572500e-002 5.6013880e-002 +v -8.3837500e-002 1.3927865e-001 4.4893850e-002 +v -2.2933960e-002 3.5632910e-002 5.2865490e-002 +v -8.6153620e-002 1.2735612e-001 4.8563960e-002 +v -6.5728590e-002 1.0709818e-001 -1.4317670e-002 +v -2.1481090e-002 7.4194460e-002 5.2857680e-002 +v -7.6423900e-002 1.5736285e-001 -9.0354600e-003 +v -7.7216010e-002 8.5594880e-002 3.7420770e-002 +v -8.4150830e-002 1.2955013e-001 5.0483700e-002 +v -8.1221440e-002 8.1003250e-002 3.1255840e-002 +v -8.1704000e-002 1.0167226e-001 3.0939660e-002 +v -8.6252730e-002 1.0106846e-001 2.5413770e-002 +v -8.0944970e-002 1.3903572e-001 4.7359080e-002 +v -7.8908350e-002 9.4830900e-002 3.5435500e-002 +v -7.3440160e-002 9.5412600e-002 4.0210650e-002 +v -5.2675780e-002 8.8220740e-002 -2.1886300e-002 +v -7.6440670e-002 7.7511060e-002 3.3748300e-002 +v -2.1791140e-002 1.0658035e-001 -2.2327000e-002 +v -8.8360940e-002 1.4996706e-001 2.6044170e-002 +v -2.4078870e-002 6.7906700e-002 4.5178370e-002 +v -2.0018090e-002 6.7569300e-002 5.1565340e-002 +v -8.3577750e-002 1.2052625e-001 4.9177500e-002 +v -1.4655950e-002 1.7456543e-001 -2.5972690e-002 +v -2.7395940e-002 8.4108300e-002 4.8745680e-002 +v -4.1933580e-002 8.8463400e-002 -2.2126350e-002 +v -3.1693900e-002 1.0261265e-001 -2.2352310e-002 +v -2.7890200e-002 1.0440703e-001 -2.2830920e-002 +v -7.3790400e-002 1.2016662e-001 -7.8851200e-003 +v -4.6124160e-002 1.0506369e-001 -2.0457580e-002 +v -2.7412650e-002 7.3269450e-002 4.2641380e-002 +v -4.5532880e-002 3.4736480e-002 -2.1363200e-002 +v -4.4993030e-002 3.9017010e-002 -2.1097830e-002 +v -4.6462610e-002 3.6800270e-002 -1.7778710e-002 +v -8.8366460e-002 1.1361863e-001 5.8227800e-003 +v 5.1746240e-002 7.2897250e-002 9.0647400e-003 +v -7.0385250e-002 3.7450300e-002 -9.3190000e-004 +v -6.0923170e-002 3.8621820e-002 2.2468850e-002 +v -7.7696720e-002 1.7027889e-001 -4.3117910e-002 +v -4.3793210e-002 1.6955506e-001 -7.3026400e-003 +v -7.7587180e-002 1.7717875e-001 -5.0221090e-002 +v -4.0541880e-002 3.8886010e-002 -2.7364950e-002 +v -4.4215850e-002 3.6131460e-002 -2.4252210e-002 +v -6.6634880e-002 4.0430310e-002 -5.0180700e-003 +v -6.9242120e-002 4.1474050e-002 1.9289000e-004 +v -7.5640690e-002 1.5930400e-001 -2.6908460e-002 +v -6.3087030e-002 3.9614170e-002 2.5181560e-002 +v -7.2303020e-002 1.5186699e-001 -4.1544310e-002 +v -4.1051490e-002 4.1528620e-002 -2.4061000e-002 +v -4.6990580e-002 3.8892380e-002 -1.4016920e-002 +v -8.9559690e-002 1.2851666e-001 4.5457500e-003 +v -7.6987340e-002 1.5369375e-001 -2.2970800e-003 +v -7.0121670e-002 1.6882633e-001 -5.1173650e-002 +v -6.4792610e-002 4.1724530e-002 3.1616900e-002 +v -4.2148060e-002 1.2409627e-001 -9.5602500e-003 +v -4.8069700e-002 1.2493027e-001 -8.4076400e-003 +v -4.2150480e-002 4.3343970e-002 -2.1508710e-002 +v -6.7315160e-002 4.4034000e-002 1.5741800e-003 +v -7.3386640e-002 1.5463418e-001 -2.9943830e-002 +v -5.5352770e-002 4.2936210e-002 1.9135490e-002 +v -6.0067770e-002 4.1419500e-002 2.2953280e-002 +v -6.5488460e-002 4.0937780e-002 3.5315470e-002 +v -8.0066400e-002 1.5039650e-001 6.0518000e-004 +v -4.4031300e-002 4.1949070e-002 -1.7993960e-002 +v -4.5186510e-002 4.2453420e-002 -1.4193620e-002 +v -8.3109430e-002 1.0265445e-001 -3.2933400e-003 +v -6.5472800e-002 4.5627570e-002 4.5575400e-003 +v -7.5427730e-002 1.5201213e-001 -1.4393690e-002 +v -5.4473420e-002 4.5937510e-002 2.3612600e-002 +v -6.2464100e-002 4.3722000e-002 2.8493310e-002 +v -6.2832600e-002 4.5182750e-002 3.4622890e-002 +v -6.3538130e-002 4.3524020e-002 3.7974010e-002 +v -6.0255260e-002 4.4749620e-002 -4.1316200e-003 +v -6.3242050e-002 4.5549700e-002 4.8428000e-004 +v -6.2249430e-002 4.6540050e-002 7.1903500e-003 +v -9.1003650e-002 1.4885725e-001 2.1507030e-002 +v -5.7094130e-002 4.5996540e-002 2.6865280e-002 +v -5.7276490e-002 4.7299580e-002 2.9889950e-002 +v -3.9519900e-002 1.7385855e-001 -7.5752600e-003 +v -8.9641110e-002 1.3841920e-001 3.4141800e-002 +v -9.2601430e-002 1.3018652e-001 2.5183580e-002 +v -9.2280860e-002 1.2762053e-001 2.9751670e-002 +v -3.3957310e-002 4.1025060e-002 -2.9660250e-002 +v -9.0199540e-002 1.1657506e-001 5.6754900e-003 +v -5.8515890e-002 4.7731310e-002 2.1246000e-004 +v -7.1723560e-002 1.4617438e-001 -2.1567820e-002 +v -5.2389820e-002 4.5449130e-002 1.7686300e-002 +v -5.9414350e-002 4.7277990e-002 3.4172420e-002 +v -5.7520620e-002 1.5877600e-001 4.1621200e-003 +v -8.0959140e-002 1.0926674e-001 -2.0189900e-003 +v -5.1904000e-002 4.6100060e-002 1.9421290e-002 +v -5.1830050e-002 4.8568730e-002 2.1647030e-002 +v -7.7650400e-002 1.5658012e-001 -1.6599150e-002 +v -3.7416450e-002 4.7682130e-002 -1.7147280e-002 +v -7.8876110e-002 1.5347012e-001 3.9875800e-003 +v -5.7635420e-002 5.0425540e-002 4.6108400e-003 +v -5.2625440e-002 5.0434620e-002 2.9046740e-002 +v -5.2998720e-002 4.9169020e-002 3.3967600e-002 +v -7.3502600e-002 1.6871934e-001 -4.4791800e-002 +v -5.4420720e-002 4.7836520e-002 -5.9186900e-003 +v -5.2312740e-002 5.1085350e-002 2.4485690e-002 +v -7.9129930e-002 1.6736568e-001 -3.5506230e-002 +v 9.4115700e-003 1.2350285e-001 -9.8291000e-003 +v -3.2715700e-002 1.0896631e-001 -1.8941410e-002 +v -3.1133380e-002 4.9607260e-002 -1.9406940e-002 +v 4.5997330e-002 6.9814450e-002 3.0143300e-003 +v 3.3525460e-002 1.0966209e-001 -6.9894800e-003 +v -5.5047160e-002 5.2767560e-002 -3.9461300e-003 +v -5.6897890e-002 4.9655570e-002 -1.5319000e-003 +v -5.0290500e-002 4.9098930e-002 1.7164780e-002 +v -5.0595170e-002 4.9923270e-002 1.9174130e-002 +v -5.1887420e-002 5.3324670e-002 2.8705560e-002 +v -6.7684480e-002 1.6533627e-001 -5.5466400e-002 +v -3.0271440e-002 5.2106080e-002 -1.7676140e-002 +v -9.1087300e-003 1.1141669e-001 -2.0543230e-002 +v -5.7069360e-002 5.4424380e-002 2.3395500e-003 +v -3.2748380e-002 1.7759875e-001 -1.1627470e-002 +v -2.9009580e-002 5.1265290e-002 -2.2175780e-002 +v -3.1383130e-002 5.1791310e-002 -1.3886800e-002 +v -5.5673960e-002 5.6983850e-002 -3.3510400e-003 +v -5.0916050e-002 5.3813610e-002 1.9753140e-002 +v -8.8875380e-002 1.5169443e-001 2.0086580e-002 +v -7.7153050e-002 1.7378676e-001 -4.7867620e-002 +v -7.8577770e-002 1.6420639e-001 -3.1825860e-002 +v -2.7545910e-002 5.4021570e-002 -2.5147390e-002 +v -5.4463660e-002 5.5357450e-002 1.0326840e-002 +v -8.7041410e-002 1.3058932e-001 9.1161000e-004 +v -9.0009340e-002 1.3278082e-001 5.9220600e-003 +v -9.2232620e-002 1.3195400e-001 1.5430650e-002 +v -4.8639980e-002 1.6472475e-001 -5.0591500e-003 +v -5.4066480e-002 5.9959350e-002 -7.5992200e-003 +v -5.7434090e-002 5.7683500e-002 8.7259700e-003 +v -8.6794730e-002 1.3850688e-001 4.5575900e-003 +v -9.2989530e-002 1.3092307e-001 1.9919290e-002 +v -9.1282030e-002 1.3311897e-001 2.4688630e-002 +v 2.1815020e-002 1.1770533e-001 -1.0015300e-002 +v -2.9647120e-002 5.8104260e-002 -2.1311320e-002 +v -3.1289530e-002 5.5208570e-002 -1.4387840e-002 +v -5.9002160e-002 5.9234620e-002 2.6140800e-003 +v -9.0241700e-002 1.3575994e-001 1.4149160e-002 +v -6.1569420e-002 1.7084875e-001 -6.1679170e-002 +v -6.6070180e-002 1.6557822e-001 -5.8644080e-002 +v -2.4539930e-002 1.8005865e-001 -1.8726950e-002 +v -1.6131750e-002 1.8298848e-001 -2.6037190e-002 +v -3.0809390e-002 5.6998040e-002 -1.7835020e-002 +v 1.0464280e-002 9.6180450e-002 -2.5898970e-002 +v -5.7491630e-002 5.9530160e-002 -1.0786100e-003 +v -8.9146460e-002 1.3650500e-001 2.5952780e-002 +v 4.3714500e-003 1.0391901e-001 -2.1515100e-002 +v -9.0377040e-002 1.3252490e-001 3.1082650e-002 +v -9.0795450e-002 1.3855232e-001 2.0562560e-002 +v -9.4237710e-002 1.2615419e-001 2.2201450e-002 +v -9.0336910e-002 1.3119830e-001 3.8138790e-002 +v -4.5082610e-002 1.2218447e-001 -1.1569430e-002 +v 1.1348010e-002 9.8243750e-002 -2.3024250e-002 +v -3.9227920e-002 9.9184630e-002 -2.1912720e-002 +v -6.5509530e-002 1.5857325e-001 -5.5600270e-002 +v -7.7409510e-002 1.6260515e-001 -2.0754580e-002 +v -4.8580010e-002 1.6689211e-001 -2.5256100e-003 +v -7.6922910e-002 1.5351394e-001 -9.0785600e-003 +v -6.7750580e-002 1.5734825e-001 -5.3982110e-002 +v 5.2906410e-002 6.5230450e-002 -5.1112000e-004 +v -2.9054820e-002 6.1084120e-002 -2.4918230e-002 +v -3.1066920e-002 6.5058860e-002 -2.2751080e-002 +v 2.4249720e-002 1.0266151e-001 -1.8313830e-002 +v -5.5473660e-002 1.6050213e-001 1.3763500e-003 +v -6.6642850e-002 1.6040875e-001 -5.6842680e-002 +v -7.8200320e-002 1.6073213e-001 -2.3999690e-002 +v -1.8320680e-002 1.1968625e-001 -1.1110660e-002 +v 2.1712970e-002 1.0956342e-001 -1.5081090e-002 +v -6.8382640e-002 1.5980248e-001 -5.4208800e-002 +v -2.5445620e-002 6.0208550e-002 -3.0864700e-002 +v -2.6540330e-002 6.5084000e-002 -3.1664870e-002 +v -2.8425710e-002 6.2199610e-002 -2.7938500e-002 +v -3.2605750e-002 6.1264600e-002 -1.5453010e-002 +v -7.0872290e-002 1.1611638e-001 -7.9563700e-003 +v -6.9780530e-002 1.5938570e-001 -4.9418240e-002 +v -3.0324870e-002 6.7694720e-002 -2.7654950e-002 +v -3.2977370e-002 6.6365180e-002 -1.8385530e-002 +v 1.3533490e-002 1.0255388e-001 -2.1579310e-002 +v 4.4408530e-002 6.9758860e-002 9.4765000e-004 +v -2.1999000e-003 1.1215881e-001 -1.9658660e-002 +v -7.2028500e-002 6.7046610e-002 -7.2256000e-004 +v -7.8699630e-002 1.7313910e-001 -4.2720470e-002 +v -8.3211970e-002 1.5072131e-001 4.2128500e-003 +v -8.7439060e-002 1.3374875e-001 2.3974700e-003 +v 2.6348020e-002 8.4562230e-002 -2.3151710e-002 +v -7.4901490e-002 7.0419350e-002 -2.2854300e-003 +v -5.4576350e-002 9.1562950e-002 -2.2098700e-002 +v -7.3242520e-002 1.5231332e-001 -3.5703520e-002 +v -7.4550960e-002 1.7218738e-001 -4.7551010e-002 +v -2.8680680e-002 6.8283500e-002 -3.0610160e-002 +v 1.7372900e-002 1.0246037e-001 -2.1487700e-002 +v -8.1257430e-002 7.3025200e-002 7.1020400e-003 +v -7.4982300e-002 1.5407794e-001 -1.8974470e-002 +v -9.1556500e-002 1.3196262e-001 1.0638150e-002 +v -8.2448000e-004 9.5165120e-002 -3.2056320e-002 +v -7.7618830e-002 7.3999130e-002 -5.3263500e-003 +v -7.9858790e-002 7.2755040e-002 3.0420200e-003 +v -8.1627470e-002 7.3470610e-002 1.1161690e-002 +v -7.3679290e-002 1.4785987e-001 -2.0236290e-002 +v -9.1309820e-002 1.4848588e-001 1.6270070e-002 +v -9.0850140e-002 1.4625613e-001 1.4809050e-002 +v -6.8543890e-002 1.7513008e-001 -5.7187900e-002 +v -2.7253960e-002 1.0747453e-001 -2.1279680e-002 +v 2.1443580e-002 1.2273826e-001 -2.9316700e-003 +v -7.9061200e-002 7.3724300e-002 -8.4521000e-004 +v -8.2063500e-002 7.5993670e-002 1.7615500e-003 +v -8.3736580e-002 7.6771840e-002 8.9586000e-003 +v -9.0205720e-002 1.4947775e-001 1.3035090e-002 +v 8.4818000e-004 1.1670025e-001 -1.7337090e-002 +v -7.4577550e-002 1.5164041e-001 -2.8647990e-002 +v -2.9087460e-002 7.2924630e-002 -3.3354470e-002 +v -3.1184020e-002 7.3989530e-002 -3.0339870e-002 +v -3.2606620e-002 7.1955620e-002 -2.4866580e-002 +v -8.0575990e-002 7.6607800e-002 -2.9879400e-003 +v -8.9491020e-002 1.4392581e-001 1.2488490e-002 +v -7.7388410e-002 1.4656426e-001 -4.3543000e-003 +v -7.2896160e-002 1.5834962e-001 -3.4109420e-002 +v 7.1346500e-003 1.1468229e-001 -1.8345640e-002 +v -3.4502610e-002 7.6130020e-002 -2.2373150e-002 +v -8.3890740e-002 8.0789530e-002 2.2951400e-003 +v -8.3740480e-002 7.7240270e-002 4.6673300e-003 +v -8.6204620e-002 8.0930750e-002 1.0535420e-002 +v -8.6061500e-002 7.9931100e-002 1.4440780e-002 +v -8.1542760e-002 7.7950660e-002 2.6727280e-002 +v 2.6666170e-002 1.1268609e-001 -1.0509540e-002 +v -7.6041430e-002 1.5663068e-001 -2.1420480e-002 +v -9.0012110e-002 1.5083344e-001 1.5752740e-002 +v -7.1156510e-002 1.6335125e-001 -4.5360530e-002 +v -3.3210960e-002 7.6873190e-002 -2.7708380e-002 +v -7.3263090e-002 7.9983830e-002 -1.3749940e-002 +v -7.9285950e-002 8.0048830e-002 -7.0125500e-003 +v -8.6034510e-002 8.2645720e-002 1.9542680e-002 +v -8.4335410e-002 8.0729950e-002 2.2180460e-002 +v -7.1351460e-002 1.5727092e-001 -4.2183090e-002 +v -7.3548450e-002 1.6120822e-001 -3.5288420e-002 +v 1.6732620e-002 1.0991230e-001 -1.7020040e-002 +v -3.0978770e-002 7.7020860e-002 -3.2816490e-002 +v -6.2359240e-002 1.7544824e-001 -6.1485990e-002 +v -1.7587870e-002 1.1491318e-001 -1.7205040e-002 +v -8.2354050e-002 8.0876320e-002 -2.4038900e-003 +v -7.8578910e-002 1.4050129e-001 -4.6031000e-003 +v -2.8931080e-002 7.9247620e-002 -3.5049800e-002 +v -3.1225710e-002 8.0413100e-002 -3.2182320e-002 +v -3.3258680e-002 7.9621670e-002 -2.7146060e-002 +v -4.4697400e-002 1.1791537e-001 -1.4725860e-002 +v -7.9723740e-002 8.4226660e-002 -8.7608600e-003 +v -8.5042160e-002 8.3817830e-002 -7.7640000e-005 +v -8.6776400e-002 8.4344860e-002 1.2419030e-002 +v -8.6674670e-002 8.2665010e-002 1.5174340e-002 +v -8.5106250e-002 8.5176580e-002 2.5679440e-002 +v -7.6975760e-002 8.2935940e-002 -1.1450630e-002 +v -8.2776390e-002 8.3430890e-002 -4.3687000e-003 +v -8.6180440e-002 8.2572150e-002 6.3639000e-003 +v -9.1160820e-002 1.4144362e-001 1.5673910e-002 +v -7.4638800e-002 1.4398484e-001 -7.1504600e-003 +v -8.3448500e-002 1.3393299e-001 -1.6873200e-003 +v -7.5804700e-002 1.5134475e-001 -1.9881200e-002 +v -7.4924140e-002 1.5273013e-001 -1.9397440e-002 +v -5.2314440e-002 1.2159646e-001 -1.0798060e-002 +v -3.0734050e-002 8.5427560e-002 -3.0506670e-002 +v -3.2590560e-002 8.1942660e-002 -2.9100210e-002 +v -8.6454830e-002 8.6940490e-002 9.1667000e-004 +v -1.2501820e-002 1.0634409e-001 -2.2360190e-002 +v -8.8585880e-002 1.4605869e-001 9.8780000e-003 +v -8.5609750e-002 1.4712513e-001 6.5981100e-003 +v -8.7511210e-002 1.5061504e-001 1.0152460e-002 +v -6.0113540e-002 3.5550440e-002 4.4907580e-002 +v -8.8284200e-002 8.6869110e-002 8.1029200e-003 +v -8.8812560e-002 8.7765490e-002 1.4226540e-002 +v -8.8001070e-002 8.6626430e-002 1.5466680e-002 +v -8.6991110e-002 8.6444700e-002 2.2420950e-002 +v -7.4609990e-002 1.4727815e-001 -1.4172380e-002 +v -3.4707910e-002 8.4035880e-002 -2.4302260e-002 +v -8.4964900e-002 8.9962540e-002 -3.0068000e-003 +v -8.8091450e-002 8.7741580e-002 4.8489900e-003 +v -9.1490470e-002 1.4543178e-001 2.2277220e-002 +v -9.4380420e-002 1.2183919e-001 1.7904340e-002 +v -2.9164530e-002 8.5393440e-002 -3.3666780e-002 +v -3.0557790e-002 8.8625920e-002 -2.7550670e-002 +v -7.7770550e-002 8.7844840e-002 -1.1694810e-002 +v -8.0728260e-002 8.8204150e-002 -7.8003100e-003 +v -8.3272540e-002 8.9476690e-002 -5.6502900e-003 +v -8.9398710e-002 8.9539000e-002 1.1645550e-002 +v -8.9698390e-002 1.3971257e-001 1.3774760e-002 +v -7.7134890e-002 1.5151225e-001 -5.5823000e-003 +v -5.1121410e-002 1.6374125e-001 -2.6640500e-003 +v -8.6442960e-002 1.2767438e-001 -1.4864100e-003 +v -6.9605590e-002 1.5490763e-001 -5.0188670e-002 +v -8.7265180e-002 9.2110030e-002 4.2059000e-003 +v -8.9086250e-002 9.2377120e-002 1.0569860e-002 +v -8.9612340e-002 9.1599880e-002 1.7812280e-002 +v -8.2732460e-002 1.4196856e-001 1.2529100e-003 +v -7.2618370e-002 1.4368135e-001 -1.0987100e-002 +v -7.7677230e-002 1.6610992e-001 -3.6777320e-002 +v -1.5078060e-002 9.3863440e-002 -3.4317310e-002 +v -7.1057280e-002 1.5476885e-001 -4.5778530e-002 +v -9.2331920e-002 1.2523886e-001 9.1589500e-003 +v -7.6046700e-002 9.1037250e-002 -1.3643150e-002 +v -8.2942810e-002 9.3291700e-002 -6.1856300e-003 +v -1.0411170e-002 9.4592340e-002 -3.3784850e-002 +v -2.9331140e-002 1.1476230e-001 -1.5844640e-002 +v -3.7218250e-002 1.1594244e-001 -1.5173050e-002 +v -1.2429920e-002 1.0286006e-001 -2.3822480e-002 +v 6.6509600e-003 8.8144500e-002 -3.2945810e-002 +v -6.4119900e-003 9.2876210e-002 -3.4817640e-002 +v 1.5800150e-002 1.1996558e-001 -1.1415630e-002 +v 2.9102740e-002 1.0247506e-001 -1.5768380e-002 +v 4.2080690e-002 6.3480630e-002 -2.5405300e-003 +v 2.8723120e-002 9.7943220e-002 -1.7497350e-002 +v -1.9987640e-002 1.0278313e-001 -2.3392920e-002 +v 3.3748350e-002 8.3644140e-002 -1.8630450e-002 +v -1.8685680e-002 1.8689625e-001 -2.0248700e-002 +v 6.4154900e-003 1.1790181e-001 -1.6282740e-002 +v 5.6305210e-002 6.7769910e-002 2.6525000e-003 +v -5.3608300e-003 1.1289400e-001 -1.9613290e-002 +v 4.5769430e-002 6.4628800e-002 -1.2166100e-003 +v -1.0090870e-002 9.8229650e-002 -2.7731360e-002 +v -6.0458520e-002 1.1755645e-001 -1.1354580e-002 +v 1.2933940e-002 1.1887250e-001 -1.3979370e-002 +v 1.5235680e-002 9.4977900e-002 -2.4437140e-002 +v -3.0892950e-002 4.7409030e-002 -2.4954000e-002 +v -1.7766190e-002 1.8572344e-001 -2.3049280e-002 +v -1.3034890e-002 1.1002855e-001 -2.0161170e-002 +v -7.1206550e-002 3.8608570e-002 7.7218000e-004 +v 1.7904800e-002 1.0627709e-001 -1.7729250e-002 +v -3.3623490e-002 1.1840428e-001 -1.1927480e-002 +v -4.9906840e-002 1.1788332e-001 -1.4402480e-002 +v -6.6878100e-003 1.1747209e-001 -1.5359280e-002 +v -1.5451470e-002 1.8597600e-001 -2.4795870e-002 +v -3.0603900e-002 3.8038460e-002 -3.0123840e-002 +v -1.3220270e-002 1.8397188e-001 -2.7519460e-002 +v -4.7859450e-002 1.1162729e-001 -1.7482120e-002 +v -1.3098990e-002 9.0776040e-002 -3.6659270e-002 +v -6.3117340e-002 1.5425437e-001 2.9730400e-003 +v -5.5139750e-002 1.1051601e-001 -1.7672740e-002 +v -1.1096770e-002 1.8202324e-001 -2.8042450e-002 +v -2.6568900e-002 3.4695830e-002 -2.9113750e-002 +v -6.6396600e-003 1.0222209e-001 -2.3519320e-002 +v -5.6996400e-002 1.5741713e-001 6.0244000e-004 +v 1.9076550e-002 9.1870620e-002 -2.4890230e-002 +v 1.3473090e-002 1.2429893e-001 -6.8361400e-003 +v -2.1730490e-002 9.8410960e-002 -2.4306850e-002 +v -1.7142170e-002 9.8057460e-002 -2.4924330e-002 +v -5.8698110e-002 1.5137318e-001 -6.5801000e-004 +v 3.5641100e-003 1.2764883e-001 -4.4672400e-003 +v -8.5369800e-003 9.9921220e-002 -2.4351070e-002 +v -1.2171980e-002 1.8125102e-001 -2.9061170e-002 +v -6.1113980e-002 1.5305212e-001 9.9983000e-004 +v -2.9570620e-002 1.1713871e-001 -1.3675530e-002 +v 3.0530110e-002 1.1221207e-001 -8.1860600e-003 +v -3.1714100e-002 3.5111530e-002 -3.0658990e-002 +v -1.3691130e-002 1.7914707e-001 -2.8126410e-002 +v 1.1620840e-002 1.1548972e-001 -1.6385680e-002 +v -6.1993570e-002 1.5028063e-001 -1.6297100e-003 +v 3.6684020e-002 1.0099570e-001 -9.8485900e-003 +v 4.8512670e-002 7.1798180e-002 6.0005000e-003 +v -4.6583000e-004 1.1983662e-001 -1.3610580e-002 +v 1.6747170e-002 9.0113950e-002 -2.7127190e-002 +v 6.9832400e-003 9.7730080e-002 -2.4800310e-002 +v -4.3226830e-002 4.6263570e-002 -1.1771730e-002 +v -8.3562500e-003 1.1373600e-001 -1.8239810e-002 +v -1.2354410e-002 1.1556773e-001 -1.6486930e-002 +v 4.6834470e-002 7.4354100e-002 1.0139500e-002 +v 2.5319170e-002 1.0931725e-001 -1.3579660e-002 +v -4.2459500e-002 1.1392482e-001 -1.6188050e-002 +v 5.7744640e-002 6.4158440e-002 2.6277600e-003 +v -5.9710530e-002 3.6535780e-002 -9.4949000e-003 +v -3.2078400e-003 1.0962100e-001 -2.1523850e-002 +v 2.7020740e-002 6.1345700e-002 -2.2292060e-002 +v 7.1030200e-003 1.0191162e-001 -2.1230990e-002 +v -3.8225680e-002 1.2465525e-001 -7.3257400e-003 +v 2.5941540e-002 1.1576352e-001 -8.2193900e-003 +v -6.1297960e-002 3.3900220e-002 -9.3216600e-003 +v -5.9466670e-002 1.4743956e-001 -1.8885400e-003 +v 1.0506610e-002 1.0087700e-001 -2.2109510e-002 +v 3.3081340e-002 1.0273382e-001 -1.2787210e-002 +v 1.2517840e-002 1.0475378e-001 -1.9915960e-002 +v 2.3087990e-002 9.3998720e-002 -2.2210680e-002 +v 3.1555430e-002 9.2484730e-002 -1.8204280e-002 +v 6.2723100e-003 9.9910370e-002 -2.2296890e-002 +v -4.0917240e-002 4.6121780e-002 -1.7942580e-002 +v 3.5407360e-002 9.8188850e-002 -1.2008970e-002 +v 9.4135900e-003 1.2121902e-001 -1.2937780e-002 +v 5.3735190e-002 7.2027350e-002 6.8010000e-003 +v 2.5620340e-002 1.1880719e-001 -5.0330800e-003 +v -3.8150260e-002 4.2466610e-002 -2.6893990e-002 +v -2.8212410e-002 1.1116862e-001 -1.8001930e-002 +v -6.0253590e-002 1.4339100e-001 -3.7906300e-003 +v 1.9016880e-002 1.0401450e-001 -1.9333120e-002 +v 7.5446700e-003 9.1682150e-002 -3.1643140e-002 +v -7.0760800e-003 1.2240119e-001 -1.1364410e-002 +v -1.9047500e-002 9.6562130e-002 -2.7579900e-002 +v -1.6953390e-002 1.0669256e-001 -2.2002990e-002 +v -6.7307000e-004 1.0119875e-001 -2.2857770e-002 +v -9.0179300e-003 1.2528031e-001 -7.7912000e-003 +v -6.8136180e-002 1.8006113e-001 -5.8816050e-002 +v -2.3600190e-002 1.1513818e-001 -1.5577390e-002 +v -5.9831220e-002 4.2842260e-002 -6.6469100e-003 +v 5.3124070e-002 5.9012380e-002 -2.8853800e-003 +v -3.6931840e-002 3.7107370e-002 -2.9714170e-002 +v -5.6215140e-002 1.4139213e-001 -2.8027300e-003 +v 3.6695880e-002 1.0372844e-001 -7.9621500e-003 +v -3.5885070e-002 1.2040038e-001 -1.0640470e-002 +v -9.3569500e-003 8.5423730e-002 -3.8112540e-002 +v -6.0127340e-002 1.2041391e-001 -9.3791100e-003 +v -3.9842790e-002 1.2156113e-001 -1.1570310e-002 +v 2.8322200e-002 1.0847957e-001 -1.2623390e-002 +v -1.8733500e-003 1.1593910e-001 -1.7169430e-002 +v 3.8648150e-002 9.0153340e-002 -1.2549680e-002 +v -1.7359200e-003 9.2244170e-002 -3.4310460e-002 +v 5.0000820e-002 6.1612070e-002 -3.4649900e-003 +v 5.5858960e-002 6.2910170e-002 6.9037000e-004 +v 2.0461520e-002 1.1515372e-001 -1.3103780e-002 +v -1.5165840e-002 1.1798075e-001 -1.4465520e-002 +v -7.0859540e-002 7.1510150e-002 3.3895100e-002 +v 2.2674030e-002 8.6606050e-002 -2.4925490e-002 +v 3.5358840e-002 8.7438890e-002 -1.7109050e-002 +v 1.8400920e-002 1.2145507e-001 -7.6804200e-003 +v -2.5425900e-002 4.1421010e-002 -2.9204830e-002 +v -8.2085100e-003 9.6777440e-002 -3.0809780e-002 +v -5.6810660e-002 3.3873940e-002 -1.1166310e-002 +v -3.4588640e-002 4.4744960e-002 -2.7122900e-002 +v -4.0251680e-002 1.1827531e-001 -1.3674080e-002 +v 1.6387020e-002 1.1402346e-001 -1.5496900e-002 +v 4.2635280e-002 6.0797460e-002 -3.4583700e-003 +v -5.0687200e-002 3.5935870e-002 -1.2380790e-002 +v 7.3446800e-003 9.4509570e-002 -2.9683220e-002 +v -1.9706700e-002 9.2917340e-002 -3.4636880e-002 +v -1.2083040e-002 1.2219229e-001 -9.7120900e-003 +v 4.8805930e-002 6.8457810e-002 1.6952900e-003 +v -3.0869700e-003 9.8402500e-002 -2.7403170e-002 +v -5.3198790e-002 1.3672896e-001 -1.6580500e-003 +v -4.7290060e-002 1.3055355e-001 1.6909100e-003 +v 4.4651700e-003 1.2044039e-001 -1.3931400e-002 +v -2.3850100e-003 1.2290534e-001 -1.0382460e-002 +v -2.4833330e-002 9.5858030e-002 -2.5162110e-002 +v -4.2296900e-002 3.6291920e-002 -2.7253600e-002 +v -5.4388260e-002 1.3404922e-001 -3.9920400e-003 +v -5.0539380e-002 1.3336659e-001 -1.0872200e-003 +v 2.6040300e-003 9.6942660e-002 -2.8407060e-002 +v -7.8163100e-003 1.2821209e-001 -1.9430400e-003 +v 6.5111700e-003 1.3002517e-001 9.2881000e-004 +v 3.4742860e-002 9.2274140e-002 -1.5654590e-002 +v -6.7787700e-002 1.8088887e-001 -5.8191050e-002 +v -3.3715410e-002 1.1151566e-001 -1.8078440e-002 +v 4.4630400e-003 1.2427294e-001 -9.4291400e-003 +v -2.3370170e-002 9.3392760e-002 -3.2031820e-002 +v -4.8982070e-002 1.2980647e-001 -1.3229400e-003 +v -7.8164000e-004 1.2822918e-001 -3.2490000e-003 +v 2.4960400e-003 8.9857600e-002 -3.3628450e-002 +v 7.4553300e-003 1.1196790e-001 -1.9554260e-002 +v 2.8791140e-002 9.1157340e-002 -2.0370210e-002 +v -5.3590150e-002 1.2437450e-001 -7.3470400e-003 +v -4.7743630e-002 1.2064432e-001 -1.2812990e-002 +v -1.9616230e-002 1.2109197e-001 -9.5487700e-003 +v -6.5047370e-002 1.7999148e-001 -5.9758600e-002 +v -5.1704160e-002 3.7620360e-002 -1.1763450e-002 +v -5.2124270e-002 1.2929832e-001 -4.1187000e-003 +v -4.5334450e-002 1.2891494e-001 1.5819100e-003 +v -3.0471200e-003 1.2919453e-001 -1.0688000e-003 +v 7.2129600e-003 1.2721957e-001 -5.2073700e-003 +v 1.1669320e-002 1.2720154e-001 -3.1850900e-003 +v 5.3056400e-002 6.9708830e-002 3.1291400e-003 +v -6.3021150e-002 1.7810951e-001 -6.0393570e-002 +v 2.8204800e-002 6.4391270e-002 -2.0698040e-002 +v 3.4400180e-002 1.0503000e-001 -1.0224920e-002 +v 3.0975190e-002 1.0790250e-001 -1.1058430e-002 +v -4.8984390e-002 1.1480518e-001 -1.5966690e-002 +v -3.2821710e-002 1.2300500e-001 -5.9088300e-003 +v -5.0792860e-002 1.2716487e-001 -4.8183200e-003 +v -3.5301670e-002 1.2547815e-001 -3.1542800e-003 +v 5.6455250e-002 6.9951490e-002 4.9191700e-003 +v -1.6240450e-002 1.2512177e-001 -3.6499700e-003 +v -1.6970400e-002 1.1119793e-001 -1.9586410e-002 +v -5.4088120e-002 3.9781210e-002 -1.0544680e-002 +v -3.4190490e-002 4.7514010e-002 -2.2301500e-002 +v 1.3699090e-002 9.3914220e-002 -2.6427690e-002 +v 8.8000000e-004 9.9234930e-002 -2.4355670e-002 +v -4.6459460e-002 1.2723953e-001 -4.8843300e-003 +v -4.1735500e-002 1.2687599e-001 -4.1742000e-003 +v -2.1000480e-002 1.2313643e-001 -6.1190100e-003 +v -1.2130450e-002 1.2572568e-001 -5.2007900e-003 +v -4.3822400e-003 1.2640753e-001 -6.9495200e-003 +v 1.4085700e-003 3.4781990e-002 -2.3265200e-002 +v -1.4846200e-002 3.5070930e-002 -2.6071900e-002 +v -2.1399500e-002 3.4795120e-002 -2.7958820e-002 +v 1.2009220e-002 3.5961900e-002 -2.1735750e-002 +v 3.8249200e-003 3.6129220e-002 -2.3878090e-002 +v -5.1139560e-002 9.6617580e-002 -2.2095120e-002 +v -5.4813320e-002 9.8102480e-002 -2.1425370e-002 +v -2.7597040e-002 1.6979824e-001 -1.8170420e-002 +v 1.3359870e-002 3.9377410e-002 -2.2496330e-002 +v 4.3919300e-003 3.8674430e-002 -2.4170290e-002 +v -6.8478200e-003 3.6444540e-002 -2.5177120e-002 +v -1.3280260e-002 3.7699590e-002 -2.6391810e-002 +v -4.7672760e-002 3.6116650e-002 -1.3301210e-002 +v -4.5590120e-002 1.0853826e-001 -1.8796680e-002 +v -5.0095670e-002 1.0990925e-001 -1.8504510e-002 +v -6.5766640e-002 3.6469550e-002 -7.2073000e-003 +v -2.3455840e-002 1.6824727e-001 -1.8822880e-002 +v -4.5918000e-003 3.8404570e-002 -2.5412870e-002 +v -2.4954130e-002 3.7441060e-002 -2.9152720e-002 +v 2.9007770e-002 3.7358220e-002 -2.7474000e-004 +v -7.9468800e-003 4.1489920e-002 -2.5911270e-002 +v -1.6803800e-002 3.9753810e-002 -2.7565350e-002 +v -6.5156150e-002 1.4034537e-001 -7.6848600e-003 +v -4.7080100e-002 4.0700690e-002 -1.1869830e-002 +v -6.8470630e-002 3.7477700e-002 -4.9557400e-003 +v 3.7326850e-002 4.0209510e-002 -8.5850000e-004 +v 3.5349870e-002 4.1257050e-002 -2.8075100e-003 +v 5.1820700e-003 4.1536320e-002 -2.4065670e-002 +v 1.8660660e-002 1.0030784e-001 -2.2127290e-002 +v -6.0510780e-002 1.0748450e-001 -1.7042300e-002 +v -6.2374340e-002 4.0146090e-002 -7.4040200e-003 +v 2.5456950e-002 3.9483890e-002 -4.0251400e-003 +v -2.2828000e-004 4.3394940e-002 -2.5124420e-002 +v -8.1088400e-003 4.3439060e-002 -2.6140070e-002 +v -1.7362450e-002 4.3237420e-002 -2.7665190e-002 +v -2.6416670e-002 4.4674020e-002 -2.8209740e-002 +v 3.8064500e-003 1.0944331e-001 -2.0203790e-002 +v -5.8232370e-002 9.5690400e-002 -2.0616030e-002 +v -6.6122370e-002 4.2341260e-002 -2.7538800e-003 +v -6.0959920e-002 9.4173040e-002 -1.9015670e-002 +v 3.1352250e-002 4.2649280e-002 -4.6745000e-003 +v -3.3540900e-002 3.6342620e-002 4.9089960e-002 +v 1.7252780e-002 4.4335610e-002 -2.3067190e-002 +v 1.0637660e-002 4.4161560e-002 -2.4926170e-002 +v 4.3843100e-003 4.5806710e-002 -2.6788990e-002 +v -8.2506400e-003 4.5148720e-002 -2.8441070e-002 +v -1.5748410e-002 4.5043860e-002 -2.7877790e-002 +v 2.8990330e-002 4.4697850e-002 -6.1863000e-003 +v 8.1686400e-003 4.5053030e-002 -2.5178740e-002 +v -9.6291000e-004 4.5378230e-002 -2.7308280e-002 +v -1.7033400e-003 4.7819200e-002 -2.9928930e-002 +v -3.1535830e-002 4.4740410e-002 -2.8079410e-002 +v -3.3619650e-002 1.5691468e-001 -1.1024870e-002 +v -5.0751180e-002 4.3109620e-002 -1.0018680e-002 +v 3.6890890e-002 4.7353200e-002 -6.1057100e-003 +v 2.4975630e-002 4.2644580e-002 -7.0169900e-003 +v 2.4562420e-002 4.8369560e-002 -1.9672760e-002 +v 1.3964040e-002 4.5579170e-002 -2.4706510e-002 +v 1.3376130e-002 4.8630300e-002 -2.6551500e-002 +v 3.7308900e-003 4.8127990e-002 -2.9025970e-002 +v -8.7947000e-003 4.7056850e-002 -2.9881630e-002 +v -1.3753770e-002 5.1865060e-002 -3.2243480e-002 +v -2.1200840e-002 4.6657090e-002 -2.7951320e-002 +v 3.9693540e-002 4.5658580e-002 -4.5274100e-003 +v 3.3627400e-002 4.8717730e-002 -6.3904600e-003 +v -6.5352120e-002 9.9294570e-002 -1.6820150e-002 +v 1.2868100e-003 5.0383670e-002 -3.0357440e-002 +v -8.1797500e-003 4.9845800e-002 -3.1071390e-002 +v -1.7184350e-002 4.8210500e-002 -2.9741930e-002 +v -2.6049450e-002 4.7692500e-002 -2.6149500e-002 +v -8.4747010e-002 1.1078350e-001 3.9488380e-002 +v -5.1316870e-002 4.8270690e-002 -7.9310500e-003 +v -8.2506510e-002 1.2765487e-001 -4.6796400e-003 +v 3.8663690e-002 5.1696670e-002 -6.6910200e-003 +v -7.5643160e-002 9.9440450e-002 -1.1927610e-002 +v 2.0284470e-002 5.1349190e-002 -2.4895380e-002 +v 5.9436000e-003 5.0976660e-002 -2.9119360e-002 +v -2.5528290e-002 5.1472710e-002 -2.6884680e-002 +v -3.5562670e-002 4.9399890e-002 -1.2865040e-002 +v -4.2818980e-002 1.6220182e-001 -1.0337510e-002 +v -6.5593600e-002 1.7665711e-001 -6.0504730e-002 +v -3.4151080e-002 1.7442797e-001 -1.3312550e-002 +v 4.3673180e-002 5.0162230e-002 -5.9843500e-003 +v -5.0342410e-002 1.5546197e-001 -5.1927700e-003 +v 2.5464180e-002 5.4029700e-002 -2.1691010e-002 +v 1.0149790e-002 4.9258540e-002 -2.7750590e-002 +v -2.2043190e-002 5.3612020e-002 -3.0135610e-002 +v -3.2875520e-002 5.1677630e-002 -1.0888650e-002 +v -3.7613820e-002 4.9534770e-002 -1.1626140e-002 +v -4.0750630e-002 4.9285110e-002 -1.1286200e-002 +v -4.6385170e-002 4.7490850e-002 -1.0085980e-002 +v 4.4473170e-002 5.3293010e-002 -6.3327900e-003 +v 3.3205620e-002 5.1020650e-002 -7.2382500e-003 +v 1.5678350e-002 5.1169270e-002 -2.6397810e-002 +v 6.8341700e-003 5.5010170e-002 -3.0561130e-002 +v 2.1424700e-003 5.5502800e-002 -3.1334400e-002 +v 5.9285000e-004 5.2867950e-002 -3.0513830e-002 +v -3.6481400e-003 5.1869000e-002 -3.1457940e-002 +v -9.4245600e-003 5.5399220e-002 -3.3653980e-002 +v -1.9302150e-002 5.8224770e-002 -3.3919700e-002 +v -6.1084270e-002 1.3386190e-001 -7.2248900e-003 +v -4.3309760e-002 5.5656840e-002 -1.1402110e-002 +v -6.1080540e-002 1.6833773e-001 -5.9192060e-002 +v 4.7574690e-002 5.2943630e-002 -5.1300300e-003 +v -3.7403030e-002 1.1150775e-001 -1.8243310e-002 +v 1.9972490e-002 5.4409710e-002 -2.7108230e-002 +v 5.3974800e-003 5.8382570e-002 -3.0903760e-002 +v -1.0603590e-002 5.3602910e-002 -3.3403350e-002 +v -3.4998290e-002 5.2331560e-002 -1.0347380e-002 +v -4.6471230e-002 5.1304340e-002 -9.8299800e-003 +v -6.7945360e-002 1.1493603e-001 -9.5107300e-003 +v -7.1048210e-002 1.5161088e-001 -4.4679270e-002 +v -5.8903800e-003 3.4790620e-002 -2.4224470e-002 +v 1.6842140e-002 5.5555670e-002 -2.8284560e-002 +v 1.0711040e-002 5.4687610e-002 -2.9767520e-002 +v -1.1826800e-003 5.9492420e-002 -3.3360920e-002 +v -5.2325900e-003 5.5688960e-002 -3.2840220e-002 +v -5.1705830e-002 5.2470760e-002 -7.4047200e-003 +v -5.2626360e-002 6.0043760e-002 -8.9566900e-003 +v -7.2598590e-002 9.7762720e-002 -1.4434510e-002 +v 4.4331260e-002 5.5818010e-002 -6.0362700e-003 +v 3.8463400e-002 5.4934820e-002 -6.1822500e-003 +v 3.8838620e-002 5.7808260e-002 -5.2584800e-003 +v -9.2015400e-003 5.9510130e-002 -3.4437110e-002 +v -3.5262560e-002 5.5284900e-002 -1.0545060e-002 +v -3.8336450e-002 5.4503540e-002 -1.0905320e-002 +v -1.7727540e-002 3.6289540e-002 5.2222250e-002 +v 5.0006490e-002 5.8095800e-002 -4.6211800e-003 +v 4.6133970e-002 5.9278810e-002 -4.7769600e-003 +v 1.5110300e-002 5.9819840e-002 -2.8645750e-002 +v 1.0312380e-002 5.7586530e-002 -2.9995250e-002 +v -6.1353400e-003 6.0256790e-002 -3.4695830e-002 +v -1.2318220e-002 5.9396390e-002 -3.5268510e-002 +v -1.4466910e-002 6.3136020e-002 -3.6865870e-002 +v -4.6650260e-002 5.9840950e-002 -1.2135840e-002 +v -5.6572080e-002 1.2480275e-001 -7.1885700e-003 +v -7.9237500e-002 1.2055419e-001 -5.6744800e-003 +v -7.9334790e-002 1.2560650e-001 -6.1175900e-003 +v 2.2340000e-002 5.8492230e-002 -2.6014120e-002 +v 7.6270400e-003 6.2098330e-002 -3.1135840e-002 +v 3.3101700e-003 6.0456840e-002 -3.2481070e-002 +v -1.6811880e-002 6.1275230e-002 -3.5929330e-002 +v -3.2491910e-002 5.7196350e-002 -1.2104730e-002 +v -3.4108240e-002 6.1466560e-002 -1.3053130e-002 +v -3.3896980e-002 5.7025330e-002 -1.1047570e-002 +v -3.8623580e-002 5.8303290e-002 -1.1505750e-002 +v -4.5008400e-002 6.2723940e-002 -1.3390450e-002 +v -5.6896010e-002 1.3398739e-001 -5.6270700e-003 +v -4.4853890e-002 1.5746031e-001 -8.6731600e-003 +v -7.8609550e-002 6.9656870e-002 1.1810740e-002 +v -2.3730020e-002 1.0186156e-001 -2.3836400e-002 +v -2.8122930e-002 9.9322390e-002 -2.3580130e-002 +v -5.0076720e-002 1.4997652e-001 -3.6419700e-003 +v -3.3048420e-002 9.5958590e-002 -2.3426460e-002 +v 1.9520390e-002 6.2064770e-002 -2.7292470e-002 +v -3.8864710e-002 1.0333987e-001 -2.0641400e-002 +v -4.8952940e-002 5.6281090e-002 -1.0220880e-002 +v -5.3993040e-002 1.4498656e-001 -1.1093400e-003 +v -4.5530560e-002 9.8510850e-002 -2.1729510e-002 +v -5.0910960e-002 1.0074570e-001 -2.1619430e-002 +v 2.3245830e-002 6.2792530e-002 -2.5047990e-002 +v 9.7412800e-003 6.3181400e-002 -3.1141370e-002 +v -8.6614000e-004 6.4559630e-002 -3.4490930e-002 +v -8.5264000e-003 6.4001730e-002 -3.5850480e-002 +v -4.8451500e-002 6.4794120e-002 -1.3029910e-002 +v -5.2325160e-002 1.0614813e-001 -1.9271240e-002 +v -5.5265350e-002 1.0216682e-001 -1.9897100e-002 +v -5.9042010e-002 9.9032210e-002 -1.9222950e-002 +v -5.7846760e-002 1.0433496e-001 -1.8525740e-002 +v -2.7113460e-002 1.7332156e-001 -1.8538890e-002 +v 2.2832000e-002 6.7082570e-002 -2.6297510e-002 +v 1.4519060e-002 6.4595540e-002 -2.9855690e-002 +v 1.1471330e-002 6.7581440e-002 -3.0901170e-002 +v -1.7739360e-002 6.6260830e-002 -3.7657310e-002 +v -6.5059750e-002 1.3452104e-001 -8.0899900e-003 +v -7.5829320e-002 1.4244605e-001 -5.8090000e-003 +v -4.1362350e-002 6.1637330e-002 -1.2813770e-002 +v -5.6147890e-002 6.1921550e-002 -5.7541100e-003 +v -6.2126110e-002 6.2845360e-002 -4.5202600e-003 +v -3.7292480e-002 1.6449057e-001 -1.3627050e-002 +v -1.9818920e-002 1.6509494e-001 -1.7608980e-002 +v 6.2881100e-003 6.5416350e-002 -3.2563040e-002 +v -5.9250500e-003 6.9515630e-002 -3.5933480e-002 +v -1.0538630e-002 6.7999180e-002 -3.6517060e-002 +v -3.5385700e-002 6.6817430e-002 -1.5434860e-002 +v -5.3994500e-002 6.4638700e-002 -9.3254900e-003 +v -6.3852310e-002 6.5572310e-002 -6.9393300e-003 +v -6.3920880e-002 1.2774242e-001 -8.5494600e-003 +v -2.6940700e-002 3.6184050e-002 5.3351850e-002 +v 1.9618650e-002 6.7007390e-002 -2.8356120e-002 +v 1.2275180e-002 6.9933940e-002 -3.1553160e-002 +v 5.4265100e-003 6.8247960e-002 -3.2730520e-002 +v -4.4084200e-003 6.6619200e-002 -3.4870250e-002 +v -2.1911350e-002 6.7144790e-002 -3.6535750e-002 +v -4.5643150e-002 1.5466949e-001 -7.2969400e-003 +v -5.1673460e-002 6.6850660e-002 -1.2120350e-002 +v -5.8105180e-002 6.6465950e-002 -1.0044340e-002 +v -5.6992260e-002 1.4311862e-001 -2.2403000e-003 +v -8.0651110e-002 1.3119854e-001 -4.4397800e-003 +v -5.6544310e-002 1.2850938e-001 -6.2014700e-003 +v 1.7758080e-002 7.0138540e-002 -2.9404680e-002 +v 6.4980500e-003 7.0791870e-002 -3.3525310e-002 +v 7.5831000e-004 7.0434460e-002 -3.4462560e-002 +v -1.3235950e-002 6.9292820e-002 -3.7917490e-002 +v -6.7390780e-002 1.1889688e-001 -8.7301400e-003 +v -3.8119520e-002 6.4162310e-002 -1.3829140e-002 +v 1.8527400e-003 1.1303356e-001 -1.9794270e-002 +v -7.5950810e-002 6.8170610e-002 1.8117970e-002 +v -1.0001990e-002 7.2671480e-002 -3.7661370e-002 +v -1.7976070e-002 7.0613770e-002 -3.8443880e-002 +v -2.3035990e-002 7.2778460e-002 -3.8072640e-002 +v -2.6120100e-002 7.1177480e-002 -3.5451530e-002 +v -6.8535420e-002 1.3929375e-001 -7.8046600e-003 +v -3.5263040e-002 7.1067650e-002 -1.8011860e-002 +v -4.1558180e-002 6.9774010e-002 -1.6774100e-002 +v -5.2831730e-002 7.0298920e-002 -1.4864960e-002 +v -6.6978850e-002 6.7638980e-002 -6.8094400e-003 +v -1.0244470e-002 1.7895826e-001 -2.9538870e-002 +v -7.5272650e-002 1.2680098e-001 -8.0241700e-003 +v -8.7359900e-002 1.1248315e-001 4.2049490e-002 +v 8.7503000e-003 7.4301560e-002 -3.3398210e-002 +v -6.4249520e-002 1.6045024e-001 -5.7041470e-002 +v -4.4354010e-002 7.3372220e-002 -1.7874430e-002 +v -4.5762580e-002 6.9445320e-002 -1.5928780e-002 +v -4.7957440e-002 7.2542990e-002 -1.6106990e-002 +v -5.7822630e-002 6.9538010e-002 -1.4416470e-002 +v -7.2071600e-002 7.1538150e-002 -7.4714400e-003 +v 2.5472930e-002 7.4094500e-002 -2.4938540e-002 +v 1.5719730e-002 7.3756350e-002 -2.9747770e-002 +v 4.8214000e-003 7.3763980e-002 -3.4552450e-002 +v -2.2528600e-003 7.3921320e-002 -3.5887190e-002 +v -7.3834900e-003 7.4799620e-002 -3.7223830e-002 +v -2.0225340e-002 7.7095190e-002 -3.9044290e-002 +v -3.4016180e-002 7.2101270e-002 -2.0823150e-002 +v -3.8493370e-002 7.2839870e-002 -1.7502230e-002 +v -6.4392550e-002 7.3116330e-002 -1.5335340e-002 +v -6.4480660e-002 7.0187350e-002 -1.2261750e-002 +v -2.3854330e-002 1.6164528e-001 -1.4504190e-002 +v 2.2104450e-002 7.2692600e-002 -2.6900140e-002 +v 1.5532370e-002 7.6586960e-002 -2.9606940e-002 +v 1.1574050e-002 7.4860570e-002 -3.1383860e-002 +v -1.4731560e-002 7.7640750e-002 -3.8490670e-002 +v -1.6018820e-002 7.4288800e-002 -3.8864420e-002 +v -5.1103620e-002 7.3071950e-002 -1.6243060e-002 +v -5.7989540e-002 7.4017880e-002 -1.7522320e-002 +v -6.9608380e-002 7.2322890e-002 -1.0934430e-002 +v -7.5996110e-002 1.1714132e-001 -6.5577200e-003 +v -3.7987660e-002 1.0751453e-001 -1.9975760e-002 +v 1.0696210e-002 7.9889200e-002 -3.2009580e-002 +v -5.3433400e-003 7.8264580e-002 -3.7476940e-002 +v -2.6081990e-002 7.6191290e-002 -3.6780200e-002 +v -3.9161040e-002 1.5718885e-001 -1.0580510e-002 +v -6.5609880e-002 7.5860010e-002 -1.6750060e-002 +v -7.0177600e-002 7.5663330e-002 -1.3839210e-002 +v -7.4291360e-002 7.4808360e-002 -9.3537900e-003 +v -6.3428890e-002 1.7185387e-001 -6.1412170e-002 +v 3.0684890e-002 7.5726870e-002 -2.0778090e-002 +v 1.9305010e-002 7.9017870e-002 -2.7743990e-002 +v -8.5992100e-003 7.9338730e-002 -3.7905180e-002 +v -2.3200110e-002 7.6568500e-002 -3.8386500e-002 +v -3.8117820e-002 7.6390120e-002 -1.8644360e-002 +v -4.4231130e-002 7.7664130e-002 -1.9026580e-002 +v -5.1025500e-002 7.5705070e-002 -1.8186900e-002 +v -7.0595130e-002 1.2994832e-001 -8.7629200e-003 +v 2.8147660e-002 7.8785370e-002 -2.2432450e-002 +v 7.6016000e-003 7.9435920e-002 -3.3714560e-002 +v 4.9502400e-003 7.8027250e-002 -3.4409750e-002 +v -1.5858350e-002 8.1165550e-002 -3.9185590e-002 +v -1.8502080e-002 8.3343870e-002 -3.9010720e-002 +v -7.9739350e-002 1.3606854e-001 -4.1482100e-003 +v -3.0980180e-002 1.6634656e-001 -1.6241160e-002 +v -3.5749800e-002 7.7248350e-002 -1.9374020e-002 +v -4.8944740e-002 7.9086360e-002 -1.9575700e-002 +v -5.5065860e-002 7.8089190e-002 -1.9755480e-002 +v 2.3706000e-002 8.0240410e-002 -2.5450120e-002 +v 1.2254110e-002 8.3456700e-002 -3.0771580e-002 +v 1.8549900e-003 8.4692790e-002 -3.4838500e-002 +v -2.0857000e-004 7.8941410e-002 -3.5782080e-002 +v -4.2710000e-004 8.2947370e-002 -3.6380660e-002 +v -4.4101600e-003 8.2794510e-002 -3.7467250e-002 +v -3.3202320e-002 1.0578320e-001 -2.0647590e-002 +v -3.9206970e-002 8.1536380e-002 -2.0571000e-002 +v -6.0355410e-002 7.9766610e-002 -1.9375540e-002 +v -4.1771830e-002 1.0396706e-001 -2.0832940e-002 +v -1.1204010e-002 8.2713320e-002 -3.8489610e-002 +v -2.3181500e-002 8.1686990e-002 -3.8329160e-002 +v -2.7233190e-002 8.0570950e-002 -3.6620670e-002 +v -3.5470180e-002 8.0196070e-002 -2.2325910e-002 +v -4.4864210e-002 8.1997900e-002 -2.0473520e-002 +v -5.0647890e-002 8.2309430e-002 -2.1365890e-002 +v -5.5522610e-002 8.1927600e-002 -2.1353790e-002 +v -8.8089610e-002 1.1135484e-001 1.8516150e-002 +v -7.2036080e-002 1.1107918e-001 4.5361400e-002 +v -3.3359780e-002 1.6986395e-001 -1.5448990e-002 +v -6.6839030e-002 6.2170510e-002 2.1576840e-002 +v 3.0730560e-002 8.1968990e-002 -2.0040460e-002 +v 1.6224320e-002 8.6480380e-002 -2.8952010e-002 +v -6.9855630e-002 1.0027892e-001 -1.4847830e-002 +v -6.3836170e-002 8.1704600e-002 -1.8908860e-002 +v -6.7914820e-002 8.0136290e-002 -1.7128200e-002 +v -4.5752080e-002 1.6340754e-001 -8.1780500e-003 +v 1.1727540e-002 8.8010780e-002 -3.0860110e-002 +v 7.3334800e-003 8.5270000e-002 -3.2829380e-002 +v -3.4356500e-003 8.7017890e-002 -3.6461000e-002 +v -2.6964110e-002 8.4512810e-002 -3.6361740e-002 +v -3.6553370e-002 8.5316190e-002 -2.2576200e-002 +v -3.8791090e-002 8.5232710e-002 -2.1917600e-002 +v -5.7676940e-002 8.6258340e-002 -2.1098320e-002 +v -6.2581810e-002 8.6394530e-002 -1.9169290e-002 +v -7.1395340e-002 1.2468846e-001 -8.5944200e-003 +v 1.4801570e-002 9.9040900e-002 -2.2842920e-002 +v -2.1162860e-002 1.7491852e-001 -2.1977110e-002 +v -1.4824250e-002 8.7288840e-002 -3.8317070e-002 +v -2.3285750e-002 8.9468030e-002 -3.6027250e-002 +v -5.1595650e-002 8.4422070e-002 -2.1600960e-002 +v -6.9481040e-002 8.5656460e-002 -1.7198420e-002 +v -7.0917210e-002 1.0754846e-001 -1.1496630e-002 +v 3.0145320e-002 8.6284000e-002 -2.0408140e-002 +v -5.5578110e-002 1.1567692e-001 -1.4645990e-002 +v -8.0981100e-003 8.9070080e-002 -3.6552200e-002 +v -8.1206310e-002 1.1205088e-001 -8.8299000e-004 +v -1.8772170e-002 8.9838040e-002 -3.6991710e-002 +v -2.1100420e-002 8.6587670e-002 -3.7849050e-002 +v -2.5809910e-002 8.8889590e-002 -3.5082250e-002 +v -4.8984800e-002 9.0731760e-002 -2.1817170e-002 +v -3.5874870e-002 3.4776000e-002 -3.0845200e-002 +v -3.3164390e-002 3.3606540e-002 -2.9721880e-002 +v -2.5964020e-002 3.3487000e-002 -2.6321120e-002 +v -1.6717530e-002 3.3611640e-002 -2.4625420e-002 +v -5.3486300e-003 3.3829010e-002 -2.2600430e-002 +v 6.4843500e-003 3.4293000e-002 -2.0854930e-002 +v 1.3950350e-002 3.4880000e-002 -1.8612870e-002 +v -4.2465980e-002 3.4189100e-002 -2.7260650e-002 +v -3.3241100e-002 3.3578760e-002 -2.6719450e-002 +v 6.2813500e-003 3.4165800e-002 -1.8764230e-002 +v -4.4265790e-002 3.3663660e-002 -2.1914420e-002 +v -2.3671460e-002 3.3630970e-002 -2.3217760e-002 +v -1.1558580e-002 3.3895430e-002 -2.1054260e-002 +v -2.0406400e-003 3.4053940e-002 -1.9331070e-002 +v 1.7323900e-003 3.4459660e-002 -1.6607870e-002 +v -2.7316070e-002 3.3910070e-002 -2.1353750e-002 +v -1.3371080e-002 3.4361580e-002 -1.9023720e-002 +v 9.5887300e-003 3.4207220e-002 -1.5424050e-002 +v -1.4981540e-002 3.5878180e-002 -1.7992380e-002 +v -2.3474300e-003 3.5903130e-002 -1.5929740e-002 +v 2.2544300e-003 3.6411540e-002 -1.4783970e-002 +v -3.5199130e-002 3.3835210e-002 -2.0508290e-002 +v -2.6075450e-002 3.5918600e-002 -1.9405170e-002 +v 8.2740600e-003 3.5645200e-002 -1.2648700e-002 +v 1.0473640e-002 3.4742600e-002 -1.1262870e-002 +v 1.4055380e-002 3.4483430e-002 -1.4495730e-002 +v -3.6970520e-002 3.5680360e-002 -1.5007790e-002 +v -2.4719500e-003 3.8408770e-002 -1.4159030e-002 +v -3.9481890e-002 3.3618220e-002 -2.3612470e-002 +v -4.1091510e-002 3.4006000e-002 -1.1997540e-002 +v -3.1589810e-002 3.5592330e-002 -1.9204150e-002 +v -2.0086310e-002 3.8064450e-002 -1.7220790e-002 +v -1.1113250e-002 3.8290290e-002 -1.5646360e-002 +v 4.4522600e-003 3.7705190e-002 -1.2957650e-002 +v 1.5870480e-002 3.4416230e-002 -2.9666500e-003 +v -4.7872000e-002 3.4136300e-002 -1.5418250e-002 +v -4.7521640e-002 3.3622720e-002 -1.2804590e-002 +v -3.3407340e-002 3.7577040e-002 -1.6158190e-002 +v -2.7851470e-002 3.8404330e-002 -1.7210420e-002 +v -8.5065300e-003 3.9028950e-002 -1.3000800e-002 +v 6.4552500e-003 3.8165190e-002 -1.0164860e-002 +v 7.4147100e-003 3.4659190e-002 -3.0116800e-003 +v 1.1966200e-002 3.4335400e-002 -5.9571300e-003 +v 2.0414820e-002 3.5567580e-002 -3.7806900e-003 +v -1.9288780e-002 3.8762570e-002 -1.4202620e-002 +v -1.1390100e-003 3.9176760e-002 -1.0381370e-002 +v 3.8149200e-003 3.9024470e-002 -8.0827300e-003 +v 7.5208200e-003 3.6733400e-002 -6.7614300e-003 +v 1.9968120e-002 3.4843990e-002 -1.8984900e-003 +v -4.5058400e-002 3.3600490e-002 -1.2527510e-002 +v -3.0754850e-002 3.8639810e-002 -1.4050770e-002 +v -5.1499810e-002 3.3729110e-002 -1.2082510e-002 +v -2.3756860e-002 3.8585750e-002 -1.1093270e-002 +v 3.9734700e-003 3.8208550e-002 -3.7963500e-003 +v 9.5485400e-003 3.4232620e-002 1.7162000e-003 +v 2.9086550e-002 3.5799990e-002 3.5630900e-003 +v -5.5965200e-002 3.3529910e-002 -9.1246200e-003 +v -1.9523510e-002 3.8505210e-002 -4.5434500e-003 +v 1.6363470e-002 3.4394790e-002 2.2948600e-003 +v 2.1324740e-002 3.4624040e-002 5.6444000e-003 +v -3.9670300e-002 3.6174000e-002 -7.3397700e-003 +v -1.4251730e-002 3.8648030e-002 -4.3030400e-003 +v 2.3262300e-003 3.5348200e-002 2.3246000e-003 +v 1.4014300e-002 3.5703800e-002 3.8878900e-003 +v 1.5322800e-002 3.6239700e-002 3.6628500e-003 +v 2.3753130e-002 3.4670710e-002 3.9885300e-003 +v 3.2369180e-002 3.5816010e-002 7.0246300e-003 +v -6.3715900e-002 3.3776930e-002 -8.0065600e-003 +v -6.4266880e-002 3.3562500e-002 -5.1253200e-003 +v -3.8066600e-002 3.8518600e-002 -7.3079600e-003 +v -9.4308800e-003 3.8887690e-002 -7.4848700e-003 +v 3.9677800e-003 3.4200210e-002 4.9754500e-003 +v 9.4292600e-003 3.6030400e-002 4.5275100e-003 +v 2.9859020e-002 3.4980130e-002 9.8349300e-003 +v -5.2730060e-002 3.3497900e-002 -1.8117500e-003 +v -4.1271000e-002 3.3855400e-002 -1.8800800e-003 +v -3.1105000e-003 3.8946190e-002 -2.7793900e-003 +v 6.2194100e-003 3.5134100e-002 6.5492800e-003 +v 2.0897900e-002 3.5937100e-002 8.7849000e-003 +v 3.5606010e-002 3.6526640e-002 9.8155300e-003 +v -6.7078340e-002 3.3840100e-002 -6.1688300e-003 +v -8.1140000e-004 3.7424170e-002 4.7721500e-003 +v 3.1492300e-003 3.4125310e-002 1.1762220e-002 +v 4.9172000e-003 3.3997100e-002 9.1666100e-003 +v 2.5130800e-002 3.4546910e-002 1.1012580e-002 +v 2.8248620e-002 3.5046370e-002 1.6016700e-002 +v -6.7032970e-002 6.5145960e-002 2.7292860e-002 +v -4.6380170e-002 3.3605230e-002 -8.9435000e-004 +v -3.3163400e-002 3.8195400e-002 -5.2520000e-004 +v -3.2074200e-002 3.8323400e-002 -4.2109000e-004 +v -2.1692690e-002 3.8266010e-002 4.5100800e-003 +v 2.3930750e-002 3.4816710e-002 1.7739160e-002 +v 4.2719120e-002 3.9977070e-002 8.9321600e-003 +v -5.8604080e-002 3.3462230e-002 -2.1667000e-004 +v -3.7314400e-002 3.3633000e-002 4.5724700e-003 +v -1.0423990e-002 3.8488570e-002 6.2292700e-003 +v -1.3896900e-003 3.8651360e-002 2.3966500e-003 +v -3.0845000e-004 3.5462480e-002 8.2607200e-003 +v -1.4089000e-003 3.6193080e-002 1.2944550e-002 +v 2.2252900e-002 3.6583300e-002 1.3979700e-002 +v -7.0961830e-002 3.4345730e-002 -7.8374000e-004 +v -6.9066180e-002 3.3717630e-002 -1.9761000e-004 +v -6.4825640e-002 3.3505860e-002 2.8222500e-003 +v -4.7059660e-002 3.3501860e-002 3.5646400e-003 +v -3.6953800e-003 3.8172780e-002 1.3046800e-002 +v 3.3475850e-002 3.6447340e-002 1.6266960e-002 +v 3.7249610e-002 3.7509920e-002 1.4815820e-002 +v -4.5675940e-002 3.3703640e-002 6.4300300e-003 +v -3.8639270e-002 3.3937310e-002 8.5506500e-003 +v -9.5064100e-003 3.8352640e-002 1.5570660e-002 +v 2.1499800e-002 3.5807100e-002 1.8169400e-002 +v 4.4876460e-002 4.1230990e-002 1.6008250e-002 +v -7.2474010e-002 3.6255930e-002 1.5532600e-003 +v -7.1498130e-002 3.4452970e-002 4.2026500e-003 +v -2.7790900e-002 3.8062900e-002 7.9376100e-003 +v -1.6556410e-002 3.8286470e-002 1.0215790e-002 +v 8.1043500e-003 3.4842900e-002 1.8134600e-002 +v 2.3589460e-002 3.5890600e-002 2.5337690e-002 +v 4.1261350e-002 4.0585070e-002 2.0751930e-002 +v -5.1350870e-002 3.3645700e-002 8.0329400e-003 +v -4.7104300e-002 3.5549500e-002 8.0803900e-003 +v -1.4103500e-003 3.6999940e-002 1.6982030e-002 +v 9.1714000e-004 3.4803380e-002 1.5634690e-002 +v 2.8887900e-003 3.4636250e-002 1.8849770e-002 +v 1.3279200e-002 3.4379500e-002 2.1423700e-002 +v 1.4322700e-002 3.4425500e-002 2.1593200e-002 +v 1.7490100e-002 3.4646300e-002 2.2040900e-002 +v 2.9868460e-002 3.6248820e-002 1.9872200e-002 +v -3.9222000e-002 3.6326200e-002 1.0789900e-002 +v -3.0307100e-002 3.3995400e-002 1.4706400e-002 +v 2.0081230e-002 3.5172700e-002 2.8018770e-002 +v 2.4989010e-002 3.8104580e-002 2.9429570e-002 +v 3.3584130e-002 3.8303930e-002 2.2928670e-002 +v 4.9015720e-002 4.4573630e-002 2.0659450e-002 +v -5.8225970e-002 6.6607310e-002 3.5050280e-002 +v -6.7330830e-002 3.3846440e-002 8.7266300e-003 +v -3.4692330e-002 3.3828710e-002 1.2438580e-002 +v -2.9803200e-002 3.4287000e-002 1.6353100e-002 +v 1.7023800e-003 3.6310890e-002 2.1179600e-002 +v 4.5137020e-002 4.4625440e-002 2.5516510e-002 +v -6.8876490e-002 1.1022176e-001 3.9004630e-002 +v -5.7680560e-002 3.3622690e-002 1.4040310e-002 +v -5.3210500e-002 3.3585300e-002 1.3987000e-002 +v -3.5711600e-002 3.5891600e-002 1.5502900e-002 +v -2.8861500e-002 3.5396700e-002 1.7350000e-002 +v -2.6580500e-002 3.7742600e-002 1.5705300e-002 +v -1.0974400e-003 3.8147840e-002 2.0427010e-002 +v 3.5047710e-002 4.0973940e-002 2.6970390e-002 +v -6.9685460e-002 3.4478780e-002 9.7984300e-003 +v -5.4019000e-002 3.3309900e-002 1.5848000e-002 +v 4.4816800e-003 3.7117830e-002 2.4755300e-002 +v 6.6605500e-003 3.5204730e-002 2.4315930e-002 +v 8.3833000e-003 3.4748700e-002 2.4057310e-002 +v 3.8883100e-002 4.1032980e-002 2.4976570e-002 +v -2.6441900e-003 3.8727070e-002 2.5131260e-002 +v 3.2222300e-003 3.8708440e-002 2.5898750e-002 +v 9.0016500e-003 3.6890930e-002 2.8482190e-002 +v 1.3196980e-002 3.4835790e-002 3.1630980e-002 +v 2.2291600e-002 3.7053310e-002 3.3101020e-002 +v 2.8948390e-002 3.9160020e-002 2.7234810e-002 +v -8.7773470e-002 1.1181412e-001 3.7144310e-002 +v -1.7870490e-002 3.8203890e-002 2.0243220e-002 +v 1.0087420e-002 3.7047690e-002 3.0822500e-002 +v 4.2296550e-002 4.5435770e-002 2.9040920e-002 +v -8.4341340e-002 1.1388013e-001 4.6513480e-002 +v -7.3795710e-002 1.0895629e-001 3.9217250e-002 +v -5.1243340e-002 6.4239200e-002 3.4258040e-002 +v -6.1777390e-002 3.4017860e-002 1.6900580e-002 +v -3.6665100e-002 3.5304200e-002 2.3032000e-002 +v -1.4930180e-002 3.8643510e-002 2.9378330e-002 +v -8.0894520e-002 1.0967225e-001 3.7910230e-002 +v -8.9822620e-002 1.1387199e-001 3.2845310e-002 +v -6.9655510e-002 6.8728370e-002 3.1127880e-002 +v -7.8449800e-002 1.0988832e-001 4.2517920e-002 +v -7.5824140e-002 1.0794900e-001 3.7128750e-002 +v -5.5740630e-002 3.4128050e-002 2.6674360e-002 +v -3.8279600e-002 3.5429000e-002 2.4380600e-002 +v -3.5283340e-002 3.4179780e-002 2.2744860e-002 +v -2.5798070e-002 3.7865000e-002 1.9981460e-002 +v 6.9064300e-003 3.9004270e-002 2.9548510e-002 +v 1.5448990e-002 3.4852440e-002 3.6984890e-002 +v 1.9128230e-002 3.5640640e-002 3.6642280e-002 +v -6.3664970e-002 6.6047840e-002 3.1828080e-002 +v 3.9604800e-002 4.4939530e-002 2.9992360e-002 +v -8.0294310e-002 7.1702430e-002 1.5995300e-002 +v -5.4185430e-002 6.7322700e-002 3.6935610e-002 +v -7.3110210e-002 1.4847168e-001 -2.8748470e-002 +v -5.8999980e-002 7.3751550e-002 4.1197080e-002 +v -5.9520730e-002 6.1040260e-002 -2.3753800e-003 +v -6.2791800e-002 3.4596760e-002 2.3505640e-002 +v -4.1895500e-002 3.3668300e-002 2.6940000e-002 +v 8.9808200e-003 3.7639400e-002 3.3900800e-002 +v 8.5287800e-003 3.4888000e-002 3.6265100e-002 +v -8.9803890e-002 1.1498106e-001 4.2771650e-002 +v -6.5545420e-002 7.4430370e-002 3.9168070e-002 +v -6.4644190e-002 6.1723230e-002 2.2552000e-004 +v 5.2496900e-003 3.9507100e-002 3.3271200e-002 +v 2.0250320e-002 3.7033170e-002 3.9327190e-002 +v -6.7006400e-002 6.3292870e-002 -1.7493900e-003 +v -6.4479770e-002 6.0651470e-002 4.2343200e-003 +v -5.7219630e-002 5.7000470e-002 4.9175800e-003 +v -7.4362810e-002 7.2437050e-002 3.1430040e-002 +v -6.2019000e-002 3.4343180e-002 3.1883280e-002 +v -4.6870820e-002 3.4444130e-002 3.0513130e-002 +v -2.0814280e-002 3.8400960e-002 2.7868430e-002 +v 1.6439350e-002 3.5635110e-002 4.1281040e-002 +v -6.9087160e-002 1.1205014e-001 4.5320060e-002 +v -7.1811570e-002 1.4861318e-001 -3.4639490e-002 +v -6.9538770e-002 6.3074750e-002 3.5758200e-003 +v -8.4863890e-002 7.8392100e-002 1.6462010e-002 +v -9.1188780e-002 1.1588893e-001 2.4705540e-002 +v -8.8827760e-002 1.1359169e-001 2.3873640e-002 +v -7.1302830e-002 1.1325363e-001 4.9444530e-002 +v -5.4876950e-002 7.0282330e-002 3.8828200e-002 +v -7.7208880e-002 1.0715887e-001 3.4738290e-002 +v -6.1241780e-002 5.9007440e-002 8.0916600e-003 +v -6.5885650e-002 3.5025080e-002 2.9416520e-002 +v -5.7889430e-002 3.4419570e-002 3.6265760e-002 +v -5.1847710e-002 3.4470270e-002 3.4635180e-002 +v -3.4834600e-002 3.4721400e-002 3.4578200e-002 +v -3.0984700e-002 3.8191900e-002 3.2390100e-002 +v -4.9613100e-003 3.9364900e-002 3.6702200e-002 +v 1.2224170e-002 3.5177480e-002 4.2620580e-002 +v -7.4898220e-002 1.1458863e-001 5.0776480e-002 +v -8.0469100e-002 1.1357963e-001 4.6643440e-002 +v -7.4107560e-002 6.9586030e-002 2.7264400e-002 +v -7.9002620e-002 7.6339320e-002 2.9248090e-002 +v -6.5297080e-002 3.4778970e-002 3.3744340e-002 +v -3.3656400e-002 3.4344100e-002 3.6914100e-002 +v 4.9318500e-003 3.4814800e-002 4.3462110e-002 +v 1.1347440e-002 3.6213020e-002 4.4652280e-002 +v -6.0569260e-002 7.1154540e-002 3.8653760e-002 +v -8.8979470e-002 1.1450869e-001 2.8446030e-002 +v -6.8543520e-002 6.1090480e-002 1.0557760e-002 +v -8.2710960e-002 1.1648975e-001 4.8518530e-002 +v -4.1913210e-002 3.4467720e-002 3.3200040e-002 +v -1.1289800e-002 3.9529200e-002 3.8844100e-002 +v -2.8261900e-003 3.4885340e-002 4.5611410e-002 +v -6.4561210e-002 5.9484140e-002 1.3061680e-002 +v -5.8581440e-002 5.7801460e-002 1.3429540e-002 +v -2.3320000e-002 3.9169500e-002 3.8473300e-002 +v -1.8159900e-002 3.9322300e-002 3.9402900e-002 +v -1.6471400e-002 3.4812800e-002 4.3684700e-002 +v 3.2906600e-003 3.5833470e-002 4.6024610e-002 +v -8.5229630e-002 1.1200712e-001 3.0416940e-002 +v -8.5644730e-002 1.1131719e-001 3.4234780e-002 +v -7.4530360e-002 6.6680690e-002 4.6953300e-003 +v -7.1112970e-002 6.2751470e-002 8.7995500e-003 +v -6.1149380e-002 5.8834410e-002 1.6539440e-002 +v -4.6912270e-002 3.4627180e-002 3.9739710e-002 +v -4.0760350e-002 3.4668230e-002 4.0492530e-002 +v -2.6323100e-002 3.4658000e-002 4.3473500e-002 +v -3.1836600e-003 3.6229910e-002 4.7873100e-002 +v -7.9940490e-002 1.0916678e-001 3.4119800e-002 +v -5.9712170e-002 6.3165280e-002 2.8789180e-002 +v -5.1176600e-002 6.8061880e-002 3.7398330e-002 +v -5.0126580e-002 7.0933150e-002 3.9481010e-002 +v -7.2790130e-002 6.4399880e-002 1.5205950e-002 +v -6.8511230e-002 6.1214650e-002 1.5354080e-002 +v -3.9343210e-002 3.5440180e-002 4.2492560e-002 +v -8.1305900e-003 3.5008350e-002 4.7502400e-002 +v -6.6080670e-002 7.0202740e-002 3.5552860e-002 +v -6.8602600e-002 1.4992277e-001 -4.0051350e-002 +v -7.1722100e-002 6.7023040e-002 2.4959750e-002 +v -7.5115010e-002 6.6557040e-002 1.0244090e-002 +v -6.5146650e-002 3.5945650e-002 3.9775080e-002 +v -3.6898600e-002 3.5924640e-002 4.4794170e-002 +v -9.4780400e-003 3.5977600e-002 4.9434210e-002 +v -8.5175960e-002 1.1706809e-001 4.8139420e-002 +v -6.3366400e-002 6.2790260e-002 2.5647610e-002 +v -6.6633330e-002 6.1001700e-002 1.8101240e-002 +v -5.8167590e-002 5.9985190e-002 2.2606060e-002 +v -6.4212210e-002 3.4992560e-002 3.9401920e-002 +v -5.3425790e-002 3.4560020e-002 4.2782420e-002 +v -1.8031490e-002 3.4859970e-002 4.9264760e-002 +v -1.1440410e-002 3.7640770e-002 5.0275730e-002 +v -7.5165320e-002 1.1154286e-001 4.6707180e-002 +v -7.7168390e-002 6.9826450e-002 5.0605600e-003 +v -7.2801360e-002 6.4382590e-002 1.2089080e-002 +v -7.8022000e-002 7.0995160e-002 2.1322150e-002 +v -6.1263370e-002 3.4690410e-002 4.1994900e-002 +v -5.4403750e-002 3.5007310e-002 4.4874590e-002 +v -4.5754280e-002 3.5206980e-002 4.3518120e-002 +v -3.3832440e-002 3.5168820e-002 4.6957890e-002 +v -2.8657630e-002 3.5083380e-002 5.0549440e-002 +v -1.5306440e-002 3.5246410e-002 5.0133810e-002 +v -6.5283650e-002 1.5592447e-001 -4.9865930e-002 +v -6.6467860e-002 1.4871539e-001 -3.1579300e-002 +v -6.2095980e-002 1.6388324e-001 -5.8385930e-002 +v -6.3274890e-002 1.5245731e-001 -3.2221730e-002 +v -4.3755720e-002 1.4773408e-001 -2.1433200e-003 +v -6.5696940e-002 1.4561631e-001 -1.8974710e-002 +v -6.6713650e-002 1.5358824e-001 -4.9097100e-002 +v -1.0482810e-002 1.6668287e-001 -2.1746090e-002 +v -6.2744510e-002 1.6397531e-001 -5.9398280e-002 +v -7.0413230e-002 1.4129200e-001 -8.4590800e-003 +v -6.1530380e-002 1.4037628e-001 -6.2734700e-003 +v -1.1452460e-002 1.7220633e-001 -2.6844980e-002 +v -6.3731140e-002 1.6577037e-001 -6.0103610e-002 +v -2.8218820e-002 1.5758144e-001 -1.0999490e-002 +v -1.8471270e-002 1.5967716e-001 -1.1169510e-002 +v -6.6700710e-002 1.5236775e-001 -4.5266390e-002 +v -4.9896410e-002 1.4670859e-001 -1.8614200e-003 +v -3.1449640e-002 1.5460463e-001 -7.6802300e-003 +v -6.7447660e-002 1.5507675e-001 -5.1594250e-002 +v -1.0906650e-002 1.7649301e-001 -2.9246300e-002 +v -7.2083600e-002 1.4965550e-001 -3.9265860e-002 +v -6.4230830e-002 1.4877806e-001 -2.5899710e-002 +v -6.3056640e-002 1.4341650e-001 -7.4907700e-003 +v -5.3043350e-002 1.4092550e-001 -4.7408000e-004 +v -3.9269410e-002 1.5205232e-001 -6.6203800e-003 +v -6.4796930e-002 1.5210615e-001 -3.6185520e-002 +v -6.4400320e-002 1.5834400e-001 -5.4256370e-002 +v -6.6178120e-002 1.4218350e-001 -9.3766300e-003 +v -6.7751430e-002 1.4605207e-001 -2.3333300e-002 +v -6.4731580e-002 1.5410067e-001 -4.0464820e-002 +v -2.4265590e-002 1.5687690e-001 -7.8509300e-003 +v -1.5723180e-002 1.6312344e-001 -1.6396570e-002 +v -7.0887660e-002 1.4404618e-001 -1.4908480e-002 +v -4.4341830e-002 1.5113809e-001 -5.6859800e-003 +v -6.2896810e-002 1.4694778e-001 -1.3098620e-002 +v -6.3755400e-002 1.4428875e-001 -1.1395730e-002 +v -6.8214560e-002 1.4390932e-001 -1.4984170e-002 +v -5.0271440e-002 1.4336563e-001 1.5153000e-003 +v -2.8535590e-002 1.6208479e-001 -1.4786030e-002 +v -6.5810700e-002 1.4359119e-001 -1.2585380e-002 +v -5.6179200e-002 1.3774406e-001 -4.0674300e-003 +v -6.8866880e-002 1.4723338e-001 -2.8739870e-002 +v -6.0965420e-002 1.7002113e-001 -6.0839390e-002 +v -1.3895490e-002 1.6787168e-001 -2.1897230e-002 +v -6.9413000e-002 1.5121847e-001 -4.4538540e-002 +v -5.5039800e-002 5.7309700e-002 1.6990900e-002 +f 1069 1647 1578 +f 1058 909 939 +f 421 1176 238 +f 1055 1101 1042 +f 238 1059 1126 +f 1254 30 1261 +f 1065 1071 1 +f 1037 1130 1120 +f 1570 2381 1585 +f 2434 2502 2473 +f 1632 1654 1646 +f 1144 1166 669 +f 1202 1440 305 +f 1071 1090 1 +f 1555 1570 1584 +f 1184 1174 404 +f 65 432 12 +f 1032 1085 574 +f 1789 2207 2223 +f 1154 1118 1184 +f 1141 1086 1154 +f 99 1117 342 +f 404 1174 419 +f 489 2000 1998 +f 1118 1174 1184 +f 1196 403 136 +f 1495 717 1490 +f 1804 402 1207 +f 2272 1398 891 +f 1100 1002 804 +f 1596 1595 2381 +f 208 420 1207 +f 402 208 1207 +f 1455 1935 1925 +f 1176 1059 238 +f 1150 1040 348 +f 1957 1537 2051 +f 1124 1189 939 +f 1804 1207 1823 +f 1381 1300 1109 +f 383 384 1182 +f 1085 1086 1141 +f 1040 1046 132 +f 220 1495 1188 +f 420 261 1207 +f 261 420 1065 +f 1055 1133 1101 +f 1054 421 403 +f 182 1109 2 +f 1181 1207 320 +f 545 1570 1561 +f 35 342 432 +f 1024 574 1141 +f 432 342 12 +f 1489 1081 1547 +f 1181 320 1805 +f 1516 1683 1507 +f 357 1117 1047 +f 1561 1570 1555 +f 1090 1196 1206 +f 1047 1203 1051 +f 1165 202 1121 +f 1099 341 301 +f 1174 240 419 +f 922 921 833 +f 1121 1080 385 +f 815 21 1183 +f 35 99 342 +f 1083 398 262 +f 106 94 1317 +f 94 292 1317 +f 292 95 1317 +f 940 1039 1033 +f 1300 1306 433 +f 21 212 471 +f 1120 1131 1037 +f 833 921 688 +f 1117 357 342 +f 106 271 94 +f 386 227 1375 +f 1130 1044 1053 +f 419 240 219 +f 1255 1244 32 +f 1557 1081 1489 +f 2062 2120 2109 +f 2034 2110 430 +f 23 315 1111 +f 291 94 271 +f 291 292 94 +f 50 386 95 +f 964 734 665 +f 1616 1585 1611 +f 445 1084 402 +f 574 1085 1141 +f 1654 341 1653 +f 220 1188 1640 +f 342 69 12 +f 417 261 328 +f 292 50 95 +f 204 227 386 +f 50 204 386 +f 1276 1471 1311 +f 1206 1196 136 +f 1033 1055 1042 +f 1037 1044 1130 +f 1180 320 417 +f 1121 202 1080 +f 325 203 271 +f 291 76 292 +f 292 237 50 +f 2159 1696 1767 +f 583 929 850 +f 1584 1585 1616 +f 1495 1490 1188 +f 1557 1489 1660 +f 1078 1069 1494 +f 1972 1992 1971 +f 183 1226 2000 +f 325 429 203 +f 292 76 237 +f 1152 227 1143 +f 1488 1412 1489 +f 1638 1646 1653 +f 1947 1869 2468 +f 203 306 291 +f 306 76 291 +f 237 248 50 +f 204 1143 227 +f 2395 14 429 +f 1502 881 2500 +f 1 1090 202 +f 1652 1653 1099 +f 2117 1863 2496 +f 50 248 204 +f 160 792 994 +f 884 888 857 +f 544 2117 2496 +f 1090 1206 202 +f 2463 879 2492 +f 429 306 203 +f 498 188 418 +f 865 884 857 +f 994 998 1014 +f 884 897 888 +f 1795 948 1802 +f 208 1035 1071 +f 1065 1 1066 +f 377 435 1377 +f 304 429 14 +f 304 306 429 +f 73 60 74 +f 248 592 204 +f 846 2264 829 +f 897 912 906 +f 1004 991 992 +f 1422 1421 1233 +f 980 10 303 +f 1058 922 909 +f 2436 2449 2418 +f 394 435 377 +f 435 475 446 +f 475 474 446 +f 336 337 361 +f 338 235 372 +f 624 148 129 +f 812 306 596 +f 1726 992 1019 +f 945 1514 1511 +f 1069 1627 1628 +f 1812 1823 1181 +f 1165 1121 169 +f 447 475 435 +f 2487 2458 901 +f 42 59 46 +f 401 7 187 +f 1010 970 797 +f 1513 220 1640 +f 2474 2491 2462 +f 594 307 1014 +f 398 1513 1640 +f 307 594 1026 +f 545 2381 1570 +f 403 421 238 +f 445 402 127 +f 1611 1631 1616 +f 1805 1180 1148 +f 394 447 435 +f 2341 2413 2376 +f 75 74 60 +f 541 47 42 +f 47 59 42 +f 541 42 28 +f 917 931 1103 +f 897 906 883 +f 2484 2068 779 +f 888 883 857 +f 261 1065 328 +f 363 1307 349 +f 377 363 394 +f 444 747 464 +f 323 338 362 +f 92 116 74 +f 592 634 97 +f 982 1027 1004 +f 1020 982 1004 +f 1084 1054 1035 +f 208 402 1084 +f 421 1119 1176 +f 1207 1181 1823 +f 1179 1187 1160 +f 263 296 1343 +f 1298 296 1307 +f 1307 296 349 +f 405 363 349 +f 405 394 363 +f 405 447 394 +f 362 372 384 +f 338 372 362 +f 983 1004 987 +f 122 134 139 +f 415 440 414 +f 75 92 74 +f 226 186 246 +f 796 787 700 +f 1119 1059 1176 +f 122 114 91 +f 624 129 116 +f 641 558 631 +f 1311 1318 1487 +f 100 1162 1170 +f 1653 341 1099 +f 1316 1983 273 +f 263 277 296 +f 296 358 349 +f 436 447 405 +f 109 554 570 +f 504 1385 2501 +f 115 122 91 +f 2068 2460 779 +f 43 777 163 +f 378 405 349 +f 358 378 349 +f 448 447 436 +f 448 476 447 +f 78 77 108 +f 75 60 47 +f 1764 2481 1795 +f 717 714 1512 +f 1490 717 1501 +f 238 1126 168 +f 1878 1866 826 +f 2025 2360 2367 +f 251 278 263 +f 278 277 263 +f 277 318 296 +f 296 318 358 +f 318 350 358 +f 378 436 405 +f 384 372 1182 +f 454 440 415 +f 987 1004 992 +f 493 476 448 +f 323 788 338 +f 403 238 136 +f 1565 1503 1474 +f 297 277 278 +f 297 318 277 +f 358 350 378 +f 378 388 436 +f 476 493 500 +f 73 105 60 +f 323 337 312 +f 953 1573 2358 +f 142 161 119 +f 454 443 440 +f 1862 1871 1405 +f 297 319 318 +f 560 47 541 +f 170 1323 111 +f 357 1047 1050 +f 1119 98 1059 +f 1838 1877 1900 +f 2359 230 251 +f 350 364 378 +f 449 448 436 +f 449 493 448 +f 185 186 226 +f 443 469 479 +f 874 165 2480 +f 463 444 464 +f 64 105 91 +f 1182 440 1129 +f 1958 1651 2502 +f 1238 2034 191 +f 251 279 278 +f 278 279 297 +f 364 388 378 +f 483 493 449 +f 134 148 139 +f 244 268 259 +f 910 942 930 +f 105 115 91 +f 24 30 18 +f 1132 487 1059 +f 1869 1947 2021 +f 2497 2494 2463 +f 2359 2385 230 +f 230 280 251 +f 251 280 279 +f 279 308 297 +f 297 308 319 +f 319 364 318 +f 364 350 318 +f 388 395 436 +f 436 395 449 +f 493 472 500 +f 122 129 134 +f 125 142 124 +f 373 400 393 +f 24 557 30 +f 2264 2278 2251 +f 1261 30 1269 +f 1730 1862 1877 +f 252 280 230 +f 343 364 319 +f 364 343 388 +f 63 64 91 +f 399 393 416 +f 416 444 463 +f 162 189 142 +f 768 373 326 +f 189 661 177 +f 189 199 661 +f 847 887 864 +f 533 747 444 +f 1744 1022 1418 +f 1170 524 729 +f 121 1342 128 +f 1236 1244 26 +f 280 281 279 +f 281 308 279 +f 343 319 308 +f 343 365 388 +f 388 365 395 +f 365 406 395 +f 406 449 395 +f 483 477 493 +f 477 491 472 +f 493 477 472 +f 78 109 77 +f 166 174 196 +f 481 150 814 +f 63 59 64 +f 326 373 393 +f 643 260 43 +f 230 253 252 +f 449 441 483 +f 441 477 483 +f 415 416 463 +f 226 246 245 +f 464 470 454 +f 323 362 337 +f 52 37 1283 +f 253 281 252 +f 281 280 252 +f 309 308 281 +f 330 343 308 +f 366 365 343 +f 441 449 406 +f 464 814 15 +f 883 906 887 +f 337 362 371 +f 479 498 290 +f 247 746 1003 +f 25 37 557 +f 640 930 669 +f 2486 2499 2459 +f 309 330 308 +f 343 330 366 +f 441 437 477 +f 290 498 418 +f 124 119 108 +f 77 124 108 +f 589 125 109 +f 570 589 109 +f 125 162 142 +f 1045 433 1034 +f 1207 261 320 +f 2004 2474 2495 +f 1215 1228 2285 +f 365 396 406 +f 396 422 406 +f 422 437 441 +f 406 422 441 +f 59 47 60 +f 51 78 66 +f 361 371 383 +f 196 215 214 +f 463 454 415 +f 27 41 535 +f 53 1283 37 +f 84 1299 1283 +f 1805 320 1180 +f 254 253 222 +f 254 281 253 +f 309 366 330 +f 396 365 366 +f 456 477 437 +f 484 491 477 +f 2480 2485 2493 +f 418 188 187 +f 53 85 1283 +f 85 84 1283 +f 420 1071 1065 +f 264 281 254 +f 298 309 281 +f 368 366 367 +f 368 396 366 +f 1639 1564 1139 +f 560 48 47 +f 82 471 212 +f 25 38 37 +f 202 1206 1080 +f 264 298 281 +f 298 331 309 +f 309 331 366 +f 331 367 366 +f 396 368 422 +f 422 456 437 +f 491 1192 313 +f 1699 2064 1710 +f 462 443 479 +f 371 362 384 +f 2502 2476 2464 +f 371 384 383 +f 21 732 212 +f 1571 1629 1627 +f 38 39 53 +f 37 38 53 +f 39 85 53 +f 1173 1184 404 +f 1006 2142 1674 +f 201 255 254 +f 255 264 254 +f 368 407 422 +f 450 456 422 +f 450 484 456 +f 456 484 477 +f 314 1192 491 +f 2027 2501 2489 +f 2475 2471 2488 +f 551 492 732 +f 464 481 814 +f 1081 1494 1547 +f 201 231 255 +f 407 450 422 +f 484 494 491 +f 494 327 491 +f 327 314 491 +f 876 797 995 +f 847 856 829 +f 125 143 162 +f 134 129 148 +f 1564 1571 1627 +f 417 320 261 +f 328 1065 1066 +f 170 156 201 +f 156 231 201 +f 231 282 255 +f 282 264 255 +f 450 485 484 +f 484 485 494 +f 2463 2486 2479 +f 159 185 167 +f 492 68 212 +f 732 492 212 +f 68 82 212 +f 1311 1471 1296 +f 101 156 111 +f 332 264 282 +f 332 298 264 +f 332 331 298 +f 331 332 367 +f 407 423 450 +f 450 423 485 +f 804 1002 1443 +f 2484 779 946 +f 689 443 462 +f 440 689 1129 +f 166 167 174 +f 38 31 39 +f 112 145 101 +f 101 145 156 +f 156 256 231 +f 332 423 368 +f 367 332 368 +f 368 423 407 +f 946 779 920 +f 1432 1261 1449 +f 461 478 453 +f 464 15 470 +f 31 54 39 +f 39 54 85 +f 86 101 85 +f 145 210 156 +f 282 283 332 +f 283 369 332 +f 369 423 332 +f 423 408 485 +f 854 876 965 +f 78 108 66 +f 440 443 689 +f 374 2465 961 +f 929 519 979 +f 54 86 85 +f 156 241 256 +f 256 282 231 +f 256 283 282 +f 389 423 369 +f 389 408 423 +f 408 457 485 +f 457 49 485 +f 485 49 494 +f 494 135 327 +f 175 83 314 +f 1167 1140 1483 +f 196 174 215 +f 697 16 68 +f 1038 82 16 +f 140 117 141 +f 1654 1653 1646 +f 1234 54 31 +f 86 112 101 +f 210 241 156 +f 923 917 911 +f 697 34 16 +f 145 193 210 +f 256 265 283 +f 265 310 283 +f 283 310 369 +f 310 344 369 +f 344 370 369 +f 370 389 369 +f 409 408 389 +f 409 466 408 +f 466 457 408 +f 466 49 457 +f 49 135 494 +f 174 225 215 +f 1014 766 602 +f 826 2220 2215 +f 1078 1494 1081 +f 1273 70 86 +f 120 112 86 +f 146 145 112 +f 146 193 145 +f 265 256 241 +f 223 265 241 +f 486 49 466 +f 175 327 135 +f 105 122 115 +f 480 15 681 +f 225 234 215 +f 731 34 697 +f 86 54 1273 +f 70 120 86 +f 193 241 210 +f 299 310 265 +f 310 333 344 +f 344 351 370 +f 424 466 409 +f 135 49 175 +f 214 215 234 +f 48 75 47 +f 34 9 1038 +f 16 34 1038 +f 203 291 271 +f 9 558 754 +f 1195 397 1120 +f 120 146 112 +f 146 194 193 +f 266 265 223 +f 266 299 265 +f 299 333 310 +f 333 351 344 +f 382 383 392 +f 399 416 415 +f 266 333 299 +f 351 352 370 +f 424 486 466 +f 487 175 49 +f 7 117 187 +f 1182 414 440 +f 41 42 46 +f 290 289 497 +f 2502 2464 2473 +f 372 399 414 +f 1570 1585 1584 +f 1066 1 1165 +f 1 202 1165 +f 120 70 102 +f 157 146 120 +f 194 223 193 +f 223 241 193 +f 352 379 370 +f 370 379 389 +f 410 409 389 +f 2478 1409 1958 +f 806 945 1002 +f 157 194 146 +f 267 266 223 +f 267 333 266 +f 379 410 389 +f 410 438 409 +f 438 424 409 +f 190 205 143 +f 337 371 361 +f 2215 830 826 +f 1631 1646 1638 +f 102 157 120 +f 157 195 194 +f 195 223 194 +f 195 211 223 +f 223 211 267 +f 267 300 333 +f 300 334 351 +f 333 300 351 +f 351 334 352 +f 410 411 438 +f 438 486 424 +f 487 49 486 +f 875 594 989 +f 108 581 66 +f 225 245 244 +f 312 336 335 +f 151 754 107 +f 274 1386 300 +f 352 334 379 +f 923 1729 1096 +f 244 245 268 +f 463 464 454 +f 414 399 415 +f 15 480 470 +f 1647 1069 1078 +f 909 922 833 +f 387 417 328 +f 133 157 102 +f 1314 133 102 +f 133 195 157 +f 1148 1179 1160 +f 1046 1167 182 +f 379 411 410 +f 792 339 229 +f 391 7 668 +f 185 226 174 +f 461 290 497 +f 2027 504 2501 +f 1196 1054 403 +f 728 1019 752 +f 2459 2483 2461 +f 1291 1264 55 +f 133 1356 195 +f 195 1356 211 +f 412 438 411 +f 4 486 438 +f 458 4 438 +f 4 487 486 +f 1720 1572 1771 +f 245 275 268 +f 1869 2021 2059 +f 235 399 372 +f 64 60 105 +f 836 2492 879 +f 1315 133 1314 +f 1331 1382 1356 +f 1310 926 1128 +f 7 1121 117 +f 119 161 611 +f 380 379 334 +f 379 380 411 +f 467 4 458 +f 495 487 4 +f 495 1126 487 +f 416 400 533 +f 479 469 498 +f 74 116 73 +f 478 461 497 +f 393 400 416 +f 61 1291 55 +f 505 1999 2474 +f 1999 2491 2474 +f 199 189 36 +f 1164 1165 169 +f 1179 387 249 +f 390 411 380 +f 411 390 412 +f 458 438 412 +f 495 168 1126 +f 480 469 470 +f 116 122 105 +f 418 187 140 +f 185 174 167 +f 166 148 167 +f 470 469 443 +f 40 55 32 +f 61 71 1291 +f 71 103 1291 +f 1184 1173 1154 +f 634 514 97 +f 425 458 412 +f 917 923 931 +f 2472 2489 853 +f 754 641 567 +f 44 567 1163 +f 454 470 443 +f 40 32 1249 +f 33 40 1249 +f 56 55 40 +f 56 61 55 +f 451 1265 439 +f 1180 417 1179 +f 1099 301 1077 +f 1189 1058 939 +f 1059 221 1132 +f 598 1074 1075 +f 412 426 425 +f 650 186 185 +f 234 244 259 +f 226 245 225 +f 1033 1042 1030 +f 2492 836 247 +f 7 169 1121 +f 1462 1322 1482 +f 425 467 458 +f 496 4 467 +f 1751 2468 2480 +f 290 418 140 +f 326 789 762 +f 142 177 161 +f 165 1751 2480 +f 87 103 71 +f 103 87 104 +f 1180 1179 1148 +f 417 387 1179 +f 2081 2060 2031 +f 1154 1173 1141 +f 181 131 197 +f 442 425 426 +f 614 144 143 +f 876 1010 797 +f 40 45 56 +f 56 45 61 +f 87 71 61 +f 1563 1437 1590 +f 1121 385 117 +f 1148 1160 1137 +f 1449 1459 1439 +f 1028 2462 929 +f 442 459 425 +f 459 467 425 +f 168 495 4 +f 496 168 4 +f 1763 1403 1444 +f 140 187 117 +f 244 234 225 +f 246 740 269 +f 372 414 1182 +f 40 547 45 +f 45 62 61 +f 62 87 61 +f 87 88 104 +f 1084 517 1054 +f 387 328 1064 +f 2467 2497 2485 +f 286 1363 302 +f 205 189 162 +f 290 140 289 +f 214 234 224 +f 393 399 809 +f 315 1131 397 +f 302 321 353 +f 1164 169 391 +f 427 459 442 +f 217 496 467 +f 217 168 496 +f 978 969 2074 +f 361 383 382 +f 269 276 245 +f 1440 11 305 +f 62 88 87 +f 328 1066 1064 +f 1066 1165 1164 +f 242 287 302 +f 1363 242 302 +f 287 321 302 +f 1179 249 1187 +f 983 1020 1004 +f 464 747 481 +f 788 323 276 +f 269 245 246 +f 88 89 1325 +f 171 172 242 +f 360 353 321 +f 360 1354 353 +f 1057 1064 1164 +f 2184 2188 2183 +f 460 459 451 +f 460 467 459 +f 149 168 217 +f 149 136 168 +f 116 129 122 +f 109 124 77 +f 159 167 148 +f 28 42 41 +f 57 88 62 +f 45 57 62 +f 1336 1325 89 +f 89 72 1336 +f 147 172 171 +f 172 258 242 +f 258 257 242 +f 257 287 242 +f 257 321 287 +f 345 360 321 +f 360 381 1354 +f 1069 938 1655 +f 387 473 249 +f 270 217 467 +f 130 136 149 +f 851 847 829 +f 983 987 975 +f 189 177 142 +f 88 72 89 +f 184 258 172 +f 257 288 321 +f 1265 451 459 +f 270 149 217 +f 226 225 174 +f 27 28 41 +f 109 125 124 +f 547 57 45 +f 57 58 88 +f 88 58 72 +f 2476 2484 2458 +f 147 184 172 +f 184 213 258 +f 258 243 257 +f 243 288 257 +f 345 321 288 +f 391 169 7 +f 468 460 451 +f 468 488 460 +f 270 467 460 +f 488 270 460 +f 1206 136 130 +f 481 793 150 +f 143 205 162 +f 142 119 124 +f 58 90 72 +f 90 128 72 +f 147 173 184 +f 173 213 184 +f 213 233 258 +f 258 233 243 +f 354 360 345 +f 354 381 360 +f 1026 991 307 +f 268 312 259 +f 1206 130 1080 +f 116 105 73 +f 139 148 166 +f 275 312 268 +f 188 401 187 +f 2479 2459 2461 +f 58 63 90 +f 1064 1066 1164 +f 1064 473 387 +f 288 311 345 +f 311 354 345 +f 996 994 307 +f 452 468 439 +f 452 478 468 +f 478 488 468 +f 141 130 149 +f 1564 1639 1563 +f 547 41 57 +f 2081 2107 2060 +f 382 381 354 +f 497 270 488 +f 289 149 270 +f 289 141 149 +f 114 122 139 +f 59 60 64 +f 275 323 312 +f 401 668 7 +f 41 46 57 +f 57 46 58 +f 1459 1345 1269 +f 1342 121 158 +f 166 173 158 +f 213 224 233 +f 233 259 243 +f 243 322 288 +f 322 311 288 +f 453 478 452 +f 497 289 270 +f 912 911 906 +f 276 323 275 +f 276 275 245 +f 46 63 58 +f 90 121 128 +f 173 214 213 +f 213 214 224 +f 259 322 243 +f 336 311 322 +f 336 354 311 +f 361 382 354 +f 1043 439 1290 +f 497 488 478 +f 385 130 141 +f 385 1080 130 +f 144 190 143 +f 535 41 547 +f 121 166 158 +f 335 336 322 +f 354 336 361 +f 2004 2481 1764 +f 698 439 1043 +f 289 140 141 +f 923 1096 931 +f 650 185 159 +f 46 59 63 +f 63 91 90 +f 90 114 121 +f 121 139 166 +f 173 196 214 +f 259 335 322 +f 2478 2502 2434 +f 312 337 336 +f 90 91 114 +f 114 139 121 +f 166 196 173 +f 224 234 233 +f 234 259 233 +f 259 312 335 +f 1124 916 1189 +f 542 541 530 +f 462 479 290 +f 269 783 276 +f 813 567 641 +f 276 783 788 +f 82 1038 1333 +f 816 701 703 +f 672 137 603 +f 625 635 624 +f 2457 2439 1973 +f 767 533 529 +f 2468 1869 2480 +f 662 190 639 +f 711 720 719 +f 630 639 614 +f 161 654 638 +f 781 991 982 +f 1227 31 516 +f 648 639 630 +f 630 614 590 +f 2098 544 1899 +f 578 579 586 +f 697 492 551 +f 529 533 400 +f 869 859 870 +f 1732 924 914 +f 1004 1027 991 +f 801 591 603 +f 636 676 651 +f 876 949 965 +f 2207 1789 1859 +f 76 739 237 +f 188 681 15 +f 578 604 599 +f 797 616 995 +f 510 2035 1365 +f 76 812 617 +f 617 739 76 +f 1468 93 1765 +f 596 546 812 +f 1457 1305 1477 +f 760 197 150 +f 671 773 765 +f 586 609 604 +f 591 700 632 +f 476 2312 474 +f 2084 2027 2489 +f 582 590 571 +f 1555 2449 1996 +f 674 546 596 +f 812 655 617 +f 161 177 661 +f 599 604 636 +f 700 787 576 +f 776 675 572 +f 776 674 675 +f 617 634 739 +f 591 632 649 +f 612 546 674 +f 617 655 634 +f 728 752 706 +f 571 2311 2305 +f 775 674 776 +f 775 612 674 +f 612 628 546 +f 546 628 812 +f 812 628 655 +f 620 630 615 +f 620 648 630 +f 667 653 646 +f 810 782 785 +f 150 197 814 +f 534 1517 2000 +f 702 572 2378 +f 748 776 572 +f 655 613 634 +f 911 917 905 +f 648 679 662 +f 727 771 713 +f 750 807 799 +f 639 190 144 +f 662 679 200 +f 702 748 572 +f 775 776 748 +f 628 718 655 +f 626 658 645 +f 791 778 790 +f 612 811 628 +f 613 514 634 +f 1380 1756 1673 +f 570 590 614 +f 720 741 719 +f 1074 795 835 +f 614 639 144 +f 612 775 811 +f 718 735 655 +f 655 735 613 +f 798 338 788 +f 636 652 676 +f 571 590 555 +f 528 730 687 +f 690 702 2312 +f 476 690 2312 +f 811 718 628 +f 721 778 727 +f 748 702 690 +f 735 686 613 +f 1517 2002 2127 +f 654 685 667 +f 569 588 606 +f 513 531 538 +f 538 549 548 +f 549 553 548 +f 550 588 549 +f 1903 869 870 +f 691 775 748 +f 691 600 775 +f 600 811 775 +f 811 563 718 +f 563 736 718 +f 718 736 735 +f 736 647 735 +f 735 647 686 +f 686 745 613 +f 745 514 613 +f 569 606 605 +f 654 667 638 +f 851 857 847 +f 588 569 549 +f 690 691 748 +f 680 514 745 +f 2127 2002 2094 +f 747 701 481 +f 400 373 529 +f 600 536 811 +f 536 563 811 +f 1306 227 1152 +f 522 24 18 +f 523 24 522 +f 865 857 851 +f 2031 2060 1540 +f 767 701 747 +f 618 652 609 +f 652 636 609 +f 573 22 710 +f 642 699 730 +f 1522 1518 2476 +f 500 629 691 +f 690 500 691 +f 691 629 600 +f 780 644 641 +f 579 578 561 +f 131 668 197 +f 197 668 814 +f 789 809 798 +f 622 760 150 +f 621 563 536 +f 673 745 686 +f 673 818 745 +f 818 680 745 +f 680 96 514 +f 2495 2462 1028 +f 1028 583 575 +f 663 794 664 +f 629 761 600 +f 761 757 600 +f 600 757 536 +f 621 696 563 +f 755 736 563 +f 696 755 563 +f 633 736 755 +f 633 647 736 +f 623 686 647 +f 633 623 647 +f 686 623 673 +f 819 680 818 +f 680 819 96 +f 1729 1677 1096 +f 2482 1899 2471 +f 537 536 757 +f 536 537 621 +f 673 819 818 +f 2428 222 230 +f 25 24 523 +f 25 557 24 +f 38 25 19 +f 710 22 272 +f 663 759 794 +f 1120 878 1195 +f 537 696 621 +f 696 633 755 +f 822 2215 2220 +f 97 96 1053 +f 750 784 743 +f 887 905 864 +f 768 784 373 +f 512 513 548 +f 573 664 22 +f 696 715 633 +f 673 521 819 +f 2454 2453 2445 +f 883 887 847 +f 306 812 76 +f 642 528 759 +f 798 809 235 +f 994 792 998 +f 587 626 586 +f 1900 1918 1937 +f 645 652 618 +f 537 786 696 +f 521 593 819 +f 515 19 523 +f 741 749 719 +f 789 326 809 +f 539 581 550 +f 657 777 723 +f 684 713 660 +f 692 712 720 +f 652 666 692 +f 507 761 629 +f 472 507 629 +f 507 757 761 +f 623 633 673 +f 724 521 673 +f 515 516 19 +f 304 675 674 +f 178 778 721 +f 947 1447 2358 +f 626 645 618 +f 586 626 618 +f 784 768 742 +f 753 537 757 +f 537 753 786 +f 724 981 521 +f 521 981 593 +f 979 559 850 +f 637 660 677 +f 787 631 576 +f 141 117 385 +f 809 399 235 +f 641 754 558 +f 542 553 561 +f 742 768 762 +f 444 416 533 +f 528 687 796 +f 813 598 566 +f 1490 1501 1557 +f 753 757 507 +f 786 715 696 +f 633 724 673 +f 2090 2062 2109 +f 646 653 660 +f 660 694 683 +f 677 660 683 +f 1872 839 838 +f 1224 18 30 +f 326 393 809 +f 799 529 373 +f 313 507 472 +f 715 774 633 +f 974 699 841 +f 703 820 816 +f 692 711 676 +f 1014 355 766 +f 875 752 1019 +f 627 646 660 +f 711 692 720 +f 652 692 676 +f 799 373 784 +f 813 566 567 +f 2462 2482 2475 +f 764 644 780 +f 1479 1924 1916 +f 753 738 786 +f 738 607 786 +f 786 607 715 +f 715 524 774 +f 633 774 724 +f 559 979 672 +f 758 798 783 +f 683 694 705 +f 820 703 562 +f 764 687 644 +f 744 743 725 +f 313 753 507 +f 607 524 715 +f 664 801 22 +f 646 627 610 +f 800 820 562 +f 750 769 807 +f 767 747 533 +f 578 586 604 +f 862 593 981 +f 688 2382 1083 +f 306 304 674 +f 738 584 607 +f 168 136 238 +f 773 552 765 +f 2473 2464 2458 +f 773 793 552 +f 626 619 658 +f 1007 1139 1013 +f 562 529 799 +f 744 750 743 +f 659 683 693 +f 677 683 659 +f 313 737 753 +f 753 737 738 +f 607 729 524 +f 27 518 28 +f 553 569 580 +f 657 163 777 +f 580 569 605 +f 789 798 758 +f 769 562 807 +f 820 671 816 +f 638 646 611 +f 1074 598 644 +f 750 799 784 +f 1931 907 898 +f 2483 2487 2461 +f 737 584 738 +f 1439 1438 1431 +f 2098 1213 544 +f 48 578 75 +f 796 631 787 +f 815 732 21 +f 581 588 550 +f 625 636 651 +f 778 1011 810 +f 693 705 725 +f 693 683 705 +f 236 1921 1966 +f 584 729 607 +f 2237 1866 2227 +f 530 541 28 +f 237 739 248 +f 512 530 28 +f 727 778 771 +f 684 727 713 +f 2237 2220 826 +f 542 561 560 +f 528 796 700 +f 808 785 671 +f 739 592 248 +f 895 905 896 +f 740 246 186 +f 272 137 979 +f 770 769 744 +f 712 742 720 +f 1213 2026 544 +f 1888 1235 2438 +f 555 554 2311 +f 737 313 1192 +f 1585 1612 1611 +f 695 721 685 +f 518 17 28 +f 769 770 562 +f 719 749 740 +f 648 669 679 +f 773 657 723 +f 606 637 619 +f 2072 2062 2042 +f 606 619 626 +f 549 569 553 +f 161 638 611 +f 910 917 942 +f 917 1103 942 +f 991 1026 992 +f 979 137 672 +f 785 163 657 +f 710 2488 2472 +f 611 581 119 +f 808 671 820 +f 1820 1900 1870 +f 759 700 591 +f 637 677 619 +f 2494 2490 2463 +f 671 765 816 +f 687 764 780 +f 1019 992 1026 +f 1726 1719 987 +f 713 771 694 +f 51 2355 78 +f 510 526 525 +f 525 526 1249 +f 526 33 1249 +f 2311 554 2335 +f 827 848 840 +f 603 591 649 +f 758 269 740 +f 1595 1612 1586 +f 1694 1048 1699 +f 682 740 186 +f 22 801 603 +f 555 570 554 +f 1053 110 97 +f 615 582 601 +f 814 668 188 +f 725 705 744 +f 528 700 759 +f 640 648 620 +f 703 701 562 +f 886 892 582 +f 631 731 576 +f 1087 1835 1747 +f 882 864 895 +f 956 950 1103 +f 1502 2500 2470 +f 205 190 200 +f 815 878 616 +f 616 878 995 +f 1183 878 815 +f 1601 1827 881 +f 527 535 526 +f 2184 2183 2175 +f 1142 1125 1133 +f 235 338 798 +f 160 339 792 +f 599 92 75 +f 598 1116 566 +f 631 558 731 +f 771 770 744 +f 730 528 642 +f 841 699 642 +f 668 401 188 +f 510 527 526 +f 749 758 740 +f 706 721 695 +f 694 726 705 +f 694 744 726 +f 906 911 905 +f 661 695 161 +f 708 815 616 +f 535 547 33 +f 794 759 591 +f 778 808 790 +f 269 758 783 +f 771 744 694 +f 800 808 820 +f 571 886 582 +f 854 948 1010 +f 906 905 887 +f 625 651 635 +f 2000 1226 534 +f 2140 1504 2016 +f 601 620 615 +f 620 601 640 +f 648 640 669 +f 698 452 439 +f 671 785 657 +f 1561 2356 545 +f 685 653 667 +f 685 727 684 +f 568 616 797 +f 708 732 815 +f 93 229 339 +f 865 851 839 +f 942 1103 950 +f 589 614 125 +f 606 610 627 +f 951 834 873 +f 92 599 625 +f 1878 830 1902 +f 2482 2098 1899 +f 568 708 616 +f 708 551 732 +f 2434 2487 2483 +f 160 964 665 +f 2316 2391 2309 +f 762 758 749 +f 570 614 589 +f 888 897 883 +f 2000 1517 1388 +f 685 721 727 +f 588 610 606 +f 653 685 684 +f 651 650 635 +f 760 1151 6 +f 793 622 150 +f 651 676 650 +f 744 769 750 +f 541 542 560 +f 476 500 690 +f 473 1064 1057 +f 561 578 560 +f 636 625 599 +f 876 995 949 +f 829 856 846 +f 682 704 740 +f 791 790 770 +f 2466 2500 2460 +f 579 587 586 +f 1352 1208 1095 +f 1684 1479 1916 +f 604 609 636 +f 751 721 706 +f 810 608 782 +f 672 603 649 +f 475 447 476 +f 794 591 801 +f 682 186 650 +f 808 800 790 +f 644 598 813 +f 704 719 740 +f 1011 608 810 +f 1192 584 737 +f 687 780 796 +f 2337 474 2312 +f 638 667 646 +f 706 1186 728 +f 733 575 568 +f 595 551 708 +f 595 540 551 +f 1308 501 1852 +f 665 339 160 +f 527 2447 535 +f 558 9 731 +f 723 793 773 +f 660 713 694 +f 693 725 666 +f 562 767 529 +f 550 538 531 +f 2267 2287 2233 +f 996 964 160 +f 2068 2470 2466 +f 704 711 719 +f 741 762 749 +f 605 606 626 +f 548 542 530 +f 995 878 709 +f 1898 1684 1916 +f 778 791 771 +f 782 163 785 +f 789 758 762 +f 857 883 847 +f 733 970 1028 +f 838 829 825 +f 2447 511 535 +f 22 603 137 +f 705 726 744 +f 605 587 580 +f 512 548 530 +f 743 784 742 +f 790 800 770 +f 778 810 808 +f 1014 998 355 +f 708 568 595 +f 656 697 551 +f 540 656 551 +f 143 125 614 +f 1000 1020 983 +f 778 178 1011 +f 676 704 682 +f 637 627 660 +f 606 627 637 +f 701 552 481 +f 808 810 785 +f 590 570 555 +f 716 595 568 +f 2355 2335 554 +f 912 1729 911 +f 1076 1456 1546 +f 697 68 492 +f 676 711 704 +f 839 851 838 +f 1028 575 733 +f 1020 844 982 +f 716 568 575 +f 844 781 982 +f 1238 2156 2034 +f 553 580 561 +f 580 579 561 +f 452 461 453 +f 560 578 48 +f 564 540 595 +f 632 656 540 +f 564 632 540 +f 75 578 599 +f 518 27 535 +f 511 518 535 +f 783 798 788 +f 642 759 663 +f 720 742 741 +f 605 626 587 +f 580 587 579 +f 725 712 666 +f 562 701 767 +f 1729 923 911 +f 712 743 742 +f 619 677 658 +f 161 695 654 +f 770 800 562 +f 2084 2489 2472 +f 575 559 716 +f 716 564 595 +f 654 695 685 +f 843 855 2064 +f 34 731 9 +f 527 510 1973 +f 723 622 793 +f 992 1726 987 +f 693 666 652 +f 2472 853 573 +f 624 159 148 +f 671 657 773 +f 681 188 498 +f 797 970 733 +f 565 656 632 +f 565 697 656 +f 565 731 697 +f 1949 951 920 +f 85 111 84 +f 662 200 190 +f 44 324 754 +f 33 547 40 +f 658 693 652 +f 658 652 645 +f 664 794 801 +f 666 712 692 +f 639 648 662 +f 611 646 610 +f 850 559 575 +f 1447 2490 1106 +f 1972 1955 1935 +f 582 615 590 +f 66 581 539 +f 780 641 631 +f 796 780 631 +f 1049 1192 83 +f 1348 13 1519 +f 799 807 562 +f 581 611 588 +f 687 795 644 +f 663 8 642 +f 1936 1972 1935 +f 650 676 682 +f 615 630 590 +f 730 795 687 +f 742 762 741 +f 548 553 542 +f 1048 1692 1074 +f 658 659 693 +f 37 52 30 +f 611 610 588 +f 649 632 564 +f 565 576 731 +f 2138 922 1058 +f 1204 854 965 +f 725 743 712 +f 644 813 641 +f 660 653 684 +f 771 791 770 +f 644 795 1074 +f 469 480 681 +f 559 672 564 +f 716 559 564 +f 672 649 564 +f 2161 1378 2171 +f 474 475 476 +f 816 765 701 +f 765 552 701 +f 513 538 548 +f 754 324 107 +f 609 586 618 +f 25 523 19 +f 677 659 658 +f 689 452 698 +f 1334 1115 1353 +f 700 565 632 +f 700 576 565 +f 481 552 793 +f 763 901 2458 +f 550 549 538 +f 781 964 996 +f 1596 1634 1595 +f 198 916 1124 +f 198 1124 341 +f 842 973 1025 +f 842 1025 836 +f 1009 1024 934 +f 573 710 2472 +f 1100 971 1002 +f 1501 1081 1557 +f 1225 1219 955 +f 413 2138 284 +f 955 1630 522 +f 341 1124 301 +f 2333 2376 2350 +f 1107 218 284 +f 398 925 1513 +f 1513 1442 1495 +f 1935 1455 1744 +f 1723 1935 1744 +f 825 1872 838 +f 1495 1442 1496 +f 963 1024 1009 +f 1511 1514 966 +f 1775 1729 912 +f 688 262 1067 +f 714 1007 1512 +f 919 1732 914 +f 2319 2331 2304 +f 2400 2407 2391 +f 1674 2164 1780 +f 843 927 899 +f 1660 988 1188 +f 1067 262 1640 +f 1381 1109 1483 +f 1437 1381 1483 +f 2495 1010 948 +f 1514 1289 1313 +f 899 374 961 +f 1438 1430 1422 +f 1634 1095 1632 +f 2487 973 2461 +f 1003 499 874 +f 849 848 827 +f 1430 1462 1453 +f 2496 2084 2471 +f 909 10 980 +f 730 927 835 +f 2031 1540 1536 +f 831 849 2178 +f 881 834 951 +f 1841 1722 1803 +f 1005 670 1020 +f 1021 670 1005 +f 1869 2059 2467 +f 903 902 1939 +f 2476 2502 1651 +f 853 8 573 +f 1850 831 2178 +f 934 746 247 +f 934 65 746 +f 301 285 1077 +f 968 944 977 +f 970 2495 1028 +f 974 2465 374 +f 899 927 374 +f 1882 1898 1916 +f 1613 1634 1596 +f 909 833 1396 +f 2492 247 1003 +f 919 914 1931 +f 1459 1299 1458 +f 1634 1632 1633 +f 844 670 228 +f 2494 2497 2467 +f 901 973 2487 +f 228 1772 734 +f 1701 1709 1666 +f 963 574 1024 +f 847 864 856 +f 1730 1736 2239 +f 870 859 848 +f 2074 2111 2103 +f 1140 1590 1483 +f 927 730 974 +f 2103 978 2074 +f 756 1745 1718 +f 848 859 840 +f 1296 1482 1320 +f 2331 51 66 +f 1067 988 962 +f 1396 833 1445 +f 1001 1005 1000 +f 901 1009 973 +f 1099 1077 817 +f 933 944 936 +f 952 958 1828 +f 988 1660 986 +f 833 1067 1445 +f 1067 1640 988 +f 218 413 284 +f 1843 180 347 +f 1846 1708 1798 +f 2469 2477 855 +f 1006 1021 1005 +f 381 382 250 +f 2369 828 531 +f 968 977 1001 +f 2460 1949 779 +f 1194 1441 1115 +f 1001 1000 968 +f 756 678 1745 +f 963 1009 901 +f 2471 2084 2472 +f 841 642 8 +f 982 991 1027 +f 670 844 1020 +f 1289 1514 945 +f 869 904 890 +f 1161 1115 1639 +f 823 2178 849 +f 746 12 499 +f 263 428 2366 +f 1685 1075 1692 +f 1002 926 806 +f 1799 1755 216 +f 944 968 993 +f 943 944 993 +f 31 38 19 +f 531 828 550 +f 1501 1078 1081 +f 1921 1149 431 +f 936 943 932 +f 1660 1489 1412 +f 301 980 285 +f 903 918 902 +f 869 890 868 +f 890 903 867 +f 1003 746 499 +f 951 1949 2500 +f 990 841 853 +f 1595 1634 1611 +f 374 927 974 +f 836 1025 247 +f 1653 1652 1638 +f 1303 1545 1142 +f 1616 1631 1638 +f 1629 1546 1628 +f 936 932 913 +f 513 506 531 +f 868 890 867 +f 2330 2369 2353 +f 924 918 914 +f 907 914 904 +f 1258 1421 1267 +f 301 939 980 +f 1472 1482 1296 +f 868 867 859 +f 472 491 313 +f 272 519 2488 +f 1471 1472 1296 +f 1025 934 247 +f 1634 1633 1611 +f 2176 1847 2177 +f 1310 1289 806 +f 924 933 918 +f 1969 1968 902 +f 2107 2128 2118 +f 1428 1436 1287 +f 1139 1564 1617 +f 2378 572 2384 +f 853 841 8 +f 2501 961 2465 +f 1221 1240 1408 +f 1069 1578 1627 +f 1006 1005 1001 +f 1617 1564 1578 +f 828 539 550 +f 1791 2168 2160 +f 1829 1718 1739 +f 1968 1939 902 +f 756 1718 665 +f 1998 2000 1388 +f 2451 545 2356 +f 178 997 1011 +f 1275 325 1270 +f 1709 872 1666 +f 2176 1959 1847 +f 944 943 936 +f 2424 518 511 +f 1445 1067 962 +f 2007 952 1828 +f 2052 2061 2081 +f 828 2303 539 +f 835 1699 1048 +f 1709 1706 872 +f 885 574 963 +f 1318 1296 1320 +f 859 867 1902 +f 1452 1448 1421 +f 943 993 976 +f 993 1000 983 +f 854 1010 876 +f 988 986 962 +f 2031 2052 2081 +f 924 1732 1828 +f 965 949 1060 +f 781 228 734 +f 1718 1765 665 +f 943 976 932 +f 1680 1794 1783 +f 1448 1471 1276 +f 1276 1267 1421 +f 1931 914 907 +f 991 781 996 +f 1276 1421 1448 +f 10 909 1396 +f 831 860 849 +f 1523 1762 1774 +f 924 1828 937 +f 307 994 1014 +f 946 963 901 +f 978 2103 977 +f 977 1006 1001 +f 1007 1161 1639 +f 1639 1294 1437 +f 885 1032 574 +f 1294 1381 1437 +f 733 568 797 +f 792 229 1112 +f 119 581 108 +f 843 835 927 +f 1889 860 831 +f 2211 2216 2204 +f 2400 2431 2422 +f 2103 1006 977 +f 840 1902 830 +f 827 840 830 +f 827 830 822 +f 1003 874 2492 +f 1432 1439 1431 +f 781 734 964 +f 1937 1936 1723 +f 918 913 902 +f 958 977 944 +f 1850 2178 2177 +f 1005 1020 1000 +f 991 996 307 +f 1396 1445 340 +f 2179 1763 889 +f 939 909 980 +f 1828 958 937 +f 978 977 958 +f 1590 1571 1563 +f 779 1949 920 +f 1551 1362 1573 +f 2103 2142 1006 +f 920 885 963 +f 946 920 963 +f 1584 1616 1583 +f 1453 1472 1452 +f 1647 1617 1578 +f 1578 1564 1627 +f 1628 938 1069 +f 869 868 859 +f 993 983 976 +f 912 1762 1775 +f 752 751 706 +f 1628 1546 938 +f 844 228 781 +f 840 859 1902 +f 898 907 904 +f 1025 973 1009 +f 663 664 573 +f 763 946 901 +f 898 904 869 +f 2172 889 1763 +f 1128 926 971 +f 860 848 849 +f 904 903 890 +f 2486 2459 2479 +f 577 782 608 +f 933 936 918 +f 2177 1847 1851 +f 665 1765 339 +f 937 958 944 +f 894 981 724 +f 968 1000 993 +f 2192 2195 2205 +f 1652 1099 817 +f 997 608 1011 +f 997 577 608 +f 577 163 782 +f 1112 998 792 +f 2177 1851 1850 +f 1257 1421 1258 +f 951 873 920 +f 822 830 2215 +f 1899 2496 2471 +f 1773 1668 1558 +f 904 914 903 +f 932 1671 913 +f 873 885 920 +f 1013 1617 1647 +f 873 1032 885 +f 894 862 981 +f 2469 855 961 +f 913 1671 1969 +f 2477 2064 855 +f 918 936 913 +f 860 870 848 +f 937 944 933 +f 1501 1013 1647 +f 824 178 751 +f 824 997 178 +f 824 577 997 +f 643 163 577 +f 863 856 882 +f 2128 2153 2134 +f 722 774 880 +f 722 894 774 +f 864 905 895 +f 850 575 583 +f 914 918 903 +f 924 937 933 +f 1501 717 1013 +f 1587 1324 928 +f 717 1512 1013 +f 602 577 824 +f 766 643 577 +f 894 709 862 +f 709 878 862 +f 976 975 932 +f 1324 1596 928 +f 880 524 1060 +f 2434 2459 2499 +f 1324 1613 1596 +f 752 824 751 +f 602 766 577 +f 1014 602 594 +f 1387 1226 2152 +f 2153 1387 2152 +f 669 930 950 +f 1710 1694 1699 +f 768 326 762 +f 582 892 601 +f 974 990 2465 +f 624 116 625 +f 835 795 730 +f 2458 2484 763 +f 989 602 824 +f 2064 2477 1710 +f 976 983 975 +f 949 722 880 +f 996 160 994 +f 2305 863 556 +f 556 863 886 +f 601 910 640 +f 2264 825 829 +f 989 824 752 +f 856 864 882 +f 1595 1586 2381 +f 1627 1629 1628 +f 2174 2180 2173 +f 2128 2134 2118 +f 137 272 22 +f 949 880 1060 +f 995 894 722 +f 894 995 709 +f 894 724 774 +f 886 895 892 +f 640 910 930 +f 871 870 860 +f 846 856 863 +f 1026 875 1019 +f 838 851 829 +f 1024 1171 934 +f 36 189 205 +f 863 882 886 +f 886 882 895 +f 875 1026 594 +f 52 1459 1269 +f 896 917 910 +f 1025 1009 934 +f 949 995 722 +f 2152 1226 1636 +f 895 896 892 +f 892 910 601 +f 942 950 930 +f 875 989 752 +f 594 602 989 +f 766 355 643 +f 355 260 643 +f 905 917 896 +f 965 1060 1162 +f 892 896 910 +f 1101 1052 1042 +f 1029 1031 834 +f 1101 1133 1118 +f 342 357 376 +f 516 515 2454 +f 1656 2494 2467 +f 1056 1303 1133 +f 1120 1130 862 +f 69 342 376 +f 1055 1056 1133 +f 499 69 165 +f 85 101 111 +f 1031 1032 834 +f 200 679 1166 +f 1031 1042 1032 +f 1171 65 934 +f 1822 1204 1177 +f 1096 956 1103 +f 514 96 97 +f 956 1145 1144 +f 1185 1166 1144 +f 1145 1185 1144 +f 1185 200 1166 +f 375 132 1041 +f 1153 1202 305 +f 32 1244 1249 +f 1096 1087 956 +f 554 78 2355 +f 1191 138 110 +f 65 35 432 +f 1087 1110 956 +f 1110 1146 956 +f 956 1146 1145 +f 1146 1156 1145 +f 1145 1156 1185 +f 950 956 1144 +f 2481 2495 948 +f 1156 1193 1185 +f 1050 1047 1051 +f 239 151 107 +f 1185 1193 36 +f 1747 1110 1087 +f 1134 1146 1110 +f 1146 1157 1156 +f 1156 1157 1193 +f 1041 1045 1034 +f 1397 1134 1110 +f 1157 1146 1134 +f 1157 1175 1193 +f 1193 199 36 +f 1090 1035 1196 +f 1456 1150 1051 +f 1175 199 1193 +f 1186 695 199 +f 1186 199 1175 +f 1175 1157 1134 +f 728 1186 1175 +f 197 760 6 +f 1130 593 862 +f 1167 1109 182 +f 1194 1115 1161 +f 2140 1928 1504 +f 921 922 2138 +f 1147 1134 1397 +f 1719 1147 1397 +f 1147 1175 1134 +f 1175 1147 728 +f 341 1654 1208 +f 754 151 9 +f 284 2138 1058 +f 1188 1557 1660 +f 1191 110 1053 +f 916 284 1189 +f 284 1058 1189 +f 2094 1465 2127 +f 1726 1019 1147 +f 1147 1019 728 +f 593 1130 96 +f 239 305 1038 +f 1036 1131 315 +f 397 1131 1120 +f 1053 96 1130 +f 2467 2485 1869 +f 517 1089 421 +f 834 1827 1029 +f 419 1047 1117 +f 1034 433 1306 +f 2239 1862 1730 +f 1453 1462 1472 +f 1408 1422 1399 +f 471 23 1111 +f 1205 1150 1456 +f 1205 1040 1150 +f 1131 1036 293 +f 293 1068 1044 +f 375 1041 138 +f 1205 1140 1046 +f 1040 1205 1046 +f 1140 1167 1046 +f 1104 1049 83 +f 1052 1085 1032 +f 1044 1068 1191 +f 1167 1483 1109 +f 208 1084 1035 +f 1040 132 375 +f 1834 20 3 +f 1050 1051 1070 +f 1133 1125 1174 +f 11 1440 1401 +f 420 208 1071 +f 1135 1079 1094 +f 1086 1101 1118 +f 1029 1030 1031 +f 1200 1061 294 +f 1191 1068 138 +f 1171 1141 65 +f 1141 1172 65 +f 1172 35 65 +f 1172 404 35 +f 404 99 35 +f 221 1104 1063 +f 802 398 1083 +f 20 1089 3 +f 2064 1699 835 +f 1042 1052 1032 +f 1433 1261 1432 +f 1323 2338 155 +f 1076 1205 1456 +f 1088 1402 1056 +f 1150 348 1070 +f 1200 1089 20 +f 1097 1162 100 +f 1032 873 834 +f 21 471 1111 +f 294 1097 1104 +f 1072 100 584 +f 1151 760 622 +f 132 1045 1041 +f 1050 1070 1135 +f 1088 1039 940 +f 650 159 635 +f 100 1170 729 +f 729 584 100 +f 1103 931 1096 +f 925 1443 1513 +f 138 1102 110 +f 1034 1306 1152 +f 1071 1035 1090 +f 100 1072 1097 +f 23 1158 315 +f 1068 375 138 +f 1586 1612 1585 +f 1819 1030 1029 +f 1041 1034 1102 +f 232 375 1068 +f 348 1079 1070 +f 1061 1097 294 +f 1513 1443 1442 +f 1200 294 1119 +f 376 1050 1062 +f 1094 1036 315 +f 1200 1119 1089 +f 1111 1183 21 +f 1044 1191 1053 +f 698 295 689 +f 1079 232 1036 +f 404 1117 99 +f 1495 1496 717 +f 1119 294 98 +f 3 1089 517 +f 1132 1063 83 +f 1132 83 175 +f 132 1046 182 +f 1111 1195 1183 +f 1131 1044 1037 +f 127 402 1804 +f 219 1272 1047 +f 1697 1135 1094 +f 2140 1854 2117 +f 1111 397 1195 +f 1177 1162 1097 +f 1061 1177 1097 +f 717 1509 714 +f 2 1300 433 +f 462 290 461 +f 98 294 221 +f 294 1104 221 +f 714 1161 1007 +f 1073 1152 1143 +f 1697 1094 1360 +f 1223 1423 1218 +f 836 2479 842 +f 1097 1072 1049 +f 348 1040 375 +f 3 517 316 +f 180 1061 1201 +f 348 375 232 +f 1432 1431 1415 +f 220 1513 1495 +f 1104 1097 1049 +f 306 674 596 +f 777 455 723 +f 2170 2151 1641 +f 1047 419 219 +f 1102 1034 1073 +f 1073 1034 1152 +f 1035 1054 1196 +f 1177 1204 1162 +f 746 65 12 +f 751 178 721 +f 1054 517 421 +f 1051 1150 1070 +f 1102 1073 110 +f 998 1136 355 +f 567 566 1163 +f 1111 315 397 +f 1048 1074 835 +f 1158 1094 315 +f 1374 1107 1252 +f 1112 1136 998 +f 472 629 500 +f 355 1136 260 +f 260 118 43 +f 1104 83 1063 +f 376 357 1050 +f 1463 1142 1545 +f 1036 232 293 +f 1030 1042 1031 +f 1079 348 232 +f 221 1063 1132 +f 1094 1079 1036 +f 1076 1629 1205 +f 1136 1197 260 +f 260 1197 118 +f 1204 965 1162 +f 293 232 1068 +f 1590 1205 1629 +f 1205 1590 1140 +f 250 382 392 +f 1296 1318 1311 +f 347 1201 20 +f 1201 1200 20 +f 132 182 1045 +f 1101 1086 1052 +f 1033 1039 1055 +f 138 1041 1102 +f 970 1010 2495 +f 455 777 43 +f 1992 1948 2023 +f 20 1834 347 +f 1072 584 1049 +f 584 1192 1049 +f 182 2 1045 +f 1163 324 44 +f 1360 1094 1158 +f 1450 1360 1158 +f 1091 1112 229 +f 509 723 455 +f 207 509 455 +f 1251 1257 1266 +f 1488 1489 1547 +f 2157 1541 1875 +f 305 107 324 +f 1045 2 433 +f 1070 1079 1135 +f 1136 1168 1197 +f 1197 359 118 +f 118 359 43 +f 359 356 43 +f 356 455 43 +f 356 207 455 +f 1240 1422 1408 +f 1163 1153 324 +f 1201 1061 1200 +f 1052 1086 1085 +f 1024 1141 1171 +f 1112 1105 1136 +f 1050 1135 1062 +f 1105 1168 1136 +f 1168 1178 1197 +f 1197 1178 359 +f 1173 404 1172 +f 465 356 359 +f 1174 1125 240 +f 1240 1431 1422 +f 1098 1113 1105 +f 1112 1098 1105 +f 1105 1178 1168 +f 1178 465 359 +f 1091 1098 1112 +f 1133 1174 1118 +f 98 221 1059 +f 487 1132 175 +f 980 1017 285 +f 465 207 356 +f 180 1201 347 +f 1060 524 1170 +f 445 127 316 +f 1431 1438 1422 +f 498 469 681 +f 940 1807 1759 +f 381 250 1290 +f 1113 1122 1105 +f 1105 1122 1178 +f 1151 509 207 +f 1236 2035 525 +f 1131 293 1044 +f 346 207 465 +f 346 1151 207 +f 1822 1796 1204 +f 1143 204 97 +f 123 1128 971 +f 2153 2152 2134 +f 126 1151 346 +f 517 445 316 +f 1450 1158 23 +f 1458 1462 1430 +f 1129 152 1182 +f 1122 1159 1178 +f 1178 1198 465 +f 79 346 465 +f 126 1155 1151 +f 1151 1155 6 +f 295 1129 689 +f 1073 1143 97 +f 1098 1123 1113 +f 1113 1123 1122 +f 1123 1169 1122 +f 1178 1159 1198 +f 1198 79 465 +f 392 383 152 +f 1822 1061 180 +f 116 92 625 +f 421 1089 1119 +f 1129 295 152 +f 110 1073 97 +f 1173 1172 1141 +f 1122 1169 1159 +f 79 126 346 +f 1155 181 6 +f 971 926 1002 +f 295 1043 152 +f 1039 1088 1056 +f 1428 1266 1436 +f 404 419 1117 +f 836 879 2479 +f 2464 2476 2458 +f 1198 317 79 +f 1124 939 301 +f 44 754 567 +f 1039 1056 1055 +f 1439 1459 1458 +f 1660 1412 986 +f 1169 1160 1159 +f 179 1155 126 +f 1155 131 181 +f 1061 1822 1177 +f 1153 305 324 +f 175 314 327 +f 1160 1187 1159 +f 1159 1187 1198 +f 1198 1187 317 +f 79 179 126 +f 1043 250 392 +f 152 1043 392 +f 96 819 593 +f 1123 1127 1169 +f 317 179 79 +f 1057 1155 179 +f 1155 391 131 +f 131 391 668 +f 2381 1586 1585 +f 12 69 499 +f 262 398 1640 +f 2107 2118 2060 +f 2130 2094 2002 +f 1187 249 317 +f 1155 1057 391 +f 1290 439 1265 +f 305 239 107 +f 1127 1160 1169 +f 317 473 179 +f 473 1057 179 +f 83 1192 314 +f 1043 1290 250 +f 1807 940 1030 +f 517 1084 445 +f 1057 1164 391 +f 2492 2480 2493 +f 163 643 43 +f 1056 1545 1303 +f 1069 1655 1023 +f 249 473 317 +f 1162 1060 1170 +f 1086 1118 1154 +f 82 68 16 +f 1989 1990 1536 +f 1633 1632 1611 +f 1487 2372 1305 +f 1494 1069 1023 +f 1137 1160 1127 +f 669 1166 679 +f 390 1285 426 +f 1955 1972 1971 +f 1219 1223 2437 +f 1254 1261 1223 +f 1319 1545 1056 +f 1320 1328 2443 +f 1261 1433 1223 +f 1219 1254 1223 +f 254 222 2428 +f 1237 1290 1265 +f 1284 1273 1263 +f 1277 1291 1301 +f 1314 102 1301 +f 1280 363 377 +f 1313 1353 1514 +f 468 451 439 +f 1918 1964 1956 +f 2026 29 2140 +f 1354 381 1279 +f 1224 30 1254 +f 147 158 173 +f 1247 1253 274 +f 1271 380 334 +f 2043 2072 2042 +f 274 300 267 +f 1356 1392 211 +f 13 240 1142 +f 1382 1330 1392 +f 1312 1323 155 +f 240 1125 1142 +f 2358 1573 1362 +f 1236 1249 1244 +f 1272 219 1348 +f 1271 1274 380 +f 191 2034 1982 +f 1992 2052 1990 +f 462 452 689 +f 2262 2286 2261 +f 183 489 1642 +f 2485 2480 1869 +f 84 111 1323 +f 1190 353 1354 +f 446 434 435 +f 1336 171 1341 +f 2021 430 2059 +f 862 878 1120 +f 1263 1273 1248 +f 1966 1921 2144 +f 1312 84 1323 +f 240 13 1348 +f 1359 1274 1271 +f 1392 1330 1247 +f 1520 1333 11 +f 1368 1253 1247 +f 1279 1285 1190 +f 2465 990 2489 +f 1272 1519 805 +f 1369 1272 805 +f 1317 95 1344 +f 1242 1248 1234 +f 1368 242 1363 +f 274 1262 1386 +f 532 597 1886 +f 2117 2026 2140 +f 1392 1247 274 +f 2162 508 985 +f 1964 1469 1965 +f 1315 104 1331 +f 1392 1356 1382 +f 128 1342 1336 +f 1285 427 426 +f 1219 1224 1254 +f 1320 1322 1321 +f 1320 1321 1328 +f 153 2443 1328 +f 1321 153 1328 +f 1235 1244 1243 +f 1225 1224 1219 +f 1359 353 1190 +f 1312 1473 1458 +f 1336 1342 147 +f 305 1333 1038 +f 1336 147 171 +f 516 31 19 +f 2479 2461 842 +f 1237 1265 427 +f 1263 1278 1284 +f 881 1827 834 +f 1237 427 1285 +f 1299 1312 1458 +f 1190 1285 1274 +f 1363 286 1253 +f 2330 2303 828 +f 427 442 426 +f 2493 2463 2492 +f 1285 380 1274 +f 522 18 1225 +f 2471 2472 2488 +f 2338 154 1321 +f 1423 1415 1218 +f 1225 18 1224 +f 1253 286 1262 +f 286 353 1359 +f 171 1368 1383 +f 1273 54 1234 +f 1973 2447 527 +f 1322 155 1321 +f 1203 1369 1413 +f 1307 363 1298 +f 1364 1375 1329 +f 1329 227 1306 +f 296 1298 1343 +f 947 2499 1447 +f 1203 1047 1272 +f 1098 1748 1123 +f 1519 1272 1348 +f 1277 70 1273 +f 1282 1337 1361 +f 286 302 353 +f 103 104 1315 +f 1377 435 434 +f 1449 1261 1345 +f 926 1310 806 +f 1263 1248 1242 +f 985 508 597 +f 1415 1222 1218 +f 88 1325 104 +f 170 111 156 +f 1384 1282 1361 +f 274 1253 1262 +f 1371 1317 1344 +f 1371 1366 1337 +f 1345 1459 1449 +f 171 1383 1341 +f 2438 1235 1227 +f 2134 1582 2118 +f 428 1260 1379 +f 1336 1341 1325 +f 1235 1242 1227 +f 1228 1687 2284 +f 1854 2140 2016 +f 1866 1887 1873 +f 1343 1298 1370 +f 1384 1361 2440 +f 171 242 1368 +f 1344 1309 1366 +f 1371 1344 1366 +f 1280 1377 1293 +f 200 1185 205 +f 1330 1383 1368 +f 1255 1264 1263 +f 543 1367 1876 +f 1343 1370 1260 +f 1293 1326 1370 +f 2440 1361 1302 +f 1282 1384 2406 +f 271 1337 1282 +f 170 2338 1323 +f 1528 1503 2470 +f 515 1347 2453 +f 1997 1705 1998 +f 2285 1228 2284 +f 1229 1250 1228 +f 1330 1368 1247 +f 1919 1619 2045 +f 1344 1364 1335 +f 1222 1240 1221 +f 1212 858 1741 +f 2388 1222 1221 +f 1528 2470 2068 +f 501 1308 2171 +f 1295 1311 1487 +f 2116 1619 1655 +f 1220 1229 1228 +f 8 663 573 +f 1343 1260 428 +f 1337 1366 1361 +f 1298 1280 1293 +f 1269 1345 1261 +f 1279 381 1290 +f 1230 1229 1220 +f 1230 1245 1229 +f 1245 1250 1229 +f 1227 1234 31 +f 1302 1361 1350 +f 1245 1266 1428 +f 1992 2023 2052 +f 2482 2471 2475 +f 452 462 461 +f 271 1282 1275 +f 1991 1989 1934 +f 1366 1309 1350 +f 1344 1335 1309 +f 730 699 974 +f 1374 1252 1208 +f 597 508 1912 +f 1363 1253 1368 +f 1386 1271 300 +f 1211 1218 1222 +f 1376 1377 434 +f 2399 2437 1211 +f 1284 1291 1277 +f 1230 1251 1245 +f 1251 1266 1245 +f 1317 1371 1337 +f 1288 1286 1095 +f 1095 1286 1352 +f 1241 1208 1352 +f 1241 1374 1208 +f 1284 1278 1291 +f 211 1392 267 +f 1344 1375 1364 +f 929 583 1028 +f 1361 1366 1350 +f 1115 1294 1639 +f 1291 103 1301 +f 1220 1231 1230 +f 1231 1251 1230 +f 1234 1248 1273 +f 1255 55 1264 +f 1360 1450 1702 +f 363 1280 1298 +f 1369 1203 1272 +f 1415 1240 1222 +f 1216 1231 1220 +f 1243 1263 1235 +f 1375 227 1329 +f 1264 1278 1263 +f 855 899 961 +f 1286 1241 1352 +f 2081 2128 2107 +f 1223 1433 1423 +f 1473 1312 155 +f 154 153 1321 +f 1377 1376 1293 +f 1392 274 267 +f 334 300 1271 +f 1955 1991 1934 +f 1613 1327 1288 +f 1327 1286 1288 +f 1349 1374 1241 +f 2370 2025 2367 +f 1315 1331 133 +f 434 446 1256 +f 1232 1251 1231 +f 1243 1244 1255 +f 1286 1304 1241 +f 1349 1107 1374 +f 1359 1271 1386 +f 1227 516 2431 +f 219 240 1348 +f 1270 271 1275 +f 1255 1263 1243 +f 2026 1926 29 +f 1683 2157 1212 +f 1326 1293 1376 +f 1255 32 55 +f 104 1325 1341 +f 519 2462 2475 +f 2154 2161 2137 +f 1376 434 1246 +f 1246 434 1256 +f 1257 1251 1232 +f 1262 1359 1386 +f 2195 2192 2186 +f 1308 534 1226 +f 2026 2117 544 +f 1327 1613 1324 +f 1327 1326 1286 +f 1286 1326 1304 +f 104 1341 1331 +f 774 524 880 +f 837 1517 534 +f 1127 1123 1567 +f 1279 1237 1285 +f 1297 1381 1294 +f 1217 1232 1216 +f 1142 1519 13 +f 1436 1267 1287 +f 1324 1372 1327 +f 1304 1246 1241 +f 1246 1349 1241 +f 1246 1373 1349 +f 286 1359 1262 +f 1382 1383 1330 +f 1284 1277 1273 +f 489 1998 1799 +f 1675 1116 1075 +f 106 1317 1337 +f 1311 1295 1281 +f 1292 1364 1329 +f 1335 1364 1292 +f 1334 1294 1115 +f 1334 1297 1294 +f 1300 1381 1297 +f 973 842 2461 +f 1217 1239 1232 +f 1232 1239 1257 +f 1258 1267 1436 +f 1359 1190 1274 +f 1862 1405 1877 +f 1372 1339 1327 +f 1339 1326 1327 +f 1373 1351 1349 +f 1276 1311 1281 +f 1256 2386 1351 +f 2 1109 1300 +f 482 1731 520 +f 803 1604 2022 +f 1223 1218 1211 +f 1341 1383 1382 +f 1298 1293 1370 +f 1190 1354 1279 +f 1324 2398 1372 +f 1714 1700 2173 +f 183 2000 489 +f 1701 1666 192 +f 1227 1242 1234 +f 1332 1289 1310 +f 1517 2005 2130 +f 1331 1341 1382 +f 525 1249 1236 +f 23 1268 1450 +f 1264 1291 1278 +f 1281 1287 1267 +f 1295 1305 1287 +f 1281 1295 1287 +f 1487 1305 1295 +f 1605 2097 2058 +f 1326 1376 1304 +f 1304 1376 1246 +f 1316 1919 1984 +f 2500 1949 2460 +f 1332 1313 1289 +f 2189 2181 2177 +f 1335 1334 1353 +f 1292 1297 1334 +f 1428 1250 1245 +f 969 958 952 +f 1217 1233 1239 +f 1233 1257 1239 +f 1876 1367 1338 +f 1379 1260 1372 +f 1372 1260 1339 +f 1128 1302 1310 +f 1310 1302 1332 +f 1335 1353 1313 +f 1292 1334 1335 +f 1297 1329 1300 +f 1279 1290 1237 +f 1301 103 1314 +f 70 1301 102 +f 23 1333 1268 +f 380 1285 390 +f 772 325 1275 +f 1314 103 1315 +f 2473 2458 2487 +f 1276 1281 1267 +f 1344 95 1375 +f 2053 1771 1572 +f 1246 1256 1373 +f 1373 1256 1351 +f 1340 1302 1128 +f 1350 1313 1332 +f 1329 1297 1292 +f 2434 2473 2487 +f 106 1337 271 +f 23 471 1333 +f 622 723 509 +f 1388 1517 2127 +f 1991 1990 1989 +f 183 1636 1226 +f 2133 1605 2151 +f 1260 1370 1339 +f 1339 1370 1326 +f 867 1894 1902 +f 390 426 412 +f 1235 1263 1242 +f 1399 1422 1233 +f 305 11 1333 +f 1300 1329 1306 +f 1302 1350 1332 +f 1350 1309 1313 +f 1309 1335 1313 +f 2470 2102 1502 +f 1787 1531 1599 +f 1724 1725 1691 +f 1827 1601 1927 +f 1678 1358 1476 +f 1823 1812 1846 +f 1805 1824 1708 +f 1746 1676 1797 +f 325 2395 429 +f 1835 1677 1826 +f 1507 1790 1722 +f 1526 1672 858 +f 158 147 1342 +f 1462 1473 1322 +f 1474 1414 1565 +f 1761 1900 1877 +f 940 1759 1008 +f 1565 1015 1008 +f 1924 1533 1933 +f 1878 826 830 +f 1565 1414 1015 +f 1402 1088 1008 +f 1538 1532 1651 +f 1015 1552 1008 +f 1538 1591 1474 +f 1532 1538 1474 +f 1474 1591 1414 +f 1484 1402 1008 +f 1552 1484 1008 +f 1414 1460 1015 +f 1015 1460 1552 +f 806 1289 945 +f 1597 1538 1659 +f 1484 1319 1402 +f 1056 1402 1319 +f 1538 1597 1591 +f 1591 960 1414 +f 1414 960 1460 +f 1925 1466 1455 +f 1552 1400 1484 +f 1484 1400 1319 +f 1400 113 1319 +f 1597 1580 1591 +f 1460 1400 1552 +f 1514 1441 966 +f 1597 1659 1409 +f 1657 113 1400 +f 1460 1657 1400 +f 1288 1095 1634 +f 1551 1597 1409 +f 1580 1598 1591 +f 1591 1598 960 +f 1536 1990 2031 +f 960 1657 1460 +f 1809 1746 1797 +f 1423 1433 1432 +f 2478 1362 1409 +f 1463 1545 113 +f 1657 1463 113 +f 1457 1287 1305 +f 1682 1716 1746 +f 1434 1761 1885 +f 1013 1139 1617 +f 2379 1362 2478 +f 1420 1597 1551 +f 1420 1580 1597 +f 1664 1808 1712 +f 2256 2250 2231 +f 1362 1551 1409 +f 2196 2214 2213 +f 1691 1725 1777 +f 1626 192 1666 +f 1534 1574 2058 +f 1574 1600 1605 +f 1600 1606 1605 +f 1606 1641 1605 +f 1573 1420 1551 +f 1657 1485 1463 +f 678 1806 1742 +f 1534 1553 1574 +f 1574 1575 1600 +f 1810 2170 585 +f 1623 1641 1606 +f 1407 1657 960 +f 1598 1407 960 +f 1485 1142 1463 +f 1716 1581 1676 +f 1738 1743 1733 +f 843 2064 835 +f 1539 1575 1574 +f 1553 1539 1574 +f 1575 1592 1600 +f 1592 1624 1606 +f 1600 1592 1606 +f 1642 585 1641 +f 1623 1642 1641 +f 1485 164 1142 +f 1738 1516 1743 +f 1809 1720 1798 +f 1533 1535 1534 +f 1592 1607 1624 +f 1624 1623 1606 +f 1163 566 1116 +f 1407 1485 1657 +f 1432 1449 1439 +f 1100 802 2382 +f 1743 1516 1722 +f 1746 1716 1676 +f 1535 1539 1534 +f 1534 1539 1553 +f 1642 1623 1624 +f 1095 1208 1654 +f 967 1407 1598 +f 1580 967 1598 +f 1809 1797 1720 +f 1924 1524 1535 +f 1533 1924 1535 +f 1539 1576 1575 +f 1642 216 585 +f 1407 1529 1485 +f 1485 1529 164 +f 1472 1462 1482 +f 1415 1431 1240 +f 966 1194 714 +f 383 1182 152 +f 474 2337 446 +f 1743 1841 1757 +f 1486 1524 1924 +f 1535 1525 1539 +f 1575 1576 1592 +f 1420 967 1580 +f 1288 1634 1613 +f 459 427 1265 +f 1404 2179 1393 +f 1404 1403 1800 +f 1404 1410 1403 +f 1410 1749 1403 +f 1349 1351 218 +f 1486 1498 1524 +f 1535 1524 1525 +f 1607 1636 1624 +f 183 1642 1624 +f 1636 183 1624 +f 1107 1349 218 +f 1351 845 218 +f 164 1519 1142 +f 845 413 218 +f 1525 1576 1539 +f 1576 1582 1592 +f 1592 2134 1607 +f 2134 1636 1607 +f 2147 1491 1401 +f 1407 1589 1529 +f 1529 1519 164 +f 1693 1763 1444 +f 1924 1479 1486 +f 1592 1582 2134 +f 499 165 874 +f 2176 1857 1959 +f 2327 2368 2326 +f 2358 821 953 +f 953 821 1573 +f 1824 1704 1464 +f 1731 1358 1678 +f 1394 1410 1404 +f 1394 1418 1410 +f 1466 1479 1839 +f 1486 1479 1498 +f 1498 1525 1524 +f 1576 2080 1582 +f 1785 1684 1898 +f 804 398 802 +f 804 925 398 +f 1447 1562 2358 +f 2358 1562 821 +f 821 1620 1573 +f 1620 1420 1573 +f 1420 1556 967 +f 1393 1394 1404 +f 1525 2080 1576 +f 1621 1420 1620 +f 1621 1556 1420 +f 967 1589 1407 +f 1505 5 1357 +f 1266 1258 1436 +f 1393 1395 1394 +f 2176 2175 1848 +f 1455 1466 1839 +f 1525 1540 2080 +f 1582 2080 2118 +f 1100 804 802 +f 1556 1589 967 +f 1589 1082 1529 +f 1093 1685 1357 +f 1504 1093 1357 +f 1425 1418 1394 +f 1475 1479 1466 +f 1479 1506 1498 +f 1789 1784 1730 +f 2501 2465 2489 +f 1438 1458 1430 +f 1462 1458 1473 +f 1454 805 1529 +f 1082 1454 1529 +f 1529 805 1519 +f 1425 1394 1395 +f 1425 1744 1418 +f 1479 1475 1506 +f 1540 2060 2080 +f 1556 1082 1589 +f 1443 945 1511 +f 1506 1536 1498 +f 1498 1536 1525 +f 1525 1536 1540 +f 1670 852 1672 +f 1998 1388 1389 +f 1511 966 1509 +f 1509 966 714 +f 1442 1443 1496 +f 1562 1635 821 +f 155 1322 1473 +f 1439 1458 1438 +f 1426 1425 1395 +f 1475 1499 1506 +f 1735 1588 1776 +f 2422 2454 2421 +f 1423 1432 1415 +f 1559 2101 2073 +f 845 866 413 +f 1429 1620 821 +f 1620 1429 1621 +f 1228 1250 1687 +f 1002 945 1443 +f 2382 802 1083 +f 1859 1411 1395 +f 1411 1426 1395 +f 1426 1744 1425 +f 1590 1437 1483 +f 1480 1475 1466 +f 1480 1499 1475 +f 1510 1733 1743 +f 1663 1696 1658 +f 1430 1453 1452 +f 1452 1472 1471 +f 1452 1471 1448 +f 1430 1452 1421 +f 1430 1421 1422 +f 1429 1082 1556 +f 1621 1429 1556 +f 1351 2386 845 +f 1126 1059 487 +f 1639 1437 1563 +f 1504 1928 1093 +f 1499 1536 1506 +f 1588 1770 1727 +f 1110 1747 1397 +f 1776 1588 1531 +f 1322 1320 1482 +f 1590 1629 1571 +f 1730 1877 1838 +f 1429 935 1082 +f 1082 935 1454 +f 804 1443 925 +f 1139 1007 1639 +f 1925 1480 1466 +f 1934 1989 1480 +f 1499 1989 1536 +f 1727 1526 1531 +f 1593 1614 502 +f 2455 2431 2400 +f 1755 1680 908 +f 1563 1571 1564 +f 1647 1078 1501 +f 2490 1635 1106 +f 1496 1511 717 +f 2454 2431 516 +f 1478 1153 1093 +f 1870 1426 1411 +f 1426 1723 1744 +f 962 986 1412 +f 717 1511 1509 +f 1825 1704 1824 +f 2225 2234 2253 +f 1490 1557 1188 +f 1635 80 821 +f 805 1454 935 +f 1186 706 695 +f 1194 1161 714 +f 1512 1007 1013 +f 592 97 204 +f 1258 1266 1257 +f 82 1333 471 +f 1694 1710 1505 +f 1643 490 1661 +f 1661 490 1114 +f 1518 2068 2484 +f 1750 1808 1664 +f 1656 1635 2490 +f 935 1521 805 +f 1546 1629 1076 +f 1301 70 1277 +f 966 1441 1194 +f 1148 1825 1824 +f 1614 1609 1643 +f 1114 1092 1921 +f 1770 1739 1670 +f 1631 1632 1646 +f 821 1016 1429 +f 1429 1016 935 +f 1632 1095 1654 +f 1083 262 688 +f 1724 1686 1725 +f 1644 490 1643 +f 1092 1149 1921 +f 3 893 1832 +f 988 1640 1188 +f 916 1107 284 +f 1656 80 1635 +f 1016 821 80 +f 1016 1521 935 +f 1478 1202 1153 +f 1401 1928 29 +f 1440 1478 1928 +f 1849 1700 1865 +f 1595 1611 1612 +f 1208 198 341 +f 1464 1704 1746 +f 2143 984 1721 +f 1848 1849 1868 +f 1662 1114 490 +f 1669 1787 1682 +f 1656 1618 80 +f 198 1208 916 +f 1440 1928 1401 +f 1521 1369 805 +f 1252 1107 916 +f 1745 678 1672 +f 1703 1779 1721 +f 1750 1465 1808 +f 1609 1644 1643 +f 1092 1114 1662 +f 1826 1523 1793 +f 2262 2261 2224 +f 1696 2166 1767 +f 1016 1648 1521 +f 1208 1252 916 +f 833 688 1067 +f 1794 1803 1558 +f 28 17 512 +f 1750 861 1566 +f 1594 1644 1609 +f 1644 1645 490 +f 490 1645 1662 +f 2229 2262 2224 +f 1602 861 1760 +f 1530 1777 1760 +f 872 1706 1673 +f 1696 1668 2166 +f 1708 1809 1798 +f 1581 1716 1814 +f 1709 1794 1680 +f 1233 1421 1257 +f 1724 1476 1686 +f 1469 1481 1965 +f 1965 1481 1492 +f 2073 1549 1559 +f 1594 1615 1644 +f 1799 1706 1755 +f 1725 1686 1837 +f 1720 1797 1572 +f 1618 2467 2022 +f 1618 1579 80 +f 1648 1016 80 +f 2134 2152 1636 +f 1611 1632 1631 +f 1761 1434 1470 +f 1559 1577 1594 +f 1603 1615 1594 +f 1615 1645 1644 +f 1637 1662 1645 +f 1662 1199 1092 +f 1199 1149 1092 +f 1451 1108 1149 +f 665 734 756 +f 1865 1700 1714 +f 1709 1841 1794 +f 1618 2022 1579 +f 1648 1413 1369 +f 1521 1648 1369 +f 1520 11 1401 +f 1446 1470 1434 +f 1798 1691 1754 +f 2063 1544 2073 +f 2073 1544 1549 +f 1594 1577 1603 +f 1615 1637 1645 +f 1637 1199 1662 +f 1427 1149 1199 +f 2167 1108 1451 +f 1997 1673 1705 +f 1706 1799 1705 +f 1841 1709 1757 +f 1604 1579 2022 +f 1579 707 80 +f 80 707 1648 +f 1520 1401 1491 +f 1649 1520 1491 +f 1435 1434 1885 +f 1470 1469 1461 +f 1481 1508 2024 +f 2370 1544 2063 +f 1549 1568 1559 +f 1559 1568 1577 +f 1603 1610 1615 +f 1615 1610 1637 +f 999 1199 1637 +f 1451 1149 1427 +f 1137 1825 1148 +f 1706 1705 1673 +f 1138 1604 2116 +f 1138 1579 1604 +f 1413 1648 707 +f 2360 2024 1508 +f 598 1075 1116 +f 229 93 1468 +f 1839 1479 1684 +f 2216 2229 2224 +f 1610 1625 1637 +f 329 999 1637 +f 1199 1017 1427 +f 1017 303 1427 +f 303 1451 1427 +f 1792 1754 1777 +f 2309 2391 2301 +f 1655 1138 2116 +f 1138 707 1579 +f 1649 1491 206 +f 1406 1885 1398 +f 1406 1419 1885 +f 1419 1435 1885 +f 1434 1435 1446 +f 1470 1481 1469 +f 1577 1583 1603 +f 999 1017 1199 +f 81 67 941 +f 67 1650 941 +f 1259 1815 2164 +f 1619 2116 2045 +f 1424 707 1138 +f 1702 1649 206 +f 1687 1406 1398 +f 1477 1481 1470 +f 1568 1569 1577 +f 1577 1569 1583 +f 1603 1583 1610 +f 1625 329 1637 +f 2167 340 273 +f 81 273 340 +f 81 962 67 +f 1547 1619 1488 +f 1830 1739 1770 +f 938 1424 1138 +f 1424 1413 707 +f 1527 1649 1702 +f 1527 1520 1649 +f 1527 1268 1520 +f 1250 1406 1687 +f 1441 1353 1115 +f 1203 1413 1051 +f 1250 1419 1406 +f 1477 2372 1481 +f 1481 2372 1508 +f 2449 1560 1568 +f 1549 2449 1568 +f 1568 1560 1569 +f 1569 1584 1583 +f 1652 329 1625 +f 329 817 999 +f 285 1017 999 +f 303 10 1451 +f 10 2167 1451 +f 1412 1650 67 +f 1412 1488 1650 +f 1547 1023 1619 +f 1023 1655 1619 +f 1655 938 1138 +f 1456 1413 1424 +f 1457 1470 1446 +f 1457 1477 1470 +f 329 1652 817 +f 10 340 2167 +f 938 1546 1424 +f 1546 1456 1424 +f 1259 1548 1779 +f 2052 2031 1990 +f 1440 1202 1478 +f 1428 1419 1250 +f 1428 1435 1419 +f 1428 1446 1435 +f 1934 1935 1955 +f 1560 1584 1569 +f 1610 1638 1625 +f 1638 1652 1625 +f 817 1077 999 +f 1077 285 999 +f 980 303 1017 +f 962 1412 67 +f 1494 1023 1547 +f 325 271 1270 +f 1443 1511 1496 +f 1450 1268 1527 +f 1514 1353 1441 +f 1287 1446 1428 +f 1446 1287 1457 +f 1305 2372 1477 +f 1992 1990 1991 +f 1992 1991 1971 +f 1971 1991 1955 +f 2449 1549 2418 +f 1583 1616 1610 +f 1610 1616 1638 +f 10 1396 340 +f 340 1445 81 +f 1445 962 81 +f 1790 984 1753 +f 984 2148 1753 +f 1588 1713 1770 +f 969 978 958 +f 1741 1779 1703 +f 1758 1846 1754 +f 1827 1819 1029 +f 1818 1530 1712 +f 1750 1566 2127 +f 2459 2434 2483 +f 1798 1720 1771 +f 1794 1841 1803 +f 216 1755 1810 +f 1098 1735 1748 +f 1735 1497 1748 +f 1502 2102 1601 +f 881 1502 1601 +f 1455 1839 1744 +f 1706 1709 1680 +f 1212 1741 1703 +f 1788 1969 1671 +f 1075 1074 1692 +f 951 2500 881 +f 2490 2486 2463 +f 1748 1497 1781 +f 1721 984 1840 +f 1815 1259 1741 +f 1626 1756 1837 +f 975 987 1542 +f 2230 2236 2235 +f 1772 678 734 +f 1542 1671 975 +f 1806 1772 1780 +f 678 1772 1806 +f 2218 2225 2268 +f 1828 1732 2007 +f 1526 1688 1531 +f 1752 1526 1554 +f 1844 1818 1712 +f 1823 1846 1804 +f 1781 1669 1704 +f 1721 1779 2143 +f 1770 1670 1526 +f 1497 1669 1781 +f 1098 1713 1735 +f 1742 1815 1741 +f 1526 858 1875 +f 1599 1531 1688 +f 1803 1790 1558 +f 1703 1721 1683 +f 1832 1766 957 +f 1542 1679 1671 +f 1679 1788 1671 +f 1927 1819 1827 +f 1718 1745 1739 +f 1684 1022 1839 +f 1459 1283 1299 +f 1022 1410 1418 +f 2368 2393 2326 +f 1669 1497 1776 +f 1875 858 1212 +f 1739 1745 852 +f 1964 1918 1461 +f 1356 133 1331 +f 1765 1829 1468 +f 858 1742 1741 +f 1006 1674 1021 +f 1723 1936 1935 +f 1468 1713 1098 +f 1724 1678 1476 +f 1680 1783 908 +f 1731 1543 520 +f 1683 1721 1840 +f 1467 1679 1542 +f 1812 1708 1846 +f 1679 1975 1788 +f 1713 1830 1770 +f 1803 1722 1790 +f 2301 2391 2349 +f 1713 1588 1735 +f 1836 1530 1818 +f 1837 1756 861 +f 886 571 556 +f 1181 1805 1812 +f 1706 1680 1755 +f 1677 1729 1775 +f 1776 1787 1669 +f 1526 1670 1672 +f 1727 1770 1526 +f 987 1467 1542 +f 1567 1704 1137 +f 1693 1865 1714 +f 897 1762 912 +f 1135 1697 1062 +f 1697 376 1062 +f 1543 1731 1678 +f 1793 1679 1467 +f 1777 1602 1760 +f 1846 1798 1754 +f 1835 1096 1677 +f 1033 1030 940 +f 1450 1527 1702 +f 1717 376 1697 +f 1711 1717 1697 +f 1717 165 376 +f 1840 984 1790 +f 1669 1746 1704 +f 1669 1682 1746 +f 2301 2349 2308 +f 1882 1444 1898 +f 1820 1789 1730 +f 861 1380 1566 +f 2301 2308 2266 +f 1771 1543 1691 +f 1958 1659 1651 +f 1697 1360 1711 +f 1711 1737 1717 +f 1717 1737 165 +f 1790 1753 1558 +f 1668 1696 1663 +f 1360 1702 1711 +f 1702 1707 1711 +f 1707 1737 1711 +f 1737 1751 165 +f 1444 1782 1693 +f 1716 1787 1599 +f 1744 1839 1022 +f 1898 1444 1785 +f 206 1707 1702 +f 1764 2468 1751 +f 316 1844 893 +f 893 1844 915 +f 1845 1804 1758 +f 1380 861 1756 +f 1780 670 1021 +f 1714 2172 1763 +f 1783 1558 1663 +f 1750 2127 1465 +f 1798 1771 1691 +f 1691 1543 1724 +f 1872 1910 839 +f 1737 2044 1751 +f 1751 2044 1764 +f 1757 1701 482 +f 1725 1602 1777 +f 1836 1845 1530 +f 2102 2470 1503 +f 2496 1899 544 +f 763 2484 946 +f 987 1719 1467 +f 1845 1758 1792 +f 1725 1837 1602 +f 1872 1866 1873 +f 1712 1530 1760 +f 489 1799 216 +f 1760 861 1750 +f 2068 2466 2460 +f 1696 2159 2168 +f 377 1377 1280 +f 1797 1676 1572 +f 1581 2053 1572 +f 1676 1581 1572 +f 1764 2498 2468 +f 2468 2498 1994 +f 1861 1695 1860 +f 2481 2004 2495 +f 1826 1677 1523 +f 1670 1739 852 +f 2234 2269 2253 +f 1724 1543 1678 +f 1658 2168 1791 +f 1397 1747 1719 +f 1696 2168 1658 +f 979 519 272 +f 1774 1975 1679 +f 975 1671 932 +f 1787 1716 1682 +f 1835 1826 1747 +f 2501 2469 961 +f 1810 908 1791 +f 1982 1768 191 +f 1137 1704 1825 +f 1804 1846 1758 +f 2004 2044 1737 +f 913 1969 902 +f 2498 1795 1801 +f 915 1844 1712 +f 1689 915 1712 +f 1740 1752 1541 +f 695 661 199 +f 1865 1693 1782 +f 1824 1464 1809 +f 1829 1765 1718 +f 1816 1768 1982 +f 1816 1622 1768 +f 1622 2165 1681 +f 1768 1622 1681 +f 670 1772 228 +f 1283 1459 52 +f 1785 1444 1749 +f 1675 1075 1685 +f 1567 1781 1704 +f 1858 1857 1848 +f 1526 1752 1688 +f 1791 2160 1810 +f 908 1658 1791 +f 1813 1773 1558 +f 1845 1792 1530 +f 69 376 165 +f 3 1832 1834 +f 1722 1516 1507 +f 1801 1821 1994 +f 1833 1982 2046 +f 1821 1833 2046 +f 1833 1816 1982 +f 1022 1785 1749 +f 2160 2170 1810 +f 1147 1719 1726 +f 1683 1840 1507 +f 1467 1719 1793 +f 1795 1802 1801 +f 1802 1811 1801 +f 1801 1811 1821 +f 1690 2165 1622 +f 1934 1480 1925 +f 229 1468 1091 +f 1780 2164 1742 +f 1672 1742 858 +f 1833 1417 1816 +f 1417 1622 1816 +f 1831 2165 1690 +f 1668 1663 1558 +f 1719 1747 1826 +f 1760 1750 1664 +f 1817 1690 1622 +f 1530 1792 1777 +f 948 1796 1802 +f 1796 1811 1802 +f 1515 1817 1622 +f 1695 1861 1831 +f 1783 1663 1658 +f 1749 1410 1022 +f 854 1796 948 +f 1811 1842 1833 +f 1821 1811 1833 +f 1833 1842 1417 +f 1622 1417 1515 +f 127 1804 1845 +f 1686 1626 1837 +f 1608 1690 1817 +f 1523 1775 1762 +f 127 1845 1836 +f 1812 1805 1708 +f 1523 1677 1775 +f 1780 1772 670 +f 1758 1754 1792 +f 1204 1796 854 +f 1822 1842 1811 +f 1608 1831 1690 +f 1822 1811 1796 +f 1842 1416 1417 +f 1417 1416 1515 +f 1515 1608 1817 +f 1728 1831 1608 +f 908 1783 1658 +f 127 1836 316 +f 1805 1148 1824 +f 852 1745 1672 +f 1478 1093 1928 +f 1822 1843 1842 +f 1843 959 1842 +f 1842 959 1416 +f 1728 1695 1831 +f 1728 1860 1695 +f 2346 446 2337 +f 1602 1837 861 +f 1087 1096 1835 +f 1708 1824 1809 +f 2004 1737 505 +f 1567 1748 1781 +f 520 1543 1883 +f 1760 1664 1712 +f 128 1336 72 +f 2053 1883 1543 +f 1822 180 1843 +f 1786 1608 1515 +f 929 2462 519 +f 512 2402 506 +f 1212 1703 1683 +f 1830 1829 1739 +f 2053 1543 1771 +f 1416 1769 1515 +f 1769 1786 1515 +f 1786 1728 1608 +f 1712 1808 1689 +f 1794 1558 1783 +f 1497 1735 1776 +f 1127 1567 1137 +f 1123 1748 1567 +f 36 205 1185 +f 959 1734 1416 +f 1738 1733 1541 +f 1774 1762 1974 +f 1752 1554 1541 +f 1752 1740 1688 +f 1526 1875 1554 +f 1468 1829 1830 +f 1755 908 1810 +f 1716 1599 1814 +f 1806 1780 1742 +f 2308 2349 2340 +f 1832 915 1689 +f 1713 1468 1830 +f 1814 1599 1346 +f 1832 1689 1766 +f 1022 1684 1785 +f 1093 1153 1116 +f 1672 678 1742 +f 1675 1685 1093 +f 1841 1743 1722 +f 1814 2053 1581 +f 1464 1746 1809 +f 2485 2497 2493 +f 1416 1734 1769 +f 1665 1728 1786 +f 1665 1951 1728 +f 1951 1860 1728 +f 1951 2094 1860 +f 1844 1836 1818 +f 316 1836 1844 +f 1776 1531 1787 +f 1719 1826 1793 +f 2147 1401 29 +f 2111 2121 1548 +f 1741 1259 1779 +f 1843 347 1834 +f 1843 1734 959 +f 1766 1769 1734 +f 957 1766 1734 +f 1766 1786 1769 +f 1766 1689 1786 +f 1689 1665 1786 +f 1754 1691 1777 +f 1507 1840 1790 +f 1761 1470 1461 +f 1523 1679 1793 +f 1091 1468 1098 +f 1820 1730 1838 +f 1843 1834 1734 +f 1808 1951 1665 +f 1588 1727 1531 +f 893 915 1832 +f 1523 1774 1679 +f 272 2488 710 +f 1093 1116 1675 +f 2340 2349 2348 +f 1832 1734 1834 +f 1832 957 1734 +f 1951 1808 2094 +f 1685 1692 1505 +f 1043 295 698 +f 2143 1779 2121 +f 1689 1808 1665 +f 1693 1714 1763 +f 1738 2157 1516 +f 1114 1921 236 +f 1268 1333 1520 +f 1149 1108 431 +f 508 2144 1912 +f 1957 1108 1537 +f 431 1108 1957 +f 1018 1108 2167 +f 1338 1957 1681 +f 2163 1957 1338 +f 1983 1390 2093 +f 30 557 37 +f 1714 2173 2172 +f 1983 1984 1390 +f 1984 2065 1390 +f 884 1762 897 +f 2065 1984 1214 +f 1950 1974 1762 +f 884 1950 1762 +f 2012 1698 1861 +f 1214 2116 803 +f 1950 1938 1974 +f 1938 1967 1974 +f 1900 1761 1461 +f 865 1929 884 +f 884 1929 1950 +f 2062 2071 2042 +f 919 1985 1732 +f 1593 502 2146 +f 1995 1213 2098 +f 1522 2476 1651 +f 2174 1849 2175 +f 1480 1989 1499 +f 1929 1938 1950 +f 1605 2058 1574 +f 2097 1605 2133 +f 1912 2014 1886 +f 2092 2082 2083 +f 206 1930 505 +f 2101 2100 2092 +f 2073 2101 2092 +f 839 1910 865 +f 1910 1901 1929 +f 865 1910 1929 +f 1967 1788 1975 +f 2073 2092 2063 +f 2101 1593 2100 +f 2015 1876 1698 +f 1853 1884 2014 +f 1831 1698 2165 +f 1316 273 81 +f 1901 1920 1929 +f 1929 1920 1938 +f 1920 1968 1967 +f 1938 1920 1967 +f 1849 2174 1700 +f 2173 1700 2174 +f 2062 2072 2091 +f 803 2467 2059 +f 2239 1736 2240 +f 1505 1357 1685 +f 1358 1686 1476 +f 1967 1968 1788 +f 1968 1969 1788 +f 2065 2110 2156 +f 2065 1214 2110 +f 2110 1214 503 +f 273 2093 1018 +f 273 1983 2093 +f 532 1886 2155 +f 2034 2021 1947 +f 216 1810 585 +f 1912 543 2014 +f 1390 2051 1537 +f 1872 1873 1910 +f 1984 2045 1214 +f 597 1912 1886 +f 1593 2146 2100 +f 2071 2062 2090 +f 2034 2046 1982 +f 2034 1947 2046 +f 1214 2045 2116 +f 1873 1887 1910 +f 1887 1901 1910 +f 1562 1447 1106 +f 2163 431 1957 +f 1948 1972 1936 +f 1972 1948 1992 +f 2014 2015 2013 +f 1853 2014 2013 +f 1550 1884 1853 +f 1947 2468 1994 +f 1355 1550 2154 +f 1355 1884 1550 +f 2081 2108 2128 +f 2024 1965 1492 +f 2024 2032 1965 +f 2116 1604 803 +f 1901 1911 1920 +f 1939 1968 1920 +f 1911 1939 1920 +f 872 1626 1666 +f 2062 2091 2120 +f 1819 1927 1759 +f 1021 1674 1780 +f 872 1673 1756 +f 1550 501 2171 +f 1378 1550 2171 +f 2146 2162 2145 +f 1358 482 192 +f 2109 2120 2119 +f 1866 1872 2227 +f 1391 2012 1860 +f 2136 2137 2161 +f 2162 1661 236 +f 1887 1894 1901 +f 1901 1894 1911 +f 505 1707 206 +f 2120 2137 2136 +f 2142 2164 1674 +f 1860 2012 1861 +f 1894 1939 1911 +f 2080 2060 2118 +f 2162 236 508 +f 2164 1815 1742 +f 1018 2093 1537 +f 2154 1378 2161 +f 2041 2098 2491 +f 2043 2042 2032 +f 1108 1018 1537 +f 1465 2094 1808 +f 502 1643 1661 +f 2467 1618 1656 +f 2119 2136 2135 +f 2119 2108 2071 +f 878 1183 1195 +f 2101 1594 1593 +f 2033 2370 2063 +f 2482 2491 2098 +f 1282 2406 1275 +f 2003 1948 1956 +f 2043 2032 2024 +f 2025 2043 2024 +f 2154 1550 1378 +f 1795 2498 1764 +f 2142 1548 2164 +f 2431 2454 2422 +f 1981 2011 1993 +f 2349 2391 2362 +f 502 2162 2146 +f 2025 2024 2360 +f 2129 2120 2091 +f 1732 1985 2007 +f 2171 1308 209 +f 1930 1995 2041 +f 1390 1238 2051 +f 1866 1878 1887 +f 1878 1894 1887 +f 1965 2032 2011 +f 874 2480 2492 +f 2071 2108 2069 +f 1358 1731 482 +f 430 2021 2034 +f 1965 2003 1964 +f 1855 1889 831 +f 1668 1773 2150 +f 1390 2156 1238 +f 898 869 1903 +f 2391 2407 2362 +f 2121 2111 2074 +f 1548 1259 2164 +f 2099 2129 2091 +f 1550 1853 501 +f 1853 1852 501 +f 952 2017 969 +f 2085 2121 2074 +f 2130 2006 1391 +f 2144 1367 543 +f 2100 2146 2099 +f 1545 1319 113 +f 1903 1922 898 +f 1922 1931 898 +f 585 2170 1641 +f 2007 2017 952 +f 2017 2074 969 +f 1558 1753 1813 +f 837 2005 1517 +f 2005 2006 2130 +f 1532 1474 1528 +f 2003 1981 1948 +f 2070 2071 2069 +f 1922 919 1931 +f 2017 2085 2074 +f 2085 2104 2121 +f 2100 2099 2082 +f 2156 2110 2034 +f 505 2474 2004 +f 1903 871 1922 +f 1922 1952 919 +f 919 1952 1985 +f 1985 2001 2007 +f 2001 2036 2017 +f 2007 2001 2017 +f 2017 2036 2085 +f 2036 2047 2085 +f 2047 2075 2085 +f 2075 2104 2085 +f 1948 1993 2023 +f 2400 2422 2407 +f 2011 2070 1993 +f 2033 2043 2025 +f 2012 2015 1698 +f 1876 1338 2165 +f 871 1940 1922 +f 1985 1976 2001 +f 2121 2104 2143 +f 1051 1413 1456 +f 2358 1362 2379 +f 1859 1789 1870 +f 2090 2109 2071 +f 1405 1398 1885 +f 1886 1884 1355 +f 1922 1960 1952 +f 1952 1960 1985 +f 1960 1976 1985 +f 1956 1948 1936 +f 2135 209 2128 +f 2157 1875 1212 +f 2160 2168 2169 +f 1900 1461 1918 +f 2001 2018 2036 +f 2075 2086 2104 +f 2111 2142 2103 +f 1937 1956 1936 +f 2023 2070 2061 +f 2135 2128 2108 +f 2042 2071 2011 +f 2138 413 2383 +f 2033 2072 2043 +f 1922 1940 1960 +f 2070 2069 2061 +f 2069 2108 2061 +f 2108 2119 2135 +f 1855 1904 1889 +f 1889 1904 871 +f 871 1904 1940 +f 1976 2018 2001 +f 2036 2018 2047 +f 2122 2143 2104 +f 216 1642 489 +f 2148 984 2143 +f 1975 1974 1967 +f 2157 1683 1516 +f 1614 1593 1594 +f 2269 2270 2276 +f 1926 2147 29 +f 2082 2091 2072 +f 430 503 2059 +f 1904 1905 1940 +f 1940 1961 1960 +f 1961 1976 1960 +f 2087 2086 2075 +f 2065 2156 1390 +f 1820 1838 1900 +f 534 1308 837 +f 2167 273 1018 +f 831 1850 1855 +f 2019 2037 2018 +f 2018 2037 2047 +f 2037 2075 2047 +f 2086 2095 2104 +f 2095 2122 2104 +f 2122 2148 2143 +f 1926 1213 1995 +f 1405 1885 1761 +f 2006 2013 2012 +f 2211 2233 2216 +f 1855 1890 1904 +f 1904 1895 1905 +f 1905 1932 1940 +f 1961 1977 1976 +f 1976 1986 2018 +f 2484 2476 1518 +f 1870 1411 1859 +f 1548 2142 2111 +f 1904 1890 1895 +f 1895 1932 1905 +f 1940 1932 1961 +f 1976 1977 1986 +f 1986 2008 2018 +f 2018 2008 2019 +f 2087 2075 2037 +f 2087 2095 2086 +f 2094 1391 1860 +f 1852 1853 2006 +f 1853 2013 2006 +f 929 979 850 +f 1855 1874 1890 +f 2008 2028 2019 +f 1993 2070 2023 +f 1705 1799 1998 +f 1491 2147 206 +f 1851 1856 1855 +f 1895 1890 1874 +f 2038 2019 2028 +f 2038 2048 2037 +f 2019 2038 2037 +f 2048 2067 2087 +f 2037 2048 2087 +f 2087 2067 2095 +f 2095 2149 2122 +f 2149 2148 2122 +f 1308 2005 837 +f 209 1308 1387 +f 1601 2102 1927 +f 254 170 201 +f 1800 1403 1763 +f 1510 1346 1740 +f 870 871 1903 +f 1919 1650 1619 +f 2148 1667 1753 +f 1932 1923 1961 +f 1977 1953 1986 +f 2067 2112 2095 +f 2112 2149 2095 +f 2148 2149 1667 +f 2422 2421 2407 +f 1926 2026 1213 +f 1912 2144 543 +f 2128 1387 2153 +f 1733 1510 1740 +f 990 853 2489 +f 503 1214 803 +f 1921 431 2163 +f 2146 2145 2129 +f 2144 1921 2163 +f 1855 1856 1874 +f 1895 1923 1932 +f 1923 1941 1961 +f 1961 1941 1977 +f 2048 2076 2067 +f 2076 2113 2067 +f 2067 2113 2112 +f 1723 1900 1937 +f 1870 1900 1723 +f 1367 2163 1338 +f 520 1346 1510 +f 1698 1831 1861 +f 1984 1919 2045 +f 1895 1891 1923 +f 2008 1986 2028 +f 1948 1981 1993 +f 1883 1346 520 +f 1883 1814 1346 +f 1930 206 2147 +f 2499 2486 1447 +f 1891 1906 1923 +f 1923 1953 1941 +f 1953 1977 1941 +f 1953 1987 1986 +f 2113 2123 2112 +f 2123 2149 2112 +f 1387 1308 1226 +f 1599 1688 1346 +f 2093 1390 1537 +f 2003 2011 1981 +f 1987 2028 1986 +f 2038 2049 2048 +f 2048 2049 2076 +f 1813 1667 2149 +f 2123 1813 2149 +f 1461 1469 1964 +f 1757 1510 1743 +f 505 1930 1999 +f 2223 1784 1789 +f 1532 1522 1651 +f 1906 1913 1923 +f 1913 1943 1923 +f 1943 1942 1923 +f 1923 1942 1953 +f 1942 1987 1953 +f 1308 1852 2005 +f 2053 1814 1883 +f 1733 1740 1541 +f 2154 1886 1355 +f 1503 1528 1474 +f 1874 1879 1895 +f 1895 1879 1891 +f 2076 2124 2113 +f 2113 2124 2123 +f 1896 1891 1879 +f 1891 1896 1906 +f 1942 1962 1987 +f 1962 2009 2028 +f 1987 1962 2028 +f 2009 2038 2028 +f 2109 2119 2071 +f 1918 1956 1937 +f 1851 1864 1856 +f 1896 1897 1906 +f 1906 1897 1913 +f 1943 1962 1942 +f 2049 2077 2076 +f 2124 2125 2123 +f 1930 2147 1926 +f 1902 1894 1878 +f 482 1510 1757 +f 2129 2137 2120 +f 503 803 2059 +f 1847 1857 1851 +f 1851 1857 1864 +f 2039 2038 2009 +f 2038 2039 2049 +f 2076 2077 2124 +f 2150 1813 2123 +f 482 520 1510 +f 1994 1821 2046 +f 2044 2004 1764 +f 1864 1867 1856 +f 1867 1874 1856 +f 1897 1944 1913 +f 1943 1944 1962 +f 2124 2126 2125 +f 2150 2123 2125 +f 2099 2146 2129 +f 2041 1995 2098 +f 1605 1641 2151 +f 1847 1959 1857 +f 1874 1867 1879 +f 1913 1944 1943 +f 1944 1963 1962 +f 2077 2096 2124 +f 2096 2126 2124 +f 2126 2150 2125 +f 941 1650 1919 +f 2135 2136 209 +f 1884 1886 2014 +f 2049 2029 2077 +f 1388 2127 1389 +f 1389 2127 1566 +f 1930 1926 1995 +f 941 1919 1316 +f 2110 503 430 +f 1867 1880 1879 +f 1879 1880 1896 +f 1897 1907 1944 +f 1963 1978 1962 +f 1962 1978 2009 +f 2039 2029 2049 +f 2077 2078 2096 +f 822 823 827 +f 2166 1668 2150 +f 81 941 1316 +f 2204 2216 2203 +f 2011 2071 2070 +f 1880 1892 1896 +f 1892 1907 1897 +f 1896 1892 1897 +f 1907 1914 1944 +f 1978 2010 2009 +f 2010 2039 2009 +f 1688 1740 1346 +f 1789 1820 1870 +f 2130 1391 2094 +f 1944 1945 1963 +f 2029 2078 2077 +f 1767 2150 2126 +f 1767 2166 2150 +f 803 2022 2467 +f 1503 1927 2102 +f 1914 1954 1944 +f 1944 1954 1945 +f 1963 1970 1978 +f 2078 2105 2096 +f 2105 2126 2096 +f 1965 2011 2003 +f 192 1626 1358 +f 2101 1559 1594 +f 1930 2041 1999 +f 1698 1876 2165 +f 1398 1871 891 +f 2165 1338 1681 +f 1970 2010 1978 +f 2010 2030 2029 +f 2039 2010 2029 +f 2030 2055 2078 +f 2029 2030 2078 +f 1849 1848 2175 +f 1871 1862 891 +f 543 2015 2014 +f 1857 1858 1864 +f 1864 1858 1867 +f 1963 1945 1970 +f 2055 2088 2078 +f 2078 2088 2105 +f 2105 2131 2126 +f 2126 2131 1767 +f 2063 2083 2033 +f 2161 2171 209 +f 2032 2042 2011 +f 1813 2150 1773 +f 1914 1908 1954 +f 1970 1979 2010 +f 2088 2131 2105 +f 2015 543 1876 +f 1694 1692 1048 +f 1395 2207 1859 +f 1395 1393 2207 +f 1730 1784 1736 +f 2500 2466 2470 +f 1709 1701 1757 +f 1945 1979 1970 +f 2030 2050 2055 +f 2350 2317 2286 +f 2154 2155 1886 +f 871 860 1889 +f 2161 209 2136 +f 2497 2463 2493 +f 2190 2204 2203 +f 1800 2179 1404 +f 2477 2469 1385 +f 1385 1715 2477 +f 2128 209 1387 +f 1858 1868 1867 +f 1867 1881 1880 +f 1893 1892 1880 +f 1881 1893 1880 +f 1893 1907 1892 +f 1907 1908 1914 +f 1954 1979 1945 +f 1979 1980 2010 +f 2131 2159 1767 +f 1765 93 339 +f 1761 1877 1405 +f 523 1347 515 +f 1541 2157 1738 +f 2144 2163 1367 +f 1380 1389 1566 +f 2317 2392 2316 +f 1994 2498 1801 +f 1867 1868 1881 +f 1980 2050 2030 +f 2010 1980 2030 +f 2050 2089 2055 +f 2055 2089 2088 +f 2088 2114 2131 +f 1538 1651 1659 +f 2145 2155 2129 +f 2140 29 1928 +f 2370 2033 2025 +f 2252 2239 2240 +f 2239 2252 1862 +f 2392 2391 2316 +f 2469 2501 1385 +f 2477 1715 1710 +f 502 1614 1643 +f 2438 1227 2431 +f 1915 1907 1893 +f 1915 1908 1907 +f 1954 1908 1979 +f 1908 1988 1979 +f 1979 1988 1980 +f 2114 2159 2131 +f 2155 2154 2129 +f 508 1966 2144 +f 872 1756 1626 +f 1710 1715 1505 +f 236 1966 508 +f 2272 2284 1398 +f 2325 2355 2319 +f 1548 2121 1779 +f 1532 1528 1522 +f 1980 2056 2050 +f 2050 2056 2089 +f 2013 2015 2012 +f 1964 2003 1956 +f 2006 2012 1391 +f 1565 1927 1503 +f 2244 2243 2226 +f 5 1715 1385 +f 1858 1848 1868 +f 1915 1946 1908 +f 1946 1988 1908 +f 1980 2020 2056 +f 2115 2159 2114 +f 2092 2083 2063 +f 1398 2284 1687 +f 2162 2155 2145 +f 519 2475 2488 +f 2158 5 1385 +f 5 1505 1715 +f 1692 1694 1505 +f 1988 2020 1980 +f 2115 2169 2159 +f 2169 2168 2159 +f 2083 2082 2072 +f 1316 1984 1983 +f 1488 1619 1650 +f 2083 2072 2033 +f 2361 1210 1233 +f 1933 1946 1915 +f 2056 2079 2089 +f 2088 2115 2114 +f 2099 2091 2082 +f 2162 532 2155 +f 1852 2006 2005 +f 2023 2061 2052 +f 2176 2184 2175 +f 2162 985 532 +f 1909 1893 1881 +f 1909 1915 1893 +f 1988 2040 2020 +f 2040 2056 2020 +f 2089 2079 2088 +f 2088 2079 2115 +f 1782 1444 1882 +f 1216 1215 2320 +f 867 1939 1894 +f 867 903 1939 +f 1372 2398 1379 +f 1863 504 2027 +f 2158 1385 504 +f 1868 1782 1881 +f 1909 1933 1915 +f 2040 1988 1946 +f 1481 2024 1492 +f 2120 2136 2119 +f 1522 1528 1518 +f 1871 1398 1405 +f 1221 1408 1399 +f 1357 5 2158 +f 2179 1800 1763 +f 1868 1865 1782 +f 1882 1881 1782 +f 1882 1909 1881 +f 2040 2057 2056 +f 2106 2079 2056 +f 2057 2106 2056 +f 2106 2132 2079 +f 2132 2115 2079 +f 2115 2132 2169 +f 532 985 597 +f 2092 2100 2082 +f 1210 1221 1399 +f 1399 1233 1210 +f 2130 2002 1517 +f 1849 1865 1868 +f 1933 2040 1946 +f 52 1269 30 +f 1667 1813 1753 +f 1997 1380 1673 +f 940 1008 1088 +f 1947 1994 2046 +f 1882 1916 1909 +f 1924 1933 1909 +f 1533 2040 1933 +f 1533 1534 2040 +f 2058 2040 1534 +f 2058 2057 2040 +f 1238 191 1768 +f 1997 1389 1380 +f 1875 1541 1554 +f 1854 504 1863 +f 1854 2158 504 +f 2396 1275 2406 +f 2426 2443 153 +f 1916 1924 1909 +f 1925 1935 1934 +f 1870 1723 1426 +f 2058 2097 2057 +f 2097 2106 2057 +f 2132 2151 2169 +f 2151 2160 2169 +f 1106 1635 1562 +f 1957 1768 1681 +f 1957 2051 1768 +f 526 535 33 +f 1614 1594 1609 +f 2233 2229 2216 +f 2496 2027 2084 +f 2496 1863 2027 +f 2117 1854 1863 +f 2016 2158 1854 +f 2016 1504 1357 +f 2158 2016 1357 +f 1114 236 1661 +f 2129 2154 2137 +f 2133 2106 2097 +f 2491 1999 2041 +f 2051 1238 1768 +f 2061 2108 2081 +f 2189 2195 2186 +f 2348 2349 2362 +f 1701 192 482 +f 505 1737 1707 +f 2133 2132 2106 +f 2132 2133 2151 +f 2151 2170 2160 +f 502 1661 2162 +f 1998 1389 1997 +f 2297 2352 2329 +f 2352 2364 2329 +f 2394 2414 2364 +f 2352 2394 2364 +f 2402 512 2415 +f 2255 2254 2243 +f 2446 1365 2456 +f 2271 2282 2298 +f 846 2283 2264 +f 2293 2310 2318 +f 2254 2295 2294 +f 2283 2290 2278 +f 2270 2294 2293 +f 2423 2455 2400 +f 2281 2287 2267 +f 2190 2191 2204 +f 2271 2263 2282 +f 2334 2329 2364 +f 2424 2432 2409 +f 2282 2263 2298 +f 1409 1659 1958 +f 2263 2302 2298 +f 2297 2329 2296 +f 1256 446 2346 +f 1958 2502 2478 +f 2437 2399 2444 +f 263 2366 2359 +f 849 827 823 +f 2311 2325 2290 +f 2499 2379 2434 +f 2446 2456 2423 +f 947 2358 2379 +f 2499 947 2379 +f 2205 2195 2212 +f 2245 2237 2227 +f 2245 2256 2237 +f 2256 2263 2271 +f 556 571 2305 +f 1528 2068 1518 +f 2424 2439 2432 +f 2302 2352 2297 +f 1866 2237 826 +f 2248 2242 2211 +f 2334 2364 2363 +f 2235 2244 2226 +f 2255 2295 2254 +f 2329 2324 2296 +f 2439 2447 1973 +f 2329 2334 2324 +f 2409 2432 2414 +f 2293 2318 2276 +f 866 2425 2416 +f 1487 1493 2372 +f 2237 2231 2230 +f 2415 512 17 +f 2035 1236 26 +f 921 2138 688 +f 2491 2482 2462 +f 6 181 197 +f 2481 948 1795 +f 2138 2383 2382 +f 2377 2394 2352 +f 2377 506 2394 +f 2394 506 2402 +f 2401 2402 2415 +f 2394 2402 2401 +f 2318 2326 2276 +f 2439 2457 2432 +f 2298 2302 2297 +f 2244 2249 2243 +f 2404 1100 2382 +f 2238 2245 2227 +f 2245 2257 2256 +f 2257 2263 2256 +f 2324 2334 2328 +f 2257 2289 2263 +f 2289 2302 2263 +f 2236 2231 2250 +f 2138 2382 688 +f 2383 2404 2382 +f 1100 2404 2343 +f 2353 2352 2302 +f 2353 2377 2352 +f 2237 2230 2220 +f 2335 2355 2325 +f 2308 2340 2315 +f 2253 2269 2276 +f 2311 2335 2325 +f 2439 2424 511 +f 2268 2267 2248 +f 2383 413 2404 +f 123 971 832 +f 2234 2243 2269 +f 2225 2213 2234 +f 2219 2213 2225 +f 2195 2196 2212 +f 1544 2418 1549 +f 413 866 2404 +f 2404 866 2416 +f 2416 2417 2404 +f 2404 2417 2343 +f 2415 2409 2401 +f 2196 2219 2212 +f 2268 2248 2218 +f 2206 2214 2197 +f 2417 2332 2343 +f 2343 2332 832 +f 2330 2302 2289 +f 2330 2353 2302 +f 2453 2454 515 +f 2218 2248 2217 +f 2218 2217 2205 +f 2276 2281 2268 +f 2178 2197 2177 +f 2197 2189 2177 +f 2332 2066 832 +f 832 2066 123 +f 2231 2236 2230 +f 669 950 1144 +f 2217 2211 2199 +f 1216 1209 1217 +f 2066 2365 123 +f 2230 2226 2214 +f 2290 2325 2304 +f 2325 2319 2304 +f 2217 2248 2211 +f 2191 2192 2199 +f 510 525 2035 +f 2417 1917 2332 +f 2332 1917 2066 +f 2408 2413 2341 +f 2248 2267 2242 +f 2326 2333 2281 +f 1340 2365 2066 +f 2440 1302 1340 +f 2226 2230 2235 +f 1153 1163 1116 +f 2431 2455 2438 +f 2416 2425 2417 +f 2495 2474 2462 +f 2290 2304 2277 +f 825 2227 1872 +f 151 239 1038 +f 9 151 1038 +f 545 928 2381 +f 2440 2406 1384 +f 928 1596 2381 +f 2186 2188 2185 +f 2456 26 1888 +f 2287 2333 2262 +f 2425 2342 2417 +f 2342 1917 2417 +f 1917 877 2066 +f 2336 1340 2066 +f 2336 2440 1340 +f 2328 2351 2327 +f 825 2238 2227 +f 2351 2368 2327 +f 1222 2388 1211 +f 678 756 734 +f 428 263 1343 +f 2188 2191 2190 +f 2341 2376 2333 +f 2066 877 2336 +f 2290 2277 2278 +f 739 634 592 +f 675 304 14 +f 2384 675 14 +f 2199 2211 2204 +f 2191 2199 2204 +f 2322 2318 2310 +f 2287 2262 2233 +f 2185 2188 2184 +f 2386 2425 845 +f 2384 572 675 +f 1128 123 2365 +f 832 971 2343 +f 2188 2186 2191 +f 2185 2184 2176 +f 2345 1917 2342 +f 2345 877 1917 +f 2336 2406 2440 +f 971 1100 2343 +f 2299 2289 2257 +f 2299 2303 2289 +f 2249 2255 2243 +f 506 513 512 +f 2437 955 1219 +f 1587 2398 1324 +f 877 2396 2336 +f 2336 2396 2406 +f 2463 2479 879 +f 2376 2412 2350 +f 2281 2267 2268 +f 2303 2330 2289 +f 624 635 159 +f 1996 2356 1561 +f 2449 2436 1996 +f 2356 2054 2451 +f 928 2398 1587 +f 2333 2350 2262 +f 2035 26 2456 +f 2346 2342 2425 +f 2346 2345 2342 +f 1544 2380 2418 +f 2412 2392 2350 +f 622 509 1151 +f 2436 2054 1996 +f 545 2451 928 +f 2326 2341 2333 +f 2346 2425 2386 +f 1365 2035 2456 +f 2369 2377 2353 +f 2369 506 2377 +f 2451 900 928 +f 900 2398 928 +f 1235 1888 1244 +f 2337 2345 2346 +f 877 772 2396 +f 772 1275 2396 +f 2432 2446 2414 +f 2294 2295 2310 +f 2369 2330 828 +f 2418 2419 2436 +f 2450 2429 2436 +f 2436 2429 2054 +f 2490 2494 1656 +f 1321 155 2338 +f 1256 2346 2386 +f 2448 877 2345 +f 877 2448 772 +f 2446 2423 2414 +f 2351 2334 2363 +f 2243 2254 2269 +f 2380 2419 2418 +f 2419 2450 2436 +f 2283 2278 2264 +f 822 2197 823 +f 1008 1759 1565 +f 2448 2345 2337 +f 2270 2293 2276 +f 2323 2324 2328 +f 2429 1012 2054 +f 2226 2243 2213 +f 2395 325 772 +f 2370 2367 2380 +f 2054 2435 2451 +f 2435 2397 2451 +f 2451 2397 900 +f 1774 1974 1975 +f 2305 2290 2283 +f 846 2305 2283 +f 2320 1215 2285 +f 2139 2448 2337 +f 2448 2395 772 +f 1232 1231 1216 +f 2272 2285 2284 +f 2367 2371 2380 +f 2371 2405 2380 +f 2380 2405 2419 +f 2419 2429 2450 +f 2429 176 1012 +f 2397 2373 900 +f 2373 2398 900 +f 2373 1379 2398 +f 2372 1500 1508 +f 1133 1303 1142 +f 2252 2273 2272 +f 891 2252 2272 +f 2419 2405 2429 +f 2405 2430 2429 +f 2429 2430 176 +f 2189 2186 2181 +f 2212 2219 2218 +f 2312 2139 2337 +f 2139 2384 2448 +f 2448 2384 2395 +f 899 855 843 +f 2272 2273 2285 +f 2331 2303 2299 +f 176 2435 2054 +f 1012 176 2054 +f 2177 2185 2176 +f 2218 2219 2225 +f 1216 1220 1215 +f 2378 2139 2312 +f 2384 14 2395 +f 2324 2295 2255 +f 2240 2273 2252 +f 2371 2387 2405 +f 2410 2430 2405 +f 2430 2442 176 +f 2435 2344 2397 +f 2397 2344 2373 +f 2456 1888 2455 +f 2242 2267 2233 +f 2233 2262 2229 +f 2378 2384 2139 +f 2323 2310 2295 +f 2323 2322 2310 +f 2240 2274 2273 +f 974 841 990 +f 2490 1447 2486 +f 2387 2410 2405 +f 2442 2141 176 +f 2344 1778 2373 +f 972 1379 2373 +f 1778 972 2373 +f 1379 972 428 +f 1211 2437 1223 +f 1228 1215 1220 +f 702 2378 2312 +f 17 518 2415 +f 1888 26 1244 +f 2324 2323 2295 +f 2305 2311 2290 +f 2307 2285 2273 +f 2274 2307 2273 +f 2307 2320 2285 +f 2369 531 506 +f 2435 2258 2344 +f 2296 2324 2288 +f 1233 1217 2361 +f 2360 2371 2367 +f 2410 2442 2430 +f 176 2141 2258 +f 176 2258 2435 +f 539 2331 66 +f 2350 2392 2317 +f 2268 2225 2253 +f 1508 1500 2371 +f 2360 1508 2371 +f 2371 1500 2387 +f 972 2366 428 +f 1626 1686 1358 +f 1759 1807 1819 +f 2277 2257 2245 +f 2277 2299 2257 +f 1784 2228 1736 +f 2265 2240 1736 +f 2228 2265 1736 +f 2265 2274 2240 +f 1209 2320 2307 +f 2320 1209 1216 +f 1555 1584 1560 +f 2387 1500 2372 +f 2410 2420 2442 +f 2433 972 1778 +f 2433 2366 972 +f 955 522 1225 +f 2339 2307 2274 +f 2372 1493 2387 +f 2411 2420 2410 +f 2420 954 2442 +f 2442 954 2141 +f 2344 2433 1778 +f 2205 2212 2218 +f 2328 2334 2351 +f 2394 2401 2414 +f 2250 2256 2271 +f 2339 1209 2307 +f 2328 2322 2323 +f 866 845 2425 +f 3 316 893 +f 2387 2411 2410 +f 2441 2141 954 +f 2141 2441 2258 +f 2354 2433 2344 +f 2254 2294 2270 +f 2269 2254 2270 +f 863 2305 846 +f 2441 2354 2258 +f 2258 2354 2344 +f 2319 2355 51 +f 2223 2228 1784 +f 1493 2411 2387 +f 1560 2449 1555 +f 2288 2324 2255 +f 825 2251 2238 +f 2251 2245 2238 +f 1299 84 1312 +f 2246 2265 2228 +f 2313 2274 2265 +f 2313 2339 2274 +f 2251 2277 2245 +f 2319 51 2331 +f 891 1862 2252 +f 2443 954 2420 +f 2443 2441 954 +f 511 2447 2439 +f 2242 2233 2211 +f 188 15 814 +f 2443 2426 2441 +f 2426 2354 2441 +f 2306 2403 2433 +f 2433 2403 2366 +f 539 2303 2331 +f 2246 2228 2223 +f 1030 1819 1807 +f 2354 2306 2433 +f 2413 2412 2376 +f 2438 2455 1888 +f 1848 1857 2176 +f 2207 2208 2223 +f 2208 2246 2223 +f 1209 2339 1217 +f 2339 2361 1217 +f 1221 1210 2388 +f 554 109 78 +f 386 1375 95 +f 2327 2326 2318 +f 2179 2182 1393 +f 2182 2208 1393 +f 1393 2208 2207 +f 2361 2399 2388 +f 2388 2399 1211 +f 2306 2354 2426 +f 2403 2359 2366 +f 2214 2226 2213 +f 2268 2253 2276 +f 889 2200 2179 +f 2200 2182 2179 +f 2200 2221 2182 +f 2221 2208 2182 +f 2314 2265 2246 +f 2314 2313 2265 +f 2339 2374 2361 +f 2478 2434 2379 +f 2205 2217 2199 +f 2208 2259 2246 +f 2259 2275 2246 +f 2314 2321 2313 +f 2313 2347 2339 +f 2347 2374 2339 +f 2374 2399 2361 +f 153 154 2426 +f 154 2306 2426 +f 2385 2359 2403 +f 2221 2259 2208 +f 2306 2357 2403 +f 2357 2385 2403 +f 2237 2256 2231 +f 2172 2180 889 +f 2180 2200 889 +f 2200 2201 2221 +f 2246 2291 2314 +f 2374 2444 2399 +f 571 555 2311 +f 2192 2205 2199 +f 2173 2180 2172 +f 2279 2246 2275 +f 2279 2291 2246 +f 2292 2314 2291 +f 2321 2362 2313 +f 2362 2347 2313 +f 2347 2389 2374 +f 2444 955 2437 +f 2292 2291 2279 +f 2452 2444 2374 +f 2054 2356 1996 +f 2338 2306 154 +f 2186 2192 2191 +f 2193 2201 2200 +f 2259 2221 2201 +f 2247 2259 2201 +f 2452 955 2444 +f 2278 2277 2251 +f 2338 2357 2306 +f 2181 2186 2185 +f 2276 2326 2281 +f 2432 2457 2446 +f 2198 2201 2193 +f 2198 2232 2201 +f 2232 2247 2201 +f 2389 2452 2374 +f 2452 1630 955 +f 1403 1749 1444 +f 1555 1996 1561 +f 2357 2427 2385 +f 2385 2428 230 +f 2409 2415 2424 +f 2304 2331 2299 +f 2193 2200 2180 +f 2445 2452 2389 +f 1565 1759 1927 +f 2380 1544 2370 +f 2338 2427 2357 +f 2427 2428 2385 +f 230 222 253 +f 2202 2198 2193 +f 2202 2209 2198 +f 2209 2241 2198 +f 2241 2232 2198 +f 2266 2275 2259 +f 2365 1340 1128 +f 2415 518 2424 +f 2338 170 2427 +f 170 2428 2427 +f 2181 2185 2177 +f 2196 2195 2189 +f 2183 2193 2180 +f 2453 1630 2452 +f 2197 2214 2189 +f 2401 2409 2414 +f 822 2220 2197 +f 1210 2361 2388 +f 2187 2193 2183 +f 2187 2202 2193 +f 2266 2279 2275 +f 2279 2300 2292 +f 2375 2347 2362 +f 2375 2390 2347 +f 2390 2389 2347 +f 2453 2452 2445 +f 1347 1630 2453 +f 1630 1347 522 +f 2220 2206 2197 +f 2262 2350 2286 +f 170 254 2428 +f 2457 1973 2446 +f 1973 1365 2446 +f 2174 2183 2180 +f 2194 2202 2187 +f 2222 2241 2209 +f 2222 2260 2241 +f 2266 2259 2247 +f 2390 2445 2389 +f 2264 2251 825 +f 2363 2368 2351 +f 2326 2393 2341 +f 1855 1850 1851 +f 2210 2209 2202 +f 2210 2222 2209 +f 2261 2260 2222 +f 2280 2279 2266 +f 2280 2300 2279 +f 251 263 2359 +f 2277 2304 2299 +f 2220 2230 2206 +f 2202 2194 2210 +f 2213 2243 2234 +f 2328 2327 2322 +f 2294 2310 2293 +f 2214 2196 2189 +f 2196 2213 2219 +f 2224 2222 2210 +f 2421 2390 2375 +f 2206 2230 2214 +f 2194 2203 2210 +f 2224 2261 2222 +f 2421 2445 2390 +f 2322 2327 2318 +f 2393 2408 2341 +f 1365 1973 510 +f 2216 2210 2203 +f 2216 2224 2210 +f 2266 2308 2280 +f 2280 2308 2300 +f 2407 2421 2375 +f 2175 2183 2174 +f 2194 2190 2203 +f 2454 2445 2421 +f 522 1347 523 +f 2456 2455 2423 +f 823 2197 2178 +f 2281 2333 2287 +f 2188 2187 2183 +f 2188 2190 2194 +f 2187 2188 2194 +f 2308 2315 2300 +f 2407 2375 2362 +f 2443 2420 2503 +f 2420 2411 2503 +f 2411 1493 2503 +f 1493 1487 2503 +f 1487 1318 2503 +f 1318 1320 2503 +f 1320 2443 2503 diff --git a/gradio/templates/frontend/static/img/Duck.glb b/gradio/templates/frontend/static/img/Duck.glb new file mode 100644 index 0000000000000000000000000000000000000000..217170d2bd67051270be974292dc3b834eefe206 Binary files /dev/null and b/gradio/templates/frontend/static/img/Duck.glb differ diff --git a/gradio/templates/frontend/static/img/api-logo.svg b/gradio/templates/frontend/static/img/api-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..bce49a58f0e8a89980e96b8f3bb99f7da48e6254 --- /dev/null +++ b/gradio/templates/frontend/static/img/api-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/gradio/templates/frontend/static/img/camera.svg b/gradio/templates/frontend/static/img/camera.svg new file mode 100644 index 0000000000000000000000000000000000000000..b46daebb74be9fffa8868fcee3d9f2e8759d08d3 --- /dev/null +++ b/gradio/templates/frontend/static/img/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gradio/templates/frontend/static/img/clear.svg b/gradio/templates/frontend/static/img/clear.svg new file mode 100644 index 0000000000000000000000000000000000000000..bea03307482b585d819f3d581731e17e0ed37c29 --- /dev/null +++ b/gradio/templates/frontend/static/img/clear.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/gradio/templates/frontend/static/img/edit.svg b/gradio/templates/frontend/static/img/edit.svg new file mode 100644 index 0000000000000000000000000000000000000000..07fbe15983f2a5a9f9447c21a414a5c82ee8dadf --- /dev/null +++ b/gradio/templates/frontend/static/img/edit.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/gradio/templates/frontend/static/img/javascript.svg b/gradio/templates/frontend/static/img/javascript.svg new file mode 100644 index 0000000000000000000000000000000000000000..426b76c2fb75e27d9825661ddf341ac7aa0e5ced --- /dev/null +++ b/gradio/templates/frontend/static/img/javascript.svg @@ -0,0 +1,16 @@ + diff --git a/gradio/templates/frontend/static/img/logo.svg b/gradio/templates/frontend/static/img/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..069779a490d8e0dc7cbfe41ed8a81fd6e5444dc9 --- /dev/null +++ b/gradio/templates/frontend/static/img/logo.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/gradio/templates/frontend/static/img/logo_error.svg b/gradio/templates/frontend/static/img/logo_error.svg new file mode 100644 index 0000000000000000000000000000000000000000..5662b675528d13bd1cd70254cc125e27104f4409 --- /dev/null +++ b/gradio/templates/frontend/static/img/logo_error.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + ERROR + + + diff --git a/gradio/templates/frontend/static/img/python.svg b/gradio/templates/frontend/static/img/python.svg new file mode 100644 index 0000000000000000000000000000000000000000..ae0065b85722deca4baac8222b2ebf1df4a1c82b --- /dev/null +++ b/gradio/templates/frontend/static/img/python.svg @@ -0,0 +1,20 @@ + diff --git a/gradio/templates/frontend/static/img/undo-solid.svg b/gradio/templates/frontend/static/img/undo-solid.svg new file mode 100644 index 0000000000000000000000000000000000000000..bbbc9670bbf3efdd50fb683f2fb5eac6eaff9f81 --- /dev/null +++ b/gradio/templates/frontend/static/img/undo-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gradio/test_data/__init__.py b/gradio/test_data/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gradio/test_data/__pycache__/__init__.cpython-38.pyc b/gradio/test_data/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76751bc1e63d69696bae796aed10214a3029ea9a Binary files /dev/null and b/gradio/test_data/__pycache__/__init__.cpython-38.pyc differ diff --git a/gradio/test_data/__pycache__/blocks_configs.cpython-38.pyc b/gradio/test_data/__pycache__/blocks_configs.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d266fd48cab093c9da00e509021ae6a19524d7f Binary files /dev/null and b/gradio/test_data/__pycache__/blocks_configs.cpython-38.pyc differ diff --git a/gradio/test_data/blocks_configs.py b/gradio/test_data/blocks_configs.py new file mode 100644 index 0000000000000000000000000000000000000000..b1701588bd6bf7c0f769f67d1e619d5033312af3 --- /dev/null +++ b/gradio/test_data/blocks_configs.py @@ -0,0 +1,687 @@ +XRAY_CONFIG = { + "version": "3.4b3\n", + "mode": "blocks", + "dev_mode": True, + "analytics_enabled": False, + "components": [ + { + "id": 27, + "type": "markdown", + "props": { + "value": "

Detect Disease From Scan

\n

With this model you can lorem ipsum

\n
    \n
  • ipsum 1
  • \n
  • ipsum 2
  • \n
\n", + "name": "markdown", + "visible": True, + "style": {}, + }, + }, + { + "id": 28, + "type": "checkboxgroup", + "props": { + "choices": ["Covid", "Malaria", "Lung Cancer"], + "value": [], + "label": "Disease to Scan For", + "show_label": True, + "name": "checkboxgroup", + "visible": True, + "style": {}, + }, + }, + {"id": 29, "type": "tabs", "props": {"visible": True, "style": {}}}, + { + "id": 30, + "type": "tabitem", + "props": {"label": "X-ray", "visible": True, "style": {}}, + }, + { + "id": 31, + "type": "row", + "props": { + "type": "row", + "variant": "default", + "visible": True, + "style": {}, + }, + }, + { + "id": 32, + "type": "image", + "props": { + "image_mode": "RGB", + "source": "upload", + "tool": "editor", + "streaming": False, + "mirror_webcam": True, + "show_label": True, + "name": "image", + "visible": True, + "style": {}, + }, + }, + { + "id": 33, + "type": "json", + "props": {"show_label": True, "name": "json", "visible": True, "style": {}}, + }, + { + "id": 34, + "type": "button", + "props": { + "value": "Run", + "variant": "secondary", + "interactive": True, + "name": "button", + "visible": True, + "style": {}, + }, + }, + { + "id": 35, + "type": "tabitem", + "props": {"label": "CT Scan", "visible": True, "style": {}}, + }, + { + "id": 36, + "type": "row", + "props": { + "type": "row", + "variant": "default", + "visible": True, + "style": {}, + }, + }, + { + "id": 37, + "type": "image", + "props": { + "image_mode": "RGB", + "source": "upload", + "tool": "editor", + "streaming": False, + "mirror_webcam": True, + "show_label": True, + "name": "image", + "visible": True, + "style": {}, + }, + }, + { + "id": 38, + "type": "json", + "props": {"show_label": True, "name": "json", "visible": True, "style": {}}, + }, + { + "id": 39, + "type": "button", + "props": { + "value": "Run", + "variant": "secondary", + "name": "button", + "interactive": True, + "visible": True, + "style": {}, + }, + }, + { + "id": 40, + "type": "textbox", + "props": { + "lines": 1, + "max_lines": 20, + "value": "", + "type": "text", + "show_label": True, + "name": "textbox", + "visible": True, + "style": {}, + }, + }, + { + "id": 41, + "type": "form", + "props": {"type": "form", "visible": True, "style": {}}, + }, + { + "id": 42, + "type": "form", + "props": {"type": "form", "visible": True, "style": {}}, + }, + ], + "css": None, + "title": "Gradio", + "is_space": False, + "enable_queue": None, + "show_error": False, + "show_api": True, + "layout": { + "id": 26, + "children": [ + {"id": 27}, + {"id": 41, "children": [{"id": 28}]}, + { + "id": 29, + "children": [ + { + "id": 30, + "children": [ + {"id": 31, "children": [{"id": 32}, {"id": 33}]}, + {"id": 34}, + ], + }, + { + "id": 35, + "children": [ + {"id": 36, "children": [{"id": 37}, {"id": 38}]}, + {"id": 39}, + ], + }, + ], + }, + {"id": 42, "children": [{"id": 40}]}, + ], + }, + "dependencies": [ + { + "targets": [34], + "trigger": "click", + "inputs": [28, 32], + "outputs": [33], + "backend_fn": True, + "js": None, + "queue": None, + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "batch": False, + "max_batch_size": 4, + "cancels": [], + "every": None, + "collects_event_data": False, + "types": {"continuous": False, "generator": False}, + "trigger_after": None, + "trigger_only_on_success": False, + }, + { + "targets": [39], + "trigger": "click", + "inputs": [28, 37], + "outputs": [38], + "backend_fn": True, + "js": None, + "queue": None, + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "batch": False, + "max_batch_size": 4, + "cancels": [], + "every": None, + "collects_event_data": False, + "types": {"continuous": False, "generator": False}, + "trigger_after": None, + "trigger_only_on_success": False, + }, + { + "targets": [], + "trigger": "load", + "inputs": [], + "outputs": [40], + "backend_fn": True, + "js": None, + "queue": None, + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "batch": False, + "max_batch_size": 4, + "cancels": [], + "every": None, + "collects_event_data": False, + "types": {"continuous": False, "generator": False}, + "trigger_after": None, + "trigger_only_on_success": False, + }, + ], +} + + +XRAY_CONFIG_DIFF_IDS = { + "version": "3.4b3\n", + "mode": "blocks", + "analytics_enabled": False, + "dev_mode": True, + "components": [ + { + "id": 27, + "type": "markdown", + "props": { + "value": "

Detect Disease From Scan

\n

With this model you can lorem ipsum

\n
    \n
  • ipsum 1
  • \n
  • ipsum 2
  • \n
\n", + "name": "markdown", + "visible": True, + "style": {}, + }, + }, + { + "id": 28, + "type": "checkboxgroup", + "props": { + "choices": ["Covid", "Malaria", "Lung Cancer"], + "value": [], + "label": "Disease to Scan For", + "show_label": True, + "name": "checkboxgroup", + "visible": True, + "style": {}, + }, + }, + {"id": 29, "type": "tabs", "props": {"visible": True, "style": {}}}, + { + "id": 30, + "type": "tabitem", + "props": {"label": "X-ray", "visible": True, "style": {}}, + }, + { + "id": 31, + "type": "row", + "props": { + "type": "row", + "variant": "default", + "visible": True, + "style": {}, + }, + }, + { + "id": 32, + "type": "image", + "props": { + "image_mode": "RGB", + "source": "upload", + "tool": "editor", + "streaming": False, + "mirror_webcam": True, + "show_label": True, + "name": "image", + "visible": True, + "style": {}, + }, + }, + { + "id": 33, + "type": "json", + "props": {"show_label": True, "name": "json", "visible": True, "style": {}}, + }, + { + "id": 34, + "type": "button", + "props": { + "value": "Run", + "variant": "secondary", + "interactive": True, + "name": "button", + "visible": True, + "style": {}, + }, + }, + { + "id": 35, + "type": "tabitem", + "props": {"label": "CT Scan", "visible": True, "style": {}}, + }, + { + "id": 36, + "type": "row", + "props": { + "type": "row", + "variant": "default", + "visible": True, + "style": {}, + }, + }, + { + "id": 37, + "type": "image", + "props": { + "image_mode": "RGB", + "source": "upload", + "tool": "editor", + "streaming": False, + "mirror_webcam": True, + "show_label": True, + "name": "image", + "visible": True, + "style": {}, + }, + }, + { + "id": 38, + "type": "json", + "props": {"show_label": True, "name": "json", "visible": True, "style": {}}, + }, + { + "id": 933, + "type": "button", + "props": { + "value": "Run", + "variant": "secondary", + "interactive": True, + "name": "button", + "visible": True, + "style": {}, + }, + }, + { + "id": 40, + "type": "textbox", + "props": { + "lines": 1, + "max_lines": 20, + "value": "", + "type": "text", + "show_label": True, + "name": "textbox", + "visible": True, + "style": {}, + }, + }, + { + "id": 41, + "type": "form", + "props": {"type": "form", "visible": True, "style": {}}, + }, + { + "id": 42, + "type": "form", + "props": {"type": "form", "visible": True, "style": {}}, + }, + ], + "css": None, + "title": "Gradio", + "is_space": False, + "enable_queue": None, + "show_error": False, + "show_api": True, + "layout": { + "id": 26, + "children": [ + {"id": 27}, + {"id": 41, "children": [{"id": 28}]}, + { + "id": 29, + "children": [ + { + "id": 30, + "children": [ + {"id": 31, "children": [{"id": 32}, {"id": 33}]}, + {"id": 34}, + ], + }, + { + "id": 35, + "children": [ + {"id": 36, "children": [{"id": 37}, {"id": 38}]}, + {"id": 933}, + ], + }, + ], + }, + {"id": 42, "children": [{"id": 40}]}, + ], + }, + "dependencies": [ + { + "targets": [34], + "trigger": "click", + "inputs": [28, 32], + "outputs": [33], + "backend_fn": True, + "js": None, + "queue": None, + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "batch": False, + "max_batch_size": 4, + "cancels": [], + "every": None, + "collects_event_data": False, + "types": {"continuous": False, "generator": False}, + "trigger_after": None, + "trigger_only_on_success": False, + }, + { + "targets": [933], + "trigger": "click", + "inputs": [28, 37], + "outputs": [38], + "backend_fn": True, + "js": None, + "queue": None, + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "batch": False, + "max_batch_size": 4, + "cancels": [], + "every": None, + "collects_event_data": False, + "types": {"continuous": False, "generator": False}, + "trigger_after": None, + "trigger_only_on_success": False, + }, + { + "targets": [], + "trigger": "load", + "inputs": [], + "outputs": [40], + "backend_fn": True, + "js": None, + "queue": None, + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "batch": False, + "max_batch_size": 4, + "cancels": [], + "every": None, + "collects_event_data": False, + "types": {"continuous": False, "generator": False}, + "trigger_after": None, + "trigger_only_on_success": False, + }, + ], +} + + +XRAY_CONFIG_WITH_MISTAKE = { + "mode": "blocks", + "dev_mode": True, + "analytics_enabled": False, + "components": [ + { + "id": 1, + "type": "markdown", + "props": { + "value": "

Detect Disease From Scan

\n

With this model you can lorem ipsum

\n
    \n
  • ipsum 1
  • \n
  • ipsum 2
  • \n
\n", + "name": "markdown", + "style": {}, + }, + }, + { + "id": 2, + "type": "checkboxgroup", + "props": { + "choices": ["Covid", "Malaria", "Lung Cancer"], + "value": [], + "name": "checkboxgroup", + "show_label": True, + "label": "Disease to Scan For", + "style": {}, + }, + }, + { + "id": 3, + "type": "tabs", + "props": { + "style": {}, + "value": True, + }, + }, + { + "id": 4, + "type": "tabitem", + "props": { + "label": "X-ray", + "style": {}, + "value": True, + }, + }, + { + "id": 5, + "type": "row", + "props": {"type": "row", "variant": "default", "style": {}, "value": True}, + }, + { + "id": 6, + "type": "image", + "props": { + "image_mode": "RGB", + "source": "upload", + "streaming": False, + "mirror_webcam": True, + "tool": "editor", + "name": "image", + "style": {}, + }, + }, + { + "id": 7, + "type": "json", + "props": { + "name": "json", + "style": {}, + }, + }, + { + "id": 8, + "type": "button", + "props": { + "value": "Run", + "name": "button", + "interactive": True, + "css": {"background-color": "red", "--hover-color": "orange"}, + "variant": "secondary", + }, + }, + { + "id": 9, + "type": "tabitem", + "props": { + "show_label": True, + "label": "CT Scan", + "style": {}, + "value": True, + }, + }, + { + "id": 10, + "type": "row", + "props": {"type": "row", "variant": "default", "style": {}, "value": True}, + }, + { + "id": 11, + "type": "image", + "props": { + "image_mode": "RGB", + "source": "upload", + "tool": "editor", + "streaming": False, + "mirror_webcam": True, + "name": "image", + "style": {}, + }, + }, + { + "id": 12, + "type": "json", + "props": { + "name": "json", + "style": {}, + }, + }, + { + "id": 13, + "type": "button", + "props": { + "value": "Run", + "interactive": True, + "name": "button", + "style": {}, + "variant": "secondary", + }, + }, + { + "id": 14, + "type": "textbox", + "props": { + "lines": 1, + "value": "", + "name": "textbox", + "type": "text", + "style": {}, + }, + }, + ], + "layout": { + "id": 0, + "children": [ + {"id": 1}, + {"id": 2}, + { + "id": 3, + "children": [ + { + "id": 4, + "children": [ + {"id": 5, "children": [{"id": 6}, {"id": 7}]}, + {"id": 8}, + ], + }, + { + "id": 9, + "children": [ + {"id": 10, "children": [{"id": 12}, {"id": 11}]}, + {"id": 13}, + ], + }, + ], + }, + {"id": 14}, + ], + }, + "dependencies": [ + { + "targets": [8], + "trigger": "click", + "inputs": [2, 6], + "outputs": [7], + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "cancels": [], + "trigger_after": None, + "trigger_only_on_success": False, + }, + { + "targets": [13], + "trigger": "click", + "inputs": [2, 11], + "outputs": [12], + "api_name": None, + "scroll_to_output": False, + "show_progress": True, + "cancels": [], + "trigger_after": None, + "trigger_only_on_success": False, + }, + ], +} diff --git a/gradio/test_data/cheetah1-copy.jpg b/gradio/test_data/cheetah1-copy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c510ff30e09c1ce410afa499f0bfc3a63c751134 Binary files /dev/null and b/gradio/test_data/cheetah1-copy.jpg differ diff --git a/gradio/test_data/cheetah1.jpg b/gradio/test_data/cheetah1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c510ff30e09c1ce410afa499f0bfc3a63c751134 Binary files /dev/null and b/gradio/test_data/cheetah1.jpg differ diff --git a/gradio/test_data/cheetah2.jpg b/gradio/test_data/cheetah2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1408ea5af612402c1a1b998ce5e76d88f1ed1de7 Binary files /dev/null and b/gradio/test_data/cheetah2.jpg differ diff --git a/gradio/test_data/flagged_no_log/a.txt b/gradio/test_data/flagged_no_log/a.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gradio/test_data/flagged_no_log/b.txt b/gradio/test_data/flagged_no_log/b.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gradio/test_data/flagged_no_log/c.txt b/gradio/test_data/flagged_no_log/c.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gradio/test_data/flagged_with_log/log.csv b/gradio/test_data/flagged_with_log/log.csv new file mode 100644 index 0000000000000000000000000000000000000000..f09847b6f72b43bc6191bcb799cbb6d5df04b543 --- /dev/null +++ b/gradio/test_data/flagged_with_log/log.csv @@ -0,0 +1,3 @@ +input,output +10,20 +30,60 diff --git a/gradio/test_data/lion.jpg b/gradio/test_data/lion.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9bf9f5d0816d6201b4862088dc74476249a6a70 Binary files /dev/null and b/gradio/test_data/lion.jpg differ diff --git a/gradio/test_data/test_audio.wav b/gradio/test_data/test_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..4b40a30f4b13fa75ee6dc1ddea4ff76b782670d3 Binary files /dev/null and b/gradio/test_data/test_audio.wav differ diff --git a/gradio/test_data/test_image.png b/gradio/test_data/test_image.png new file mode 100644 index 0000000000000000000000000000000000000000..855b4041793a49335cf6d1b66d8c1e5059daf60f Binary files /dev/null and b/gradio/test_data/test_image.png differ diff --git a/gradio/themes/__init__.py b/gradio/themes/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..583b37b242134f43a57d5ec27be44a0e6d65e85f --- /dev/null +++ b/gradio/themes/__init__.py @@ -0,0 +1,10 @@ +from gradio.themes import utils # noqa: F401 +from gradio.themes.base import Base, ThemeClass # noqa: F401 +from gradio.themes.default import Default # noqa: F401 +from gradio.themes.glass import Glass # noqa: F401 +from gradio.themes.monochrome import Monochrome # noqa: F401 +from gradio.themes.soft import Soft # noqa: F401 +from gradio.themes.utils import colors, sizes # noqa: F401 +from gradio.themes.utils.colors import Color # noqa: F401 +from gradio.themes.utils.fonts import Font, GoogleFont # noqa: F401 +from gradio.themes.utils.sizes import Size # noqa: F401 diff --git a/gradio/themes/__pycache__/__init__.cpython-38.pyc b/gradio/themes/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ec98e51e698f764546ed9ae15da47c37d6619c3 Binary files /dev/null and b/gradio/themes/__pycache__/__init__.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/app.cpython-38.pyc b/gradio/themes/__pycache__/app.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fd53dbc82d5c53cb925740c72085e2f85f81210 Binary files /dev/null and b/gradio/themes/__pycache__/app.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/base.cpython-38.pyc b/gradio/themes/__pycache__/base.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f30d16a4d541c455e70569e95a82647d13283946 Binary files /dev/null and b/gradio/themes/__pycache__/base.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/default.cpython-38.pyc b/gradio/themes/__pycache__/default.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..883d55922840f54fae3be08182dbcd8b111ec2fc Binary files /dev/null and b/gradio/themes/__pycache__/default.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/glass.cpython-38.pyc b/gradio/themes/__pycache__/glass.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3cf97b32e3eedbc18b60f430bc86967e07a3091 Binary files /dev/null and b/gradio/themes/__pycache__/glass.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/monochrome.cpython-38.pyc b/gradio/themes/__pycache__/monochrome.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f4ad00f6693b49c35931da30e9e8ca41705a2b08 Binary files /dev/null and b/gradio/themes/__pycache__/monochrome.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/soft.cpython-38.pyc b/gradio/themes/__pycache__/soft.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b7cd7365b7e8691cfbac138b5e19ab6c6374b2b Binary files /dev/null and b/gradio/themes/__pycache__/soft.cpython-38.pyc differ diff --git a/gradio/themes/__pycache__/upload_theme.cpython-38.pyc b/gradio/themes/__pycache__/upload_theme.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28fd0e6173e044182c7048b8bd4b0dbd20951ed7 Binary files /dev/null and b/gradio/themes/__pycache__/upload_theme.cpython-38.pyc differ diff --git a/gradio/themes/app.py b/gradio/themes/app.py new file mode 100644 index 0000000000000000000000000000000000000000..dc3f75fffec90c794d8a4618a935c7ed72743677 --- /dev/null +++ b/gradio/themes/app.py @@ -0,0 +1,147 @@ +import time + +from theme_dropdown import create_theme_dropdown # noqa: F401 + +import gradio as gr + +dropdown, js = create_theme_dropdown() + +with gr.Blocks(theme=gr.themes.Default()) as demo: + with gr.Row().style(equal_height=True): + with gr.Column(scale=10): + gr.Markdown( + """ + # Theme preview: `{THEME}` + To use this theme, set `theme='{AUTHOR}/{SPACE_NAME}'` in `gr.Blocks()` or `gr.Interface()`. + You can append an `@` and a semantic version expression, e.g. @>=1.0.0,<2.0.0 to pin to a given version + of this theme. + """ + ) + with gr.Column(scale=3): + with gr.Box(): + dropdown.render() + toggle_dark = gr.Button(value="Toggle Dark").style(full_width=True) + + dropdown.change(None, dropdown, None, _js=js) + toggle_dark.click( + None, + _js=""" + () => { + document.body.classList.toggle('dark'); + document.querySelector('gradio-app').style.backgroundColor = 'var(--color-background-primary)' + } + """, + ) + + name = gr.Textbox( + label="Name", + info="Full name, including middle name. No special characters.", + placeholder="John Doe", + value="John Doe", + interactive=True, + ) + + with gr.Row(): + slider1 = gr.Slider(label="Slider 1") + slider2 = gr.Slider(label="Slider 2") + gr.CheckboxGroup(["A", "B", "C"], label="Checkbox Group") + + with gr.Row(): + with gr.Column(variant="panel", scale=1): + gr.Markdown("## Panel 1") + radio = gr.Radio( + ["A", "B", "C"], + label="Radio", + info="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + ) + drop = gr.Dropdown(["Option 1", "Option 2", "Option 3"], show_label=False) + drop_2 = gr.Dropdown( + ["Option A", "Option B", "Option C"], + multiselect=True, + value=["Option A"], + label="Dropdown", + interactive=True, + ) + check = gr.Checkbox(label="Go") + with gr.Column(variant="panel", scale=2): + img = gr.Image( + "https://gradio.app/assets/img/header-image.jpg", label="Image" + ).style(height=320) + with gr.Row(): + go_btn = gr.Button("Go", label="Primary Button", variant="primary") + clear_btn = gr.Button( + "Clear", label="Secondary Button", variant="secondary" + ) + + def go(*args): + time.sleep(3) + return "https://gradio.app/assets/img/header-image.jpg" + + go_btn.click(go, [radio, drop, drop_2, check, name], img, api_name="go") + + def clear(): + time.sleep(0.2) + return None + + clear_btn.click(clear, None, img) + + with gr.Row(): + btn1 = gr.Button("Button 1").style(size="sm") + btn2 = gr.UploadButton().style(size="sm") + stop_btn = gr.Button("Stop", label="Stop Button", variant="stop").style( + size="sm" + ) + + with gr.Row(): + gr.Dataframe(value=[[1, 2, 3], [4, 5, 6], [7, 8, 9]], label="Dataframe") + gr.JSON( + value={"a": 1, "b": 2, "c": {"test": "a", "test2": [1, 2, 3]}}, label="JSON" + ) + gr.Label(value={"cat": 0.7, "dog": 0.2, "fish": 0.1}) + gr.File() + with gr.Row(): + gr.ColorPicker() + gr.Video("https://gradio-static-files.s3.us-west-2.amazonaws.com/world.mp4") + gr.Gallery( + [ + ( + "https://gradio-static-files.s3.us-west-2.amazonaws.com/lion.jpg", + "lion", + ), + ( + "https://gradio-static-files.s3.us-west-2.amazonaws.com/logo.png", + "logo", + ), + ( + "https://gradio-static-files.s3.us-west-2.amazonaws.com/tower.jpg", + "tower", + ), + ] + ).style(height="200px", grid=2) + + with gr.Row(): + with gr.Column(scale=2): + chatbot = gr.Chatbot([("Hello", "Hi")], label="Chatbot") + chat_btn = gr.Button("Add messages") + + def chat(history): + time.sleep(2) + yield [["How are you?", "I am good."]] + + chat_btn.click( + lambda history: history + + [["How are you?", "I am good."]] + + (time.sleep(2) or []), + chatbot, + chatbot, + ) + with gr.Column(scale=1): + with gr.Accordion("Advanced Settings"): + gr.Markdown("Hello") + gr.Number(label="Chatbot control 1") + gr.Number(label="Chatbot control 2") + gr.Number(label="Chatbot control 3") + + +if __name__ == "__main__": + demo.queue().launch() diff --git a/gradio/themes/base.py b/gradio/themes/base.py new file mode 100644 index 0000000000000000000000000000000000000000..e6bd49b8218f92c5e8559cc62068df689aade6c8 --- /dev/null +++ b/gradio/themes/base.py @@ -0,0 +1,1788 @@ +from __future__ import annotations + +import json +import re +import tempfile +import textwrap +from pathlib import Path +from typing import Dict, Iterable + +import huggingface_hub +import requests +import semantic_version as semver +from huggingface_hub import CommitOperationAdd + +from gradio.documentation import document, set_documentation_group +from gradio.themes.utils import ( + colors, + fonts, + get_matching_version, + get_theme_assets, + sizes, +) +from gradio.themes.utils.readme_content import README_CONTENT + +set_documentation_group("themes") + + +class ThemeClass: + def __init__(self): + self._stylesheets = [] + + def _get_theme_css(self): + css = {} + dark_css = {} + + for attr, val in self.__dict__.items(): + if attr.startswith("_"): + continue + if val is None: + if attr.endswith("_dark"): + dark_css[attr[:-5]] = None + continue + else: + raise ValueError( + f"Cannot set '{attr}' to None - only dark mode variables can be None." + ) + val = str(val) + pattern = r"(\*)([\w_]+)(\b)" + + def repl_func(match): + full_match = match.group(0) + if full_match.startswith("*") and full_match.endswith("_dark"): + raise ValueError( + f"Cannot refer '{attr}' to '{val}' - dark variable references are automatically used for dark mode attributes, so do not use the _dark suffix in the value." + ) + if ( + attr.endswith("_dark") + and full_match.startswith("*") + and attr[:-5] == full_match[1:] + ): + raise ValueError( + f"Cannot refer '{attr}' to '{val}' - if dark and light mode values are the same, set dark mode version to None." + ) + + word = match.group(2) + word = word.replace("_", "-") + return f"var(--{word})" + + val = re.sub(pattern, repl_func, val) + + attr = attr.replace("_", "-") + + if attr.endswith("-dark"): + attr = attr[:-5] + dark_css[attr] = val + else: + css[attr] = val + + for attr, val in css.items(): + if attr not in dark_css: + dark_css[attr] = val + + css_code = ( + ":root {\n" + + "\n".join([f" --{attr}: {val};" for attr, val in css.items()]) + + "\n}" + ) + dark_css_code = ( + ".dark {\n" + + "\n".join([f" --{attr}: {val};" for attr, val in dark_css.items()]) + + "\n}" + ) + + return css_code + "\n" + dark_css_code + + def to_dict(self): + """Convert the theme into a python dictionary.""" + schema = {"theme": {}} + for prop in dir(self): + if ( + not prop.startswith("_") + or prop.startswith("_font") + or prop == "_stylesheets" + ) and isinstance(getattr(self, prop), (list, str)): + schema["theme"][prop] = getattr(self, prop) + return schema + + @classmethod + def load(cls, path: str) -> "ThemeClass": + """Load a theme from a json file. + + Parameters: + path: The filepath to read. + """ + theme = json.load(open(path), object_hook=fonts.as_font) + return cls.from_dict(theme) + + @classmethod + def from_dict(cls, theme: Dict[str, Dict[str, str]]) -> "ThemeClass": + """Create a theme instance from a dictionary representation. + + Parameters: + theme: The dictionary representation of the theme. + """ + base = cls() + for prop, value in theme["theme"].items(): + setattr(base, prop, value) + return base + + def dump(self, filename: str): + """Write the theme to a json file. + + Parameters: + filename: The path to write the theme too + """ + as_dict = self.to_dict() + json.dump(as_dict, open(Path(filename), "w"), cls=fonts.FontEncoder) + + @classmethod + def from_hub(cls, repo_name: str, hf_token: str | None = None): + """Load a theme from the hub. + + This DOES NOT require a HuggingFace account for downloading publicly available themes. + + Parameters: + repo_name: string of the form /@. If a semantic version expression is omitted, the latest version will be fetched. + hf_token: HuggingFace Token. Only needed to download private themes. + """ + if "@" not in repo_name: + name, version = repo_name, None + else: + name, version = repo_name.split("@") + + api = huggingface_hub.HfApi(token=hf_token) + + try: + space_info = api.space_info(name) + except requests.HTTPError as e: + raise ValueError(f"The space {name} does not exist") from e + + assets = get_theme_assets(space_info) + matching_version = get_matching_version(assets, version) + + if not matching_version: + raise ValueError( + f"Cannot find a matching version for expression {version} " + f"from files {[f.filename for f in assets]}" + ) + + theme_file = huggingface_hub.hf_hub_download( + repo_id=name, + repo_type="space", + filename=f"themes/theme_schema@{matching_version.version}.json", + ) + return cls.load(theme_file) + + @staticmethod + def _get_next_version(space_info: huggingface_hub.hf_api.SpaceInfo) -> str: + assets = get_theme_assets(space_info) + latest_version = max(assets, key=lambda asset: asset.version).version + return str(latest_version.next_patch()) + + @staticmethod + def _theme_version_exists( + space_info: huggingface_hub.hf_api.SpaceInfo, version: str + ) -> bool: + assets = get_theme_assets(space_info) + return any(a.version == semver.Version(version) for a in assets) + + def push_to_hub( + self, + repo_name: str, + org_name: str | None = None, + version: str | None = None, + hf_token: str | None = None, + theme_name: str | None = None, + description: str | None = None, + private: bool = False, + ): + """Upload a theme to the HuggingFace hub. + + This requires a HuggingFace account. + + Parameters: + repo_name: The name of the repository to store the theme assets, e.g. 'my_theme' or 'sunset'. + org_name: The name of the org to save the space in. If None (the default), the username corresponding to the logged in user, or hƒ_token is used. + version: A semantic version tag for theme. Bumping the version tag lets you publish updates to a theme without changing the look of applications that already loaded your theme. + hf_token: API token for your HuggingFace account + theme_name: Name for the name. If None, defaults to repo_name + description: A long form description to your theme. + """ + + from gradio import __version__ + + api = huggingface_hub.HfApi() + + if not hf_token: + try: + author = huggingface_hub.whoami()["name"] + except OSError as e: + raise ValueError( + "In order to push to hub, log in via `huggingface-cli login` " + "or provide a theme_token to push_to_hub. For more information " + "see https://huggingface.co/docs/huggingface_hub/quick-start#login" + ) from e + else: + author = huggingface_hub.whoami(token=hf_token)["name"] + + space_id = f"{org_name or author}/{repo_name}" + + try: + space_info = api.space_info(space_id) + except requests.HTTPError: + space_info = None + + space_exists = space_info is not None + + # If no version, set the version to next patch release + if not version: + if space_exists: + version = self._get_next_version(space_info) + else: + version = "0.0.1" + else: + _ = semver.Version(version) + + if space_exists and self._theme_version_exists(space_info, version): + raise ValueError( + f"The space {space_id} already has a " + f"theme with version {version}. See: themes/theme_schema@{version}.json. " + "To manually override this version, use the HuggingFace hub UI." + ) + + theme_name = theme_name or repo_name + + with tempfile.NamedTemporaryFile( + mode="w", delete=False, suffix=".json" + ) as css_file: + contents = self.to_dict() + contents["version"] = version + json.dump(contents, css_file, cls=fonts.FontEncoder) + with tempfile.NamedTemporaryFile(mode="w", delete=False) as readme_file: + readme_content = README_CONTENT.format( + theme_name=theme_name, + description=description or "Add a description of this theme here!", + author=author, + gradio_version=__version__, + ) + readme_file.write(textwrap.dedent(readme_content)) + with tempfile.NamedTemporaryFile(mode="w", delete=False) as app_file: + contents = open(str(Path(__file__).parent / "app.py")).read() + contents = re.sub( + r"theme=gr.themes.Default\(\)", + f"theme='{space_id}'", + contents, + ) + contents = re.sub(r"{THEME}", theme_name or repo_name, contents) + contents = re.sub(r"{AUTHOR}", org_name or author, contents) + contents = re.sub(r"{SPACE_NAME}", repo_name, contents) + app_file.write(contents) + + operations = [ + CommitOperationAdd( + path_in_repo=f"themes/theme_schema@{version}.json", + path_or_fileobj=css_file.name, + ), + CommitOperationAdd( + path_in_repo="README.md", path_or_fileobj=readme_file.name + ), + CommitOperationAdd(path_in_repo="app.py", path_or_fileobj=app_file.name), + CommitOperationAdd( + path_in_repo="theme_dropdown.py", + path_or_fileobj=str( + Path(__file__).parent / "utils" / "theme_dropdown.py" + ), + ), + ] + + huggingface_hub.create_repo( + space_id, + repo_type="space", + space_sdk="gradio", + token=hf_token, + exist_ok=True, + private=private, + ) + + api.create_commit( + repo_id=space_id, + commit_message="Updating theme", + repo_type="space", + operations=operations, + token=hf_token, + ) + url = f"https://huggingface.co/spaces/{space_id}" + print(f"See your theme here! {url}") + return url + + +@document("push_to_hub", "from_hub", "load", "dump", "from_dict", "to_dict") +class Base(ThemeClass): + def __init__( + self, + *, + primary_hue: colors.Color | str = colors.blue, + secondary_hue: colors.Color | str = colors.blue, + neutral_hue: colors.Color | str = colors.gray, + text_size: sizes.Size | str = sizes.text_md, + spacing_size: sizes.Size | str = sizes.spacing_md, + radius_size: sizes.Size | str = sizes.radius_md, + font: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("Source Sans Pro"), + "ui-sans-serif", + "system-ui", + "sans-serif", + ), + font_mono: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("IBM Plex Mono"), + "ui-monospace", + "Consolas", + "monospace", + ), + ): + """ + Parameters: + primary_hue: The primary hue of the theme. Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object. + secondary_hue: The secondary hue of the theme. Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object. + neutral_hue: The neutral hue of the theme, used . Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object. + text_size: The size of the text. Load a preset, like gradio.themes.sizes.text_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object. + spacing_size: The size of the spacing. Load a preset, like gradio.themes.sizes.spacing_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object. + radius_size: The radius size of corners. Load a preset, like gradio.themes.sizes.radius_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object. + font: The primary font to use for the theme. Pass a string for a system font, or a gradio.themes.font.GoogleFont object to load a font from Google Fonts. Pass a list of fonts for fallbacks. + font_mono: The monospace font to use for the theme, applies to code. Pass a string for a system font, or a gradio.themes.font.GoogleFont object to load a font from Google Fonts. Pass a list of fonts for fallbacks. + """ + + def expand_shortcut(shortcut, mode="color", prefix=None): + if not isinstance(shortcut, str): + return shortcut + if mode == "color": + for color in colors.Color.all: + if color.name == shortcut: + return color + raise ValueError(f"Color shortcut {shortcut} not found.") + elif mode == "size": + for size in sizes.Size.all: + if size.name == prefix + "_" + shortcut: + return size + raise ValueError(f"Size shortcut {shortcut} not found.") + + primary_hue = expand_shortcut(primary_hue, mode="color") + secondary_hue = expand_shortcut(secondary_hue, mode="color") + neutral_hue = expand_shortcut(neutral_hue, mode="color") + text_size = expand_shortcut(text_size, mode="size", prefix="text") + spacing_size = expand_shortcut(spacing_size, mode="size", prefix="spacing") + radius_size = expand_shortcut(radius_size, mode="size", prefix="radius") + + # Hue ranges + self.primary_50 = primary_hue.c50 + self.primary_100 = primary_hue.c100 + self.primary_200 = primary_hue.c200 + self.primary_300 = primary_hue.c300 + self.primary_400 = primary_hue.c400 + self.primary_500 = primary_hue.c500 + self.primary_600 = primary_hue.c600 + self.primary_700 = primary_hue.c700 + self.primary_800 = primary_hue.c800 + self.primary_900 = primary_hue.c900 + self.primary_950 = primary_hue.c950 + + self.secondary_50 = secondary_hue.c50 + self.secondary_100 = secondary_hue.c100 + self.secondary_200 = secondary_hue.c200 + self.secondary_300 = secondary_hue.c300 + self.secondary_400 = secondary_hue.c400 + self.secondary_500 = secondary_hue.c500 + self.secondary_600 = secondary_hue.c600 + self.secondary_700 = secondary_hue.c700 + self.secondary_800 = secondary_hue.c800 + self.secondary_900 = secondary_hue.c900 + self.secondary_950 = secondary_hue.c950 + + self.neutral_50 = neutral_hue.c50 + self.neutral_100 = neutral_hue.c100 + self.neutral_200 = neutral_hue.c200 + self.neutral_300 = neutral_hue.c300 + self.neutral_400 = neutral_hue.c400 + self.neutral_500 = neutral_hue.c500 + self.neutral_600 = neutral_hue.c600 + self.neutral_700 = neutral_hue.c700 + self.neutral_800 = neutral_hue.c800 + self.neutral_900 = neutral_hue.c900 + self.neutral_950 = neutral_hue.c950 + + # Spacing + self.spacing_xxs = spacing_size.xxs + self.spacing_xs = spacing_size.xs + self.spacing_sm = spacing_size.sm + self.spacing_md = spacing_size.md + self.spacing_lg = spacing_size.lg + self.spacing_xl = spacing_size.xl + self.spacing_xxl = spacing_size.xxl + + self.radius_xxs = radius_size.xxs + self.radius_xs = radius_size.xs + self.radius_sm = radius_size.sm + self.radius_md = radius_size.md + self.radius_lg = radius_size.lg + self.radius_xl = radius_size.xl + self.radius_xxl = radius_size.xxl + + self.text_xxs = text_size.xxs + self.text_xs = text_size.xs + self.text_sm = text_size.sm + self.text_md = text_size.md + self.text_lg = text_size.lg + self.text_xl = text_size.xl + self.text_xxl = text_size.xxl + + # Font + if not isinstance(font, Iterable): + font = [font] + self._font = [ + fontfam if isinstance(fontfam, fonts.Font) else fonts.Font(fontfam) + for fontfam in font + ] + if not isinstance(font_mono, Iterable): + font_mono = [font_mono] + self._font_mono = [ + fontfam if isinstance(fontfam, fonts.Font) else fonts.Font(fontfam) + for fontfam in font_mono + ] + self.font = ", ".join(str(font) for font in self._font) + self.font_mono = ", ".join(str(font) for font in self._font_mono) + + self._stylesheets = [] + for font in self._font + self._font_mono: + font_stylesheet = font.stylesheet() + if font_stylesheet: + self._stylesheets.append(font_stylesheet) + + self.set() + + def set( + self, + *, + # Body + body_background_fill=None, + body_background_fill_dark=None, + body_text_color=None, + body_text_color_dark=None, + body_text_size=None, + body_text_color_subdued=None, + body_text_color_subdued_dark=None, + body_text_weight=None, + embed_radius=None, + # Core Colors + background_fill_primary=None, + background_fill_primary_dark=None, + background_fill_secondary=None, + background_fill_secondary_dark=None, + border_color_accent=None, + border_color_accent_dark=None, + border_color_primary=None, + border_color_primary_dark=None, + color_accent=None, + color_accent_soft=None, + color_accent_soft_dark=None, + # Text + link_text_color=None, + link_text_color_dark=None, + link_text_color_active=None, + link_text_color_active_dark=None, + link_text_color_hover=None, + link_text_color_hover_dark=None, + link_text_color_visited=None, + link_text_color_visited_dark=None, + prose_text_size=None, + prose_text_weight=None, + prose_header_text_weight=None, + # Shadows + shadow_drop=None, + shadow_drop_lg=None, + shadow_inset=None, + shadow_spread=None, + shadow_spread_dark=None, + # Layout Atoms + block_background_fill=None, + block_background_fill_dark=None, + block_border_color=None, + block_border_color_dark=None, + block_border_width=None, + block_border_width_dark=None, + block_info_text_color=None, + block_info_text_color_dark=None, + block_info_text_size=None, + block_info_text_weight=None, + block_label_background_fill=None, + block_label_background_fill_dark=None, + block_label_border_color=None, + block_label_border_color_dark=None, + block_label_border_width=None, + block_label_border_width_dark=None, + block_label_text_color=None, + block_label_text_color_dark=None, + block_label_margin=None, + block_label_padding=None, + block_label_radius=None, + block_label_right_radius=None, + block_label_text_size=None, + block_label_text_weight=None, + block_padding=None, + block_radius=None, + block_shadow=None, + block_shadow_dark=None, + block_title_background_fill=None, + block_title_background_fill_dark=None, + block_title_border_color=None, + block_title_border_color_dark=None, + block_title_border_width=None, + block_title_border_width_dark=None, + block_title_text_color=None, + block_title_text_color_dark=None, + block_title_padding=None, + block_title_radius=None, + block_title_text_size=None, + block_title_text_weight=None, + container_radius=None, + form_gap_width=None, + layout_gap=None, + panel_background_fill=None, + panel_background_fill_dark=None, + panel_border_color=None, + panel_border_color_dark=None, + panel_border_width=None, + panel_border_width_dark=None, + section_header_text_size=None, + section_header_text_weight=None, + # Component Atoms + checkbox_background_color=None, + checkbox_background_color_dark=None, + checkbox_background_color_focus=None, + checkbox_background_color_focus_dark=None, + checkbox_background_color_hover=None, + checkbox_background_color_hover_dark=None, + checkbox_background_color_selected=None, + checkbox_background_color_selected_dark=None, + checkbox_border_color=None, + checkbox_border_color_dark=None, + checkbox_border_color_focus=None, + checkbox_border_color_focus_dark=None, + checkbox_border_color_hover=None, + checkbox_border_color_hover_dark=None, + checkbox_border_color_selected=None, + checkbox_border_color_selected_dark=None, + checkbox_border_radius=None, + checkbox_border_width=None, + checkbox_border_width_dark=None, + checkbox_check=None, + radio_circle=None, + checkbox_shadow=None, + checkbox_label_background_fill=None, + checkbox_label_background_fill_dark=None, + checkbox_label_background_fill_hover=None, + checkbox_label_background_fill_hover_dark=None, + checkbox_label_background_fill_selected=None, + checkbox_label_background_fill_selected_dark=None, + checkbox_label_border_color=None, + checkbox_label_border_color_dark=None, + checkbox_label_border_color_hover=None, + checkbox_label_border_color_hover_dark=None, + checkbox_label_border_width=None, + checkbox_label_border_width_dark=None, + checkbox_label_gap=None, + checkbox_label_padding=None, + checkbox_label_shadow=None, + checkbox_label_text_size=None, + checkbox_label_text_weight=None, + checkbox_label_text_color=None, + checkbox_label_text_color_dark=None, + checkbox_label_text_color_selected=None, + checkbox_label_text_color_selected_dark=None, + error_background_fill=None, + error_background_fill_dark=None, + error_border_color=None, + error_border_color_dark=None, + error_border_width=None, + error_border_width_dark=None, + error_text_color=None, + error_text_color_dark=None, + input_background_fill=None, + input_background_fill_dark=None, + input_background_fill_focus=None, + input_background_fill_focus_dark=None, + input_background_fill_hover=None, + input_background_fill_hover_dark=None, + input_border_color=None, + input_border_color_dark=None, + input_border_color_focus=None, + input_border_color_focus_dark=None, + input_border_color_hover=None, + input_border_color_hover_dark=None, + input_border_width=None, + input_border_width_dark=None, + input_padding=None, + input_placeholder_color=None, + input_placeholder_color_dark=None, + input_radius=None, + input_shadow=None, + input_shadow_dark=None, + input_shadow_focus=None, + input_shadow_focus_dark=None, + input_text_size=None, + input_text_weight=None, + loader_color=None, + loader_color_dark=None, + slider_color=None, + slider_color_dark=None, + stat_background_fill=None, + stat_background_fill_dark=None, + table_border_color=None, + table_border_color_dark=None, + table_even_background_fill=None, + table_even_background_fill_dark=None, + table_odd_background_fill=None, + table_odd_background_fill_dark=None, + table_radius=None, + table_row_focus=None, + table_row_focus_dark=None, + # Buttons + button_border_width=None, + button_border_width_dark=None, + button_cancel_background_fill=None, + button_cancel_background_fill_dark=None, + button_cancel_background_fill_hover=None, + button_cancel_background_fill_hover_dark=None, + button_cancel_border_color=None, + button_cancel_border_color_dark=None, + button_cancel_border_color_hover=None, + button_cancel_border_color_hover_dark=None, + button_cancel_text_color=None, + button_cancel_text_color_dark=None, + button_cancel_text_color_hover=None, + button_cancel_text_color_hover_dark=None, + button_large_padding=None, + button_large_radius=None, + button_large_text_size=None, + button_large_text_weight=None, + button_primary_background_fill=None, + button_primary_background_fill_dark=None, + button_primary_background_fill_hover=None, + button_primary_background_fill_hover_dark=None, + button_primary_border_color=None, + button_primary_border_color_dark=None, + button_primary_border_color_hover=None, + button_primary_border_color_hover_dark=None, + button_primary_text_color=None, + button_primary_text_color_dark=None, + button_primary_text_color_hover=None, + button_primary_text_color_hover_dark=None, + button_secondary_background_fill=None, + button_secondary_background_fill_dark=None, + button_secondary_background_fill_hover=None, + button_secondary_background_fill_hover_dark=None, + button_secondary_border_color=None, + button_secondary_border_color_dark=None, + button_secondary_border_color_hover=None, + button_secondary_border_color_hover_dark=None, + button_secondary_text_color=None, + button_secondary_text_color_dark=None, + button_secondary_text_color_hover=None, + button_secondary_text_color_hover_dark=None, + button_shadow=None, + button_shadow_active=None, + button_shadow_hover=None, + button_small_padding=None, + button_small_radius=None, + button_small_text_size=None, + button_small_text_weight=None, + button_transition=None, + ) -> Base: + """ + Parameters: + body_background_fill: The background of the entire app. + body_background_fill_dark: The background of the entire app in dark mode. + body_text_color: The default text color. + body_text_color_dark: The default text color in dark mode. + body_text_size: The default text size. + body_text_color_subdued: The text color used for softer, less important text. + body_text_color_subdued_dark: The text color used for softer, less important text in dark mode. + body_text_weight: The default text weight. + embed_radius: The corner radius used for embedding when the app is embedded within a page. + background_fill_primary: The background primarily used for items placed directly on the page. + background_fill_primary_dark: The background primarily used for items placed directly on the page in dark mode. + background_fill_secondary: The background primarily used for items placed on top of another item. + background_fill_secondary_dark: The background primarily used for items placed on top of another item in dark mode. + border_color_accent: The border color used for accented items. + border_color_accent_dark: The border color used for accented items in dark mode. + border_color_primary: The border color primarily used for items placed directly on the page. + border_color_primary_dark: The border color primarily used for items placed directly on the page in dark mode. + color_accent: The color used for accented items. + color_accent_soft: The softer color used for accented items. + color_accent_soft_dark: The softer color used for accented items in dark mode. + link_text_color: The text color used for links. + link_text_color_dark: The text color used for links in dark mode. + link_text_color_active: The text color used for links when they are active. + link_text_color_active_dark: The text color used for links when they are active in dark mode. + link_text_color_hover: The text color used for links when they are hovered over. + link_text_color_hover_dark: The text color used for links when they are hovered over in dark mode. + link_text_color_visited: The text color used for links when they have been visited. + link_text_color_visited_dark: The text color used for links when they have been visited in dark mode. + prose_text_size: The text size used for markdown and other prose. + prose_text_weight: The text weight used for markdown and other prose. + prose_header_text_weight: The text weight of a header used for markdown and other prose. + shadow_drop: Drop shadow used by other shadowed items. + shadow_drop_lg: Larger drop shadow used by other shadowed items. + shadow_inset: Inset shadow used by other shadowed items. + shadow_spread: Size of shadow spread used by shadowed items. + shadow_spread_dark: Size of shadow spread used by shadowed items in dark mode. + block_background_fill: The background around an item. + block_background_fill_dark: The background around an item in dark mode. + block_border_color: The border color around an item. + block_border_color_dark: The border color around an item in dark mode. + block_border_width: The border width around an item. + block_border_width_dark: The border width around an item in dark mode. + block_info_text_color: The color of the info text. + block_info_text_color_dark: The color of the info text in dark mode. + block_info_text_size: The size of the info text. + block_info_text_weight: The weight of the info text. + block_label_background_fill: The background of the title label of a media element (e.g. image). + block_label_background_fill_dark: The background of the title label of a media element (e.g. image) in dark mode. + block_label_border_color: The border color of the title label of a media element (e.g. image). + block_label_border_color_dark: The border color of the title label of a media element (e.g. image) in dark mode. + block_label_border_width: The border width of the title label of a media element (e.g. image). + block_label_border_width_dark: The border width of the title label of a media element (e.g. image) in dark mode. + block_label_text_color: The text color of the title label of a media element (e.g. image). + block_label_text_color_dark: The text color of the title label of a media element (e.g. image) in dark mode. + block_label_margin: The margin of the title label of a media element (e.g. image) from its surrounding container. + block_label_padding: The padding of the title label of a media element (e.g. image). + block_label_radius: The corner radius of the title label of a media element (e.g. image). + block_label_right_radius: The corner radius of a right-aligned helper label. + block_label_text_size: The text size of the title label of a media element (e.g. image). + block_label_text_weight: The text weight of the title label of a media element (e.g. image). + block_padding: The padding around an item. + block_radius: The corner radius around an item. + block_shadow: The shadow under an item. + block_shadow_dark: The shadow under an item in dark mode. + block_title_background_fill: The background of the title of a form element (e.g. textbox). + block_title_background_fill_dark: The background of the title of a form element (e.g. textbox) in dark mode. + block_title_border_color: The border color of the title of a form element (e.g. textbox). + block_title_border_color_dark: The border color of the title of a form element (e.g. textbox) in dark mode. + block_title_border_width: The border width of the title of a form element (e.g. textbox). + block_title_border_width_dark: The border width of the title of a form element (e.g. textbox) in dark mode. + block_title_text_color: The text color of the title of a form element (e.g. textbox). + block_title_text_color_dark: The text color of the title of a form element (e.g. textbox) in dark mode. + block_title_padding: The padding of the title of a form element (e.g. textbox). + block_title_radius: The corner radius of the title of a form element (e.g. textbox). + block_title_text_size: The text size of the title of a form element (e.g. textbox). + block_title_text_weight: The text weight of the title of a form element (e.g. textbox). + container_radius: The corner radius of a layout component that holds other content. + form_gap_width: The border gap between form elements, (e.g. consecutive textboxes). + layout_gap: The gap between items within a row or column. + panel_background_fill: The background of a panel. + panel_background_fill_dark: The background of a panel in dark mode. + panel_border_color: The border color of a panel. + panel_border_color_dark: The border color of a panel in dark mode. + panel_border_width: The border width of a panel. + panel_border_width_dark: The border width of a panel in dark mode. + section_header_text_size: The text size of a section header (e.g. tab name). + section_header_text_weight: The text weight of a section header (e.g. tab name). + checkbox_background_color: The background of a checkbox square or radio circle. + checkbox_background_color_dark: The background of a checkbox square or radio circle in dark mode. + checkbox_background_color_focus: The background of a checkbox square or radio circle when focused. + checkbox_background_color_focus_dark: The background of a checkbox square or radio circle when focused in dark mode. + checkbox_background_color_hover: The background of a checkbox square or radio circle when hovered over. + checkbox_background_color_hover_dark: The background of a checkbox square or radio circle when hovered over in dark mode. + checkbox_background_color_selected: The background of a checkbox square or radio circle when selected. + checkbox_background_color_selected_dark: The background of a checkbox square or radio circle when selected in dark mode. + checkbox_border_color: The border color of a checkbox square or radio circle. + checkbox_border_color_dark: The border color of a checkbox square or radio circle in dark mode. + checkbox_border_color_focus: The border color of a checkbox square or radio circle when focused. + checkbox_border_color_focus_dark: The border color of a checkbox square or radio circle when focused in dark mode. + checkbox_border_color_hover: The border color of a checkbox square or radio circle when hovered over. + checkbox_border_color_hover_dark: The border color of a checkbox square or radio circle when hovered over in dark mode. + checkbox_border_color_selected: The border color of a checkbox square or radio circle when selected. + checkbox_border_color_selected_dark: The border color of a checkbox square or radio circle when selected in dark mode. + checkbox_border_radius: The corner radius of a checkbox square. + checkbox_border_width: The border width of a checkbox square or radio circle. + checkbox_border_width_dark: The border width of a checkbox square or radio circle in dark mode. + checkbox_check: The checkmark visual of a checkbox square. + radio_circle: The circle visual of a radio circle. + checkbox_shadow: The shadow of a checkbox square or radio circle. + checkbox_label_background_fill: The background of the surrounding button of a checkbox or radio element. + checkbox_label_background_fill_dark: The background of the surrounding button of a checkbox or radio element in dark mode. + checkbox_label_background_fill_hover: The background of the surrounding button of a checkbox or radio element when hovered over. + checkbox_label_background_fill_hover_dark: The background of the surrounding button of a checkbox or radio element when hovered over in dark mode. + checkbox_label_background_fill_selected: The background of the surrounding button of a checkbox or radio element when selected. + checkbox_label_background_fill_selected_dark: The background of the surrounding button of a checkbox or radio element when selected in dark mode. + checkbox_label_border_color: The border color of the surrounding button of a checkbox or radio element. + checkbox_label_border_color_dark: The border color of the surrounding button of a checkbox or radio element in dark mode. + checkbox_label_border_color_hover: The border color of the surrounding button of a checkbox or radio element when hovered over. + checkbox_label_border_color_hover_dark: The border color of the surrounding button of a checkbox or radio element when hovered over in dark mode. + checkbox_label_border_width: The border width of the surrounding button of a checkbox or radio element. + checkbox_label_border_width_dark: The border width of the surrounding button of a checkbox or radio element in dark mode. + checkbox_label_gap: The gap consecutive checkbox or radio elements. + checkbox_label_padding: The padding of the surrounding button of a checkbox or radio element. + checkbox_label_shadow: The shadow of the surrounding button of a checkbox or radio element. + checkbox_label_text_size: The text size of the label accompanying a checkbox or radio element. + checkbox_label_text_weight: The text weight of the label accompanying a checkbox or radio element. + checkbox_label_text_color: The text color of the label accompanying a checkbox or radio element. + checkbox_label_text_color_dark: The text color of the label accompanying a checkbox or radio element in dark mode. + checkbox_label_text_color_selected: The text color of the label accompanying a checkbox or radio element when selected. + checkbox_label_text_color_selected_dark: The text color of the label accompanying a checkbox or radio element when selected in dark mode. + error_background_fill: The background of an error message. + error_background_fill_dark: The background of an error message in dark mode. + error_border_color: The border color of an error message. + error_border_color_dark: The border color of an error message in dark mode. + error_border_width: The border width of an error message. + error_border_width_dark: The border width of an error message in dark mode. + error_text_color: The text color of an error message. + error_text_color_dark: The text color of an error message in dark mode. + input_background_fill: The background of an input field. + input_background_fill_dark: The background of an input field in dark mode. + input_background_fill_focus: The background of an input field when focused. + input_background_fill_focus_dark: The background of an input field when focused in dark mode. + input_background_fill_hover: The background of an input field when hovered over. + input_background_fill_hover_dark: The background of an input field when hovered over in dark mode. + input_border_color: The border color of an input field. + input_border_color_dark: The border color of an input field in dark mode. + input_border_color_focus: The border color of an input field when focused. + input_border_color_focus_dark: The border color of an input field when focused in dark mode. + input_border_color_hover: The border color of an input field when hovered over. + input_border_color_hover_dark: The border color of an input field when hovered over in dark mode. + input_border_width: The border width of an input field. + input_border_width_dark: The border width of an input field in dark mode. + input_padding: The padding of an input field. + input_placeholder_color: The placeholder text color of an input field. + input_placeholder_color_dark: The placeholder text color of an input field in dark mode. + input_radius: The corner radius of an input field. + input_shadow: The shadow of an input field. + input_shadow_dark: The shadow of an input field in dark mode. + input_shadow_focus: The shadow of an input field when focused. + input_shadow_focus_dark: The shadow of an input field when focused in dark mode. + input_text_size: The text size of an input field. + input_text_weight: The text weight of an input field. + loader_color: The color of the loading animation while a request is pending. + loader_color_dark: The color of the loading animation while a request is pending in dark mode. + slider_color: The color of the slider in a range element. + slider_color_dark: The color of the slider in a range element in dark mode. + stat_background_fill: The background used for stats visuals (e.g. confidence bars in label). + stat_background_fill_dark: The background used for stats visuals (e.g. confidence bars in label) in dark mode. + table_border_color: The border color of a table. + table_border_color_dark: The border color of a table in dark mode. + table_even_background_fill: The background of even rows in a table. + table_even_background_fill_dark: The background of even rows in a table in dark mode. + table_odd_background_fill: The background of odd rows in a table. + table_odd_background_fill_dark: The background of odd rows in a table in dark mode. + table_radius: The corner radius of a table. + table_row_focus: The background of a focused row in a table. + table_row_focus_dark: The background of a focused row in a table in dark mode. + button_border_width: The border width of a button. + button_border_width_dark: The border width of a button in dark mode. + button_cancel_background_fill: The background of a button of "cancel" variant. + button_cancel_background_fill_dark: The background of a button of "cancel" variant in dark mode. + button_cancel_background_fill_hover: The background of a button of "cancel" variant when hovered over. + button_cancel_background_fill_hover_dark: The background of a button of "cancel" variant when hovered over in dark mode. + button_cancel_border_color: The border color of a button of "cancel" variant. + button_cancel_border_color_dark: The border color of a button of "cancel" variant in dark mode. + button_cancel_border_color_hover: The border color of a button of "cancel" variant when hovered over. + button_cancel_border_color_hover_dark: The border color of a button of "cancel" variant when hovered over in dark mode. + button_cancel_text_color: The text color of a button of "cancel" variant. + button_cancel_text_color_dark: The text color of a button of "cancel" variant in dark mode. + button_cancel_text_color_hover: The text color of a button of "cancel" variant when hovered over. + button_cancel_text_color_hover_dark: The text color of a button of "cancel" variant when hovered over in dark mode. + button_large_padding: The padding of a button with the default "large" size. + button_large_radius: The corner radius of a button with the default "large" size. + button_large_text_size: The text size of a button with the default "large" size. + button_large_text_weight: The text weight of a button with the default "large" size. + button_primary_background_fill: The background of a button of "primary" variant. + button_primary_background_fill_dark: The background of a button of "primary" variant in dark mode. + button_primary_background_fill_hover: The background of a button of "primary" variant when hovered over. + button_primary_background_fill_hover_dark: The background of a button of "primary" variant when hovered over in dark mode. + button_primary_border_color: The border color of a button of "primary" variant. + button_primary_border_color_dark: The border color of a button of "primary" variant in dark mode. + button_primary_border_color_hover: The border color of a button of "primary" variant when hovered over. + button_primary_border_color_hover_dark: The border color of a button of "primary" variant when hovered over in dark mode. + button_primary_text_color: The text color of a button of "primary" variant. + button_primary_text_color_dark: The text color of a button of "primary" variant in dark mode. + button_primary_text_color_hover: The text color of a button of "primary" variant when hovered over. + button_primary_text_color_hover_dark: The text color of a button of "primary" variant when hovered over in dark mode. + button_secondary_background_fill: The background of a button of default "secondary" variant. + button_secondary_background_fill_dark: The background of a button of default "secondary" variant in dark mode. + button_secondary_background_fill_hover: The background of a button of default "secondary" variant when hovered over. + button_secondary_background_fill_hover_dark: The background of a button of default "secondary" variant when hovered over in dark mode. + button_secondary_border_color: The border color of a button of default "secondary" variant. + button_secondary_border_color_dark: The border color of a button of default "secondary" variant in dark mode. + button_secondary_border_color_hover: The border color of a button of default "secondary" variant when hovered over. + button_secondary_border_color_hover_dark: The border color of a button of default "secondary" variant when hovered over in dark mode. + button_secondary_text_color: The text color of a button of default "secondary" variant. + button_secondary_text_color_dark: The text color of a button of default "secondary" variant in dark mode. + button_secondary_text_color_hover: The text color of a button of default "secondary" variant when hovered over. + button_secondary_text_color_hover_dark: The text color of a button of default "secondary" variant when hovered over in dark mode. + button_shadow: The shadow under a button. + button_shadow_active: The shadow under a button when pressed. + button_shadow_hover: The shadow under a button when hovered over. + button_small_padding: The padding of a button set to "small" size. + button_small_radius: The corner radius of a button set to "small" size. + button_small_text_size: The text size of a button set to "small" size. + button_small_text_weight: The text weight of a button set to "small" size. + button_transition: The transition animation duration of a button between regular, hover, and focused states. + """ + + # Body + self.body_background_fill = body_background_fill or getattr( + self, "body_background_fill", "*background_fill_primary" + ) + self.body_background_fill_dark = body_background_fill_dark or getattr( + self, "body_background_fill_dark", "*background_fill_primary" + ) + self.body_text_color = body_text_color or getattr( + self, "body_text_color", "*neutral_800" + ) + self.body_text_color_dark = body_text_color_dark or getattr( + self, "body_text_color_dark", "*neutral_100" + ) + self.body_text_size = body_text_size or getattr( + self, "body_text_size", "*text_md" + ) + self.body_text_weight = body_text_weight or getattr( + self, "body_text_weight", "400" + ) + self.embed_radius = embed_radius or getattr(self, "embed_radius", "*radius_lg") + # Core Colors + self.color_accent = color_accent or getattr( + self, "color_accent", "*primary_500" + ) + self.color_accent_soft = color_accent_soft or getattr( + self, "color_accent_soft", "*primary_50" + ) + self.color_accent_soft_dark = color_accent_soft_dark or getattr( + self, "color_accent_soft_dark", "*neutral_700" + ) + self.background_fill_primary = background_fill_primary or getattr( + self, "background_primary", "white" + ) + self.background_fill_primary_dark = background_fill_primary_dark or getattr( + self, "background_primary_dark", "*neutral_950" + ) + self.background_fill_secondary = background_fill_secondary or getattr( + self, "background_secondary", "*neutral_50" + ) + self.background_fill_secondary_dark = background_fill_secondary_dark or getattr( + self, "background_secondary_dark", "*neutral_900" + ) + self.border_color_accent = border_color_accent or getattr( + self, "border_color_accent", "*primary_300" + ) + self.border_color_accent_dark = border_color_accent_dark or getattr( + self, "border_color_accent_dark", "*neutral_600" + ) + self.border_color_primary = border_color_primary or getattr( + self, "border_color_primary", "*neutral_200" + ) + self.border_color_primary_dark = border_color_primary_dark or getattr( + self, "border_color_primary_dark", "*neutral_700" + ) + # Text Colors + self.link_text_color = link_text_color or getattr( + self, "link_text_color", "*secondary_600" + ) + self.link_text_color_active = link_text_color_active or getattr( + self, "link_text_color_active", "*secondary_600" + ) + self.link_text_color_active_dark = link_text_color_active_dark or getattr( + self, "link_text_color_active_dark", "*secondary_500" + ) + self.link_text_color_dark = link_text_color_dark or getattr( + self, "link_text_color_dark", "*secondary_500" + ) + self.link_text_color_hover = link_text_color_hover or getattr( + self, "link_text_color_hover", "*secondary_700" + ) + self.link_text_color_hover_dark = link_text_color_hover_dark or getattr( + self, "link_text_color_hover_dark", "*secondary_400" + ) + self.link_text_color_visited = link_text_color_visited or getattr( + self, "link_text_color_visited", "*secondary_500" + ) + self.link_text_color_visited_dark = link_text_color_visited_dark or getattr( + self, "link_text_color_visited_dark", "*secondary_600" + ) + self.body_text_color_subdued = body_text_color_subdued or getattr( + self, "body_text_color_subdued", "*neutral_400" + ) + self.body_text_color_subdued_dark = body_text_color_subdued_dark or getattr( + self, "body_text_color_subdued_dark", "*neutral_400" + ) + # Shadows + self.shadow_drop = shadow_drop or getattr( + self, "shadow_drop", "rgba(0,0,0,0.05) 0px 1px 2px 0px" + ) + self.shadow_drop_lg = shadow_drop_lg or getattr( + self, + "shadow_drop_lg", + "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)", + ) + self.shadow_inset = shadow_inset or getattr( + self, "shadow_inset", "rgba(0,0,0,0.05) 0px 2px 4px 0px inset" + ) + self.shadow_spread = shadow_spread or getattr(self, "shadow_spread", "3px") + self.shadow_spread_dark = shadow_spread_dark or getattr( + self, "shadow_spread_dark", "1px" + ) + # Layout Atoms + self.block_background_fill = block_background_fill or getattr( + self, "block_background_fill", "*background_fill_primary" + ) + self.block_background_fill_dark = block_background_fill_dark or getattr( + self, "block_background_fill_dark", "*neutral_800" + ) + self.block_border_color = block_border_color or getattr( + self, "block_border_color", "*border_color_primary" + ) + self.block_border_color_dark = block_border_color_dark or getattr( + self, "block_border_color_dark", "*border_color_primary" + ) + self.block_border_width = block_border_width or getattr( + self, "block_border_width", "1px" + ) + self.block_border_width_dark = block_border_width_dark or getattr( + self, "block_border_width_dark", None + ) + self.block_info_text_color = block_info_text_color or getattr( + self, "block_info_text_color", "*body_text_color_subdued" + ) + self.block_info_text_color_dark = block_info_text_color_dark or getattr( + self, "block_info_text_color_dark", "*body_text_color_subdued" + ) + self.block_info_text_size = block_info_text_size or getattr( + self, "block_info_text_size", "*text_sm" + ) + self.block_info_text_weight = block_info_text_weight or getattr( + self, "block_info_text_weight", "400" + ) + self.block_label_background_fill = block_label_background_fill or getattr( + self, "block_label_background_fill", "*background_fill_primary" + ) + self.block_label_background_fill_dark = ( + block_label_background_fill_dark + or getattr( + self, "block_label_background_fill_dark", "*background_fill_secondary" + ) + ) + self.block_label_border_color = block_label_border_color or getattr( + self, "block_label_border_color", "*border_color_primary" + ) + self.block_label_border_color_dark = block_label_border_color_dark or getattr( + self, "block_label_border_color_dark", "*border_color_primary" + ) + self.block_label_border_width = block_label_border_width or getattr( + self, "block_label_border_width", "1px" + ) + self.block_label_border_width_dark = block_label_border_width_dark or getattr( + self, "block_label_border_width_dark", None + ) + self.block_label_text_color = block_label_text_color or getattr( + self, "block_label_text_color", "*neutral_500" + ) + self.block_label_text_color_dark = block_label_text_color_dark or getattr( + self, "block_label_text_color_dark", "*neutral_200" + ) + self.block_label_margin = block_label_margin or getattr( + self, "block_label_margin", "0" + ) + self.block_label_padding = block_label_padding or getattr( + self, "block_label_padding", "*spacing_sm *spacing_lg" + ) + self.block_label_radius = block_label_radius or getattr( + self, + "block_label_radius", + "calc(*radius_lg - 1px) 0 calc(*radius_lg - 1px) 0", + ) + self.block_label_right_radius = block_label_right_radius or getattr( + self, + "block_label_right_radius", + "0 calc(*radius_lg - 1px) 0 calc(*radius_lg - 1px)", + ) + self.block_label_text_size = block_label_text_size or getattr( + self, "block_label_text_size", "*text_sm" + ) + self.block_label_text_weight = block_label_text_weight or getattr( + self, "block_label_text_weight", "400" + ) + self.block_padding = block_padding or getattr( + self, "block_padding", "*spacing_xl calc(*spacing_xl + 2px)" + ) + self.block_radius = block_radius or getattr(self, "block_radius", "*radius_lg") + self.block_shadow = block_shadow or getattr(self, "block_shadow", "none") + self.block_shadow_dark = block_shadow_dark or getattr( + self, "block_shadow_dark", None + ) + self.block_title_background_fill = block_title_background_fill or getattr( + self, "block_title_background_fill", "none" + ) + self.block_title_background_fill_dark = ( + block_title_background_fill_dark + or getattr(self, "block_title_background_fill_dark", None) + ) + self.block_title_border_color = block_title_border_color or getattr( + self, "block_title_border_color", "none" + ) + self.block_title_border_color_dark = block_title_border_color_dark or getattr( + self, "block_title_border_color_dark", None + ) + self.block_title_border_width = block_title_border_width or getattr( + self, "block_title_border_width", "0px" + ) + self.block_title_border_width_dark = block_title_border_width_dark or getattr( + self, "block_title_border_width_dark", None + ) + self.block_title_text_color = block_title_text_color or getattr( + self, "block_title_text_color", "*neutral_500" + ) + self.block_title_text_color_dark = block_title_text_color_dark or getattr( + self, "block_title_text_color_dark", "*neutral_200" + ) + self.block_title_padding = block_title_padding or getattr( + self, "block_title_padding", "0" + ) + self.block_title_radius = block_title_radius or getattr( + self, "block_title_radius", "none" + ) + self.block_title_text_size = block_title_text_size or getattr( + self, "block_title_text_size", "*text_md" + ) + self.block_title_text_weight = block_title_text_weight or getattr( + self, "block_title_text_weight", "400" + ) + self.container_radius = container_radius or getattr( + self, "container_radius", "*radius_lg" + ) + self.form_gap_width = form_gap_width or getattr(self, "form_gap_width", "0px") + self.layout_gap = layout_gap or getattr(self, "layout_gap", "*spacing_xxl") + self.panel_background_fill = panel_background_fill or getattr( + self, "panel_background_fill", "*background_fill_secondary" + ) + self.panel_background_fill_dark = panel_background_fill_dark or getattr( + self, "panel_background_fill_dark", "*background_fill_secondary" + ) + self.panel_border_color = panel_border_color or getattr( + self, "panel_border_color", "*border_color_primary" + ) + self.panel_border_color_dark = panel_border_color_dark or getattr( + self, "panel_border_color_dark", "*border_color_primary" + ) + self.panel_border_width = panel_border_width or getattr( + self, "panel_border_width", "0" + ) + self.panel_border_width_dark = panel_border_width_dark or getattr( + self, "panel_border_width_dark", None + ) + self.section_header_text_size = section_header_text_size or getattr( + self, "section_header_text_size", "*text_md" + ) + self.section_header_text_weight = section_header_text_weight or getattr( + self, "section_header_text_weight", "400" + ) + # Component Atoms + self.checkbox_background_color = checkbox_background_color or getattr( + self, "checkbox_background_color", "*background_fill_primary" + ) + self.checkbox_background_color_dark = checkbox_background_color_dark or getattr( + self, "checkbox_background_color_dark", "*neutral_800" + ) + self.checkbox_background_color_focus = ( + checkbox_background_color_focus + or getattr( + self, "checkbox_background_color_focus", "*checkbox_background_color" + ) + ) + self.checkbox_background_color_focus_dark = ( + checkbox_background_color_focus_dark + or getattr( + self, + "checkbox_background_color_focus_dark", + "*checkbox_background_color", + ) + ) + self.checkbox_background_color_hover = ( + checkbox_background_color_hover + or getattr( + self, "checkbox_background_color_hover", "*checkbox_background_color" + ) + ) + self.checkbox_background_color_hover_dark = ( + checkbox_background_color_hover_dark + or getattr( + self, + "checkbox_background_color_hover_dark", + "*checkbox_background_color", + ) + ) + self.checkbox_background_color_selected = ( + checkbox_background_color_selected + or getattr(self, "checkbox_background_color_selected", "*secondary_600") + ) + self.checkbox_background_color_selected_dark = ( + checkbox_background_color_selected_dark + or getattr( + self, "checkbox_background_color_selected_dark", "*secondary_600" + ) + ) + self.checkbox_border_color = checkbox_border_color or getattr( + self, "checkbox_border_color", "*neutral_300" + ) + self.checkbox_border_color_dark = checkbox_border_color_dark or getattr( + self, "checkbox_border_color_dark", "*neutral_700" + ) + self.checkbox_border_color_focus = checkbox_border_color_focus or getattr( + self, "checkbox_border_color_focus", "*secondary_500" + ) + self.checkbox_border_color_focus_dark = ( + checkbox_border_color_focus_dark + or getattr(self, "checkbox_border_color_focus_dark", "*secondary_500") + ) + self.checkbox_border_color_hover = checkbox_border_color_hover or getattr( + self, "checkbox_border_color_hover", "*neutral_300" + ) + self.checkbox_border_color_hover_dark = ( + checkbox_border_color_hover_dark + or getattr(self, "checkbox_border_color_hover_dark", "*neutral_600") + ) + self.checkbox_border_color_selected = checkbox_border_color_selected or getattr( + self, "checkbox_border_color_selected", "*secondary_600" + ) + self.checkbox_border_color_selected_dark = ( + checkbox_border_color_selected_dark + or getattr(self, "checkbox_border_color_selected_dark", "*secondary_600") + ) + self.checkbox_border_radius = checkbox_border_radius or getattr( + self, "checkbox_border_radius", "*radius_sm" + ) + self.checkbox_border_width = checkbox_border_width or getattr( + self, "checkbox_border_width", "*input_border_width" + ) + self.checkbox_border_width_dark = checkbox_border_width_dark or getattr( + self, "checkbox_border_width_dark", "*input_border_width" + ) + self.checkbox_label_background_fill = checkbox_label_background_fill or getattr( + self, "checkbox_label_background_fill", "*button_secondary_background_fill" + ) + self.checkbox_label_background_fill_dark = ( + checkbox_label_background_fill_dark + or getattr( + self, + "checkbox_label_background_fill_dark", + "*button_secondary_background_fill", + ) + ) + self.checkbox_label_background_fill_hover = ( + checkbox_label_background_fill_hover + or getattr( + self, + "checkbox_label_background_fill_hover", + "*button_secondary_background_fill_hover", + ) + ) + self.checkbox_label_background_fill_hover_dark = ( + checkbox_label_background_fill_hover_dark + or getattr( + self, + "checkbox_label_background_fill_hover_dark", + "*button_secondary_background_fill_hover", + ) + ) + self.checkbox_label_background_fill_selected = ( + checkbox_label_background_fill_selected + or getattr( + self, + "checkbox_label_background_fill_selected", + "*checkbox_label_background_fill", + ) + ) + self.checkbox_label_background_fill_selected_dark = ( + checkbox_label_background_fill_selected_dark + or getattr( + self, + "checkbox_label_background_fill_selected_dark", + "*checkbox_label_background_fill", + ) + ) + self.checkbox_label_border_color = checkbox_label_border_color or getattr( + self, "checkbox_label_border_color", "*border_color_primary" + ) + self.checkbox_label_border_color_dark = ( + checkbox_label_border_color_dark + or getattr( + self, "checkbox_label_border_color_dark", "*border_color_primary" + ) + ) + self.checkbox_label_border_color_hover = ( + checkbox_label_border_color_hover + or getattr( + self, + "checkbox_label_border_color_hover", + "*checkbox_label_border_color", + ) + ) + self.checkbox_label_border_color_hover_dark = ( + checkbox_label_border_color_hover_dark + or getattr( + self, + "checkbox_label_border_color_hover_dark", + "*checkbox_label_border_color", + ) + ) + self.checkbox_label_border_width = checkbox_label_border_width or getattr( + self, "checkbox_label_border_width", "*input_border_width" + ) + self.checkbox_label_border_width_dark = ( + checkbox_label_border_width_dark + or getattr(self, "checkbox_label_border_width_dark", "*input_border_width") + ) + self.checkbox_label_gap = checkbox_label_gap or getattr( + self, "checkbox_label_gap", "*spacing_lg" + ) + self.checkbox_label_padding = checkbox_label_padding or getattr( + self, "checkbox_label_padding", "*spacing_md calc(2 * *spacing_md)" + ) + self.checkbox_label_shadow = checkbox_label_shadow or getattr( + self, "checkbox_label_shadow", "none" + ) + self.checkbox_label_text_size = checkbox_label_text_size or getattr( + self, "checkbox_label_text_size", "*text_md" + ) + self.checkbox_label_text_weight = checkbox_label_text_weight or getattr( + self, "checkbox_label_text_weight", "400" + ) + self.checkbox_check = checkbox_check or getattr( + self, + "checkbox_check", + """url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")""", + ) + self.radio_circle = radio_circle or getattr( + self, + "radio_circle", + """url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")""", + ) + self.checkbox_shadow = checkbox_shadow or getattr( + self, "checkbox_shadow", "*input_shadow" + ) + self.checkbox_label_text_color = checkbox_label_text_color or getattr( + self, "checkbox_label_text_color", "*body_text_color" + ) + self.checkbox_label_text_color_dark = checkbox_label_text_color_dark or getattr( + self, "checkbox_label_text_color_dark", "*body_text_color" + ) + self.checkbox_label_text_color_selected = ( + checkbox_label_text_color_selected + or getattr( + self, "checkbox_label_text_color_selected", "*checkbox_label_text_color" + ) + ) + self.checkbox_label_text_color_selected_dark = ( + checkbox_label_text_color_selected_dark + or getattr( + self, + "checkbox_label_text_color_selected_dark", + "*checkbox_label_text_color", + ) + ) + self.error_background_fill = error_background_fill or getattr( + self, "error_background_fill", colors.red.c100 + ) + self.error_background_fill_dark = error_background_fill_dark or getattr( + self, "error_background_fill_dark", "*background_fill_primary" + ) + self.error_border_color = error_border_color or getattr( + self, "error_border_color", colors.red.c200 + ) + self.error_border_color_dark = error_border_color_dark or getattr( + self, "error_border_color_dark", "*border_color_primary" + ) + self.error_border_width = error_border_width or getattr( + self, "error_border_width", "1px" + ) + self.error_border_width_dark = error_border_width_dark or getattr( + self, "error_border_width_dark", None + ) + self.error_text_color = error_text_color or getattr( + self, "error_text_color", colors.red.c500 + ) + self.error_text_color_dark = error_text_color_dark or getattr( + self, "error_text_color_dark", colors.red.c500 + ) + self.input_background_fill = input_background_fill or getattr( + self, "input_background_fill", "*neutral_100" + ) + self.input_background_fill_dark = input_background_fill_dark or getattr( + self, "input_background_fill_dark", "*neutral_700" + ) + self.input_background_fill_focus = input_background_fill_focus or getattr( + self, "input_background_fill_focus", "*secondary_500" + ) + self.input_background_fill_focus_dark = ( + input_background_fill_focus_dark + or getattr(self, "input_background_fill_focus_dark", "*secondary_600") + ) + self.input_background_fill_hover = input_background_fill_hover or getattr( + self, "input_background_fill_hover", "*input_background_fill" + ) + self.input_background_fill_hover_dark = ( + input_background_fill_hover_dark + or getattr( + self, "input_background_fill_hover_dark", "*input_background_fill" + ) + ) + self.input_border_color = input_border_color or getattr( + self, "input_border_color", "*border_color_primary" + ) + self.input_border_color_dark = input_border_color_dark or getattr( + self, "input_border_color_dark", "*border_color_primary" + ) + self.input_border_color_focus = input_border_color_focus or getattr( + self, "input_border_color_focus", "*secondary_300" + ) + self.input_border_color_focus_dark = input_border_color_focus_dark or getattr( + self, "input_border_color_focus_dark", "*neutral_700" + ) + self.input_border_color_hover = input_border_color_hover or getattr( + self, "input_border_color_hover", "*input_border_color" + ) + self.input_border_color_hover_dark = input_border_color_hover_dark or getattr( + self, "input_border_color_hover_dark", "*input_border_color" + ) + self.input_border_width = input_border_width or getattr( + self, "input_border_width", "0px" + ) + self.input_border_width_dark = input_border_width_dark or getattr( + self, "input_border_width_dark", None + ) + self.input_padding = input_padding or getattr( + self, "input_padding", "*spacing_xl" + ) + self.input_placeholder_color = input_placeholder_color or getattr( + self, "input_placeholder_color", "*neutral_400" + ) + self.input_placeholder_color_dark = input_placeholder_color_dark or getattr( + self, "input_placeholder_color_dark", "*neutral_500" + ) + self.input_radius = input_radius or getattr(self, "input_radius", "*radius_lg") + self.input_shadow = input_shadow or getattr(self, "input_shadow", "none") + self.input_shadow_dark = input_shadow_dark or getattr( + self, "input_shadow_dark", None + ) + self.input_shadow_focus = input_shadow_focus or getattr( + self, "input_shadow_focus", "*input_shadow" + ) + self.input_shadow_focus_dark = input_shadow_focus_dark or getattr( + self, "input_shadow_focus_dark", None + ) + self.input_text_size = input_text_size or getattr( + self, "input_text_size", "*text_md" + ) + self.input_text_weight = input_text_weight or getattr( + self, "input_text_weight", "400" + ) + self.loader_color = loader_color or getattr( + self, "loader_color", "*color_accent" + ) + self.loader_color_dark = loader_color_dark or getattr( + self, "loader_color_dark", None + ) + self.prose_text_size = prose_text_size or getattr( + self, "prose_text_size", "*text_md" + ) + self.prose_text_weight = prose_text_weight or getattr( + self, "prose_text_weight", "400" + ) + self.prose_header_text_weight = prose_header_text_weight or getattr( + self, "prose_header_text_weight", "600" + ) + self.slider_color = slider_color or getattr(self, "slider_color", "") + self.slider_color_dark = slider_color_dark or getattr( + self, "slider_color_dark", None + ) + self.stat_background_fill = stat_background_fill or getattr( + self, "stat_background_fill", "*primary_300" + ) + self.stat_background_fill_dark = stat_background_fill_dark or getattr( + self, "stat_background_fill_dark", "*primary_500" + ) + self.table_border_color = table_border_color or getattr( + self, "table_border_color", "*neutral_300" + ) + self.table_border_color_dark = table_border_color_dark or getattr( + self, "table_border_color_dark", "*neutral_700" + ) + self.table_even_background_fill = table_even_background_fill or getattr( + self, "table_even_background_fill", "white" + ) + self.table_even_background_fill_dark = ( + table_even_background_fill_dark + or getattr(self, "table_even_background_fill_dark", "*neutral_950") + ) + self.table_odd_background_fill = table_odd_background_fill or getattr( + self, "table_odd_background_fill", "*neutral_50" + ) + self.table_odd_background_fill_dark = table_odd_background_fill_dark or getattr( + self, "table_odd_background_fill_dark", "*neutral_900" + ) + self.table_radius = table_radius or getattr(self, "table_radius", "*radius_lg") + self.table_row_focus = table_row_focus or getattr( + self, "table_row_focus", "*color_accent_soft" + ) + self.table_row_focus_dark = table_row_focus_dark or getattr( + self, "table_row_focus_dark", "*color_accent_soft" + ) + # Buttons + self.button_border_width = button_border_width or getattr( + self, "button_border_width", "*input_border_width" + ) + self.button_border_width_dark = button_border_width_dark or getattr( + self, "button_border_width_dark", "*input_border_width" + ) + self.button_cancel_background_fill = button_cancel_background_fill or getattr( + self, "button_cancel_background_fill", "*button_secondary_background_fill" + ) + self.button_cancel_background_fill_dark = ( + button_cancel_background_fill_dark + or getattr( + self, + "button_cancel_background_fill_dark", + "*button_secondary_background_fill", + ) + ) + self.button_cancel_background_fill_hover = ( + button_cancel_background_fill_hover + or getattr( + self, + "button_cancel_background_fill_hover", + "*button_cancel_background_fill", + ) + ) + self.button_cancel_background_fill_hover_dark = ( + button_cancel_background_fill_hover_dark + or getattr( + self, + "button_cancel_background_fill_hover_dark", + "*button_cancel_background_fill", + ) + ) + self.button_cancel_border_color = button_cancel_border_color or getattr( + self, "button_cancel_border_color", "*button_secondary_border_color" + ) + self.button_cancel_border_color_dark = ( + button_cancel_border_color_dark + or getattr( + self, + "button_cancel_border_color_dark", + "*button_secondary_border_color", + ) + ) + self.button_cancel_border_color_hover = ( + button_cancel_border_color_hover + or getattr( + self, + "button_cancel_border_color_hover", + "*button_cancel_border_color", + ) + ) + self.button_cancel_border_color_hover_dark = ( + button_cancel_border_color_hover_dark + or getattr( + self, + "button_cancel_border_color_hover_dark", + "*button_cancel_border_color", + ) + ) + self.button_cancel_text_color = button_cancel_text_color or getattr( + self, "button_cancel_text_color", "*button_secondary_text_color" + ) + self.button_cancel_text_color_dark = button_cancel_text_color_dark or getattr( + self, "button_cancel_text_color_dark", "*button_secondary_text_color" + ) + self.button_cancel_text_color_hover = button_cancel_text_color_hover or getattr( + self, "button_cancel_text_color_hover", "*button_cancel_text_color" + ) + self.button_cancel_text_color_hover_dark = ( + button_cancel_text_color_hover_dark + or getattr( + self, "button_cancel_text_color_hover_dark", "*button_cancel_text_color" + ) + ) + self.button_large_padding = button_large_padding or getattr( + self, "button_large_padding", "*spacing_lg calc(2 * *spacing_lg)" + ) + self.button_large_radius = button_large_radius or getattr( + self, "button_large_radius", "*radius_lg" + ) + self.button_large_text_size = button_large_text_size or getattr( + self, "button_large_text_size", "*text_lg" + ) + self.button_large_text_weight = button_large_text_weight or getattr( + self, "button_large_text_weight", "600" + ) + self.button_primary_background_fill = button_primary_background_fill or getattr( + self, "button_primary_background_fill", "*primary_200" + ) + self.button_primary_background_fill_dark = ( + button_primary_background_fill_dark + or getattr(self, "button_primary_background_fill_dark", "*primary_700") + ) + self.button_primary_background_fill_hover = ( + button_primary_background_fill_hover + or getattr( + self, + "button_primary_background_fill_hover", + "*button_primary_background_fill", + ) + ) + self.button_primary_background_fill_hover_dark = ( + button_primary_background_fill_hover_dark + or getattr( + self, + "button_primary_background_fill_hover_dark", + "*button_primary_background_fill", + ) + ) + self.button_primary_border_color = button_primary_border_color or getattr( + self, "button_primary_border_color", "*primary_200" + ) + self.button_primary_border_color_dark = ( + button_primary_border_color_dark + or getattr(self, "button_primary_border_color_dark", "*primary_600") + ) + self.button_primary_border_color_hover = ( + button_primary_border_color_hover + or getattr( + self, + "button_primary_border_color_hover", + "*button_primary_border_color", + ) + ) + self.button_primary_border_color_hover_dark = ( + button_primary_border_color_hover_dark + or getattr( + self, + "button_primary_border_color_hover_dark", + "*button_primary_border_color", + ) + ) + self.button_primary_text_color = button_primary_text_color or getattr( + self, "button_primary_text_color", "*primary_600" + ) + self.button_primary_text_color_dark = button_primary_text_color_dark or getattr( + self, "button_primary_text_color_dark", "white" + ) + self.button_primary_text_color_hover = ( + button_primary_text_color_hover + or getattr( + self, "button_primary_text_color_hover", "*button_primary_text_color" + ) + ) + self.button_primary_text_color_hover_dark = ( + button_primary_text_color_hover_dark + or getattr( + self, + "button_primary_text_color_hover_dark", + "*button_primary_text_color", + ) + ) + self.button_secondary_background_fill = ( + button_secondary_background_fill + or getattr(self, "button_secondary_background_fill", "*neutral_200") + ) + self.button_secondary_background_fill_dark = ( + button_secondary_background_fill_dark + or getattr(self, "button_secondary_background_fill_dark", "*neutral_600") + ) + self.button_secondary_background_fill_hover = ( + button_secondary_background_fill_hover + or getattr( + self, + "button_secondary_background_fill_hover", + "*button_secondary_background_fill", + ) + ) + self.button_secondary_background_fill_hover_dark = ( + button_secondary_background_fill_hover_dark + or getattr( + self, + "button_secondary_background_fill_hover_dark", + "*button_secondary_background_fill", + ) + ) + self.button_secondary_border_color = button_secondary_border_color or getattr( + self, "button_secondary_border_color", "*neutral_200" + ) + self.button_secondary_border_color_dark = ( + button_secondary_border_color_dark + or getattr(self, "button_secondary_border_color_dark", "*neutral_600") + ) + self.button_secondary_border_color_hover = ( + button_secondary_border_color_hover + or getattr( + self, + "button_secondary_border_color_hover", + "*button_secondary_border_color", + ) + ) + self.button_secondary_border_color_hover_dark = ( + button_secondary_border_color_hover_dark + or getattr( + self, + "button_secondary_border_color_hover_dark", + "*button_secondary_border_color", + ) + ) + self.button_secondary_text_color = button_secondary_text_color or getattr( + self, "button_secondary_text_color", "*neutral_700" + ) + self.button_secondary_text_color_dark = ( + button_secondary_text_color_dark + or getattr(self, "button_secondary_text_color_dark", "white") + ) + self.button_secondary_text_color_hover = ( + button_secondary_text_color_hover + or getattr( + self, + "button_secondary_text_color_hover", + "*button_secondary_text_color", + ) + ) + self.button_secondary_text_color_hover_dark = ( + button_secondary_text_color_hover_dark + or getattr( + self, + "button_secondary_text_color_hover_dark", + "*button_secondary_text_color", + ) + ) + self.button_shadow = button_shadow or getattr(self, "button_shadow", "none") + self.button_shadow_active = button_shadow_active or getattr( + self, "button_shadow_active", "none" + ) + self.button_shadow_hover = button_shadow_hover or getattr( + self, "button_shadow_hover", "none" + ) + self.button_small_padding = button_small_padding or getattr( + self, "button_small_padding", "*spacing_sm calc(2 * *spacing_sm)" + ) + self.button_small_radius = button_small_radius or getattr( + self, "button_small_radius", "*radius_lg" + ) + self.button_small_text_size = button_small_text_size or getattr( + self, "button_small_text_size", "*text_md" + ) + self.button_small_text_weight = button_small_text_weight or getattr( + self, "button_small_text_weight", "400" + ) + self.button_transition = button_transition or getattr( + self, "button_transition", "background-color 0.2s ease" + ) + return self diff --git a/gradio/themes/default.py b/gradio/themes/default.py new file mode 100644 index 0000000000000000000000000000000000000000..ac63779525d8b155b91355467ae58d0b993387aa --- /dev/null +++ b/gradio/themes/default.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +from typing import Iterable + +from gradio.themes.base import Base +from gradio.themes.utils import colors, fonts, sizes + + +class Default(Base): + def __init__( + self, + *, + primary_hue: colors.Color | str = colors.orange, + secondary_hue: colors.Color | str = colors.blue, + neutral_hue: colors.Color | str = colors.gray, + spacing_size: sizes.Size | str = sizes.spacing_md, + radius_size: sizes.Size | str = sizes.radius_md, + text_size: sizes.Size | str = sizes.text_md, + font: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("Source Sans Pro"), + "ui-sans-serif", + "system-ui", + "sans-serif", + ), + font_mono: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("IBM Plex Mono"), + "ui-monospace", + "Consolas", + "monospace", + ), + ): + super().__init__( + primary_hue=primary_hue, + secondary_hue=secondary_hue, + neutral_hue=neutral_hue, + spacing_size=spacing_size, + radius_size=radius_size, + text_size=text_size, + font=font, + font_mono=font_mono, + ) + super().set( + # Colors + input_background_fill_dark="*neutral_800", + # Transition + button_transition="none", + # Shadows + button_shadow="*shadow_drop", + button_shadow_hover="*shadow_drop_lg", + button_shadow_active="*shadow_inset", + input_shadow="0 0 0 *shadow_spread transparent, *shadow_inset", + input_shadow_focus="0 0 0 *shadow_spread *secondary_50, *shadow_inset", + input_shadow_focus_dark="0 0 0 *shadow_spread *neutral_700, *shadow_inset", + checkbox_label_shadow="*shadow_drop", + block_shadow="*shadow_drop", + form_gap_width="1px", + # Button borders + input_border_width="1px", + input_background_fill="white", + # Gradients + stat_background_fill="linear-gradient(to right, *primary_400, *primary_200)", + stat_background_fill_dark="linear-gradient(to right, *primary_400, *primary_600)", + error_background_fill=f"linear-gradient(to right, {colors.red.c100}, *background_fill_secondary)", + error_background_fill_dark="*background_fill_primary", + checkbox_label_background_fill="linear-gradient(to top, *neutral_50, white)", + checkbox_label_background_fill_dark="linear-gradient(to top, *neutral_900, *neutral_800)", + checkbox_label_background_fill_hover="linear-gradient(to top, *neutral_100, white)", + checkbox_label_background_fill_hover_dark="linear-gradient(to top, *neutral_900, *neutral_800)", + button_primary_background_fill="linear-gradient(to bottom right, *primary_100, *primary_300)", + button_primary_background_fill_dark="linear-gradient(to bottom right, *primary_500, *primary_600)", + button_primary_background_fill_hover="linear-gradient(to bottom right, *primary_100, *primary_200)", + button_primary_background_fill_hover_dark="linear-gradient(to bottom right, *primary_500, *primary_500)", + button_primary_border_color_dark="*primary_500", + button_secondary_background_fill="linear-gradient(to bottom right, *neutral_100, *neutral_200)", + button_secondary_background_fill_dark="linear-gradient(to bottom right, *neutral_600, *neutral_700)", + button_secondary_background_fill_hover="linear-gradient(to bottom right, *neutral_100, *neutral_100)", + button_secondary_background_fill_hover_dark="linear-gradient(to bottom right, *neutral_600, *neutral_600)", + button_cancel_background_fill=f"linear-gradient(to bottom right, {colors.red.c100}, {colors.red.c200})", + button_cancel_background_fill_dark=f"linear-gradient(to bottom right, {colors.red.c600}, {colors.red.c700})", + button_cancel_background_fill_hover=f"linear-gradient(to bottom right, {colors.red.c100}, {colors.red.c100})", + button_cancel_background_fill_hover_dark=f"linear-gradient(to bottom right, {colors.red.c600}, {colors.red.c600})", + button_cancel_border_color=colors.red.c200, + button_cancel_border_color_dark=colors.red.c600, + button_cancel_text_color=colors.red.c600, + button_cancel_text_color_dark="white", + ) diff --git a/gradio/themes/glass.py b/gradio/themes/glass.py new file mode 100644 index 0000000000000000000000000000000000000000..f1a130437de2f7117cbc80e1a1b3f20620507be9 --- /dev/null +++ b/gradio/themes/glass.py @@ -0,0 +1,98 @@ +from __future__ import annotations + +from typing import Iterable + +from gradio.themes.base import Base +from gradio.themes.utils import colors, fonts, sizes + + +class Glass(Base): + def __init__( + self, + *, + primary_hue: colors.Color | str = colors.stone, + secondary_hue: colors.Color | str = colors.stone, + neutral_hue: colors.Color | str = colors.stone, + spacing_size: sizes.Size | str = sizes.spacing_sm, + radius_size: sizes.Size | str = sizes.radius_sm, + text_size: sizes.Size | str = sizes.text_sm, + font: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + "Optima", + "Candara", + "Noto Sans", + "source-sans-pro", + "sans-serif", + ), + font_mono: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("IBM Plex Mono"), + "ui-monospace", + "Consolas", + "monospace", + ), + ): + super().__init__( + primary_hue=primary_hue, + secondary_hue=secondary_hue, + neutral_hue=neutral_hue, + spacing_size=spacing_size, + radius_size=radius_size, + text_size=text_size, + font=font, + font_mono=font_mono, + ) + super().set( + body_background_fill_dark="*primary_800", + background_fill_secondary_dark="*primary_800", + block_background_fill_dark="*primary_800", + button_primary_background_fill="linear-gradient(180deg, *primary_50 0%, *primary_200 50%, *primary_300 50%, *primary_200 100%)", + button_primary_background_fill_hover="linear-gradient(180deg, *primary_100 0%, *primary_200 50%, *primary_300 50%, *primary_200 100%)", + button_primary_background_fill_dark="linear-gradient(180deg, *primary_400 0%, *primary_500 50%, *primary_600 50%, *primary_500 100%)", + button_primary_background_fill_hover_dark="linear-gradient(180deg, *primary_400 0%, *primary_500 50%, *primary_600 50%, *primary_500 100%)", + button_secondary_background_fill="*button_primary_background_fill", + button_secondary_background_fill_hover="*button_primary_background_fill_hover", + button_secondary_background_fill_dark="*button_primary_background_fill", + button_secondary_background_fill_hover_dark="*button_primary_background_fill_hover", + button_cancel_background_fill="*button_primary_background_fill", + button_cancel_background_fill_hover="*button_primary_background_fill_hover", + button_cancel_background_fill_dark="*button_primary_background_fill", + button_cancel_background_fill_hover_dark="*button_primary_background_fill_hover", + button_cancel_border_color="*button_secondary_border_color", + button_cancel_border_color_dark="*button_secondary_border_color", + button_cancel_text_color="*button_secondary_text_color", + checkbox_border_width="0px", + checkbox_label_background_fill="*button_secondary_background_fill", + checkbox_label_background_fill_dark="*button_secondary_background_fill", + checkbox_label_background_fill_hover="*button_secondary_background_fill_hover", + checkbox_label_background_fill_hover_dark="*button_secondary_background_fill_hover", + checkbox_label_border_width="1px", + checkbox_background_color_dark="*primary_600", + button_border_width="1px", + button_shadow_active="*shadow_inset", + input_background_fill="linear-gradient(0deg, *secondary_50 0%, white 100%)", + input_background_fill_dark="*secondary_600", + input_border_color_focus_dark="*primary_400", + input_border_width="1px", + slider_color="*primary_400", + block_label_text_color="*primary_500", + block_title_text_color="*primary_500", + block_label_text_weight="600", + block_title_text_weight="600", + block_label_text_size="*text_md", + block_title_text_size="*text_md", + block_label_background_fill="*primary_200", + block_label_background_fill_dark="*primary_700", + block_border_width="0px", + block_border_width_dark="1px", + panel_border_width="1px", + border_color_primary_dark="*primary_500", + background_fill_primary_dark="*neutral_700", + background_fill_secondary="*primary_100", + block_background_fill="*primary_50", + block_shadow="*primary_400 0px 0px 3px 0px", + table_even_background_fill_dark="*neutral_700", + table_odd_background_fill_dark="*neutral_700", + ) diff --git a/gradio/themes/monochrome.py b/gradio/themes/monochrome.py new file mode 100644 index 0000000000000000000000000000000000000000..57efeb1e2478ff4b6a4c49f43cc293f3c84e55cb --- /dev/null +++ b/gradio/themes/monochrome.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +from typing import Iterable + +from gradio.themes.base import Base +from gradio.themes.utils import colors, fonts, sizes + + +class Monochrome(Base): + def __init__( + self, + *, + primary_hue: colors.Color | str = colors.neutral, + secondary_hue: colors.Color | str = colors.neutral, + neutral_hue: colors.Color | str = colors.neutral, + spacing_size: sizes.Size | str = sizes.spacing_lg, + radius_size: sizes.Size | str = sizes.radius_none, + text_size: sizes.Size | str = sizes.text_md, + font: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("Quicksand"), + "ui-sans-serif", + "system-ui", + "sans-serif", + ), + font_mono: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("IBM Plex Mono"), + "ui-monospace", + "Consolas", + "monospace", + ), + ): + super().__init__( + primary_hue=primary_hue, + secondary_hue=secondary_hue, + neutral_hue=neutral_hue, + spacing_size=spacing_size, + radius_size=radius_size, + text_size=text_size, + font=font, + font_mono=font_mono, + ) + super().set( + # Colors + slider_color="*neutral_900", + slider_color_dark="*neutral_500", + body_text_color="*neutral_900", + block_label_text_color="*body_text_color", + block_title_text_color="*body_text_color", + body_text_color_subdued="*neutral_700", + background_fill_primary_dark="*neutral_900", + background_fill_secondary_dark="*neutral_800", + block_background_fill_dark="*neutral_800", + input_background_fill_dark="*neutral_700", + # Button Colors + button_primary_background_fill="*neutral_900", + button_primary_background_fill_hover="*neutral_700", + button_primary_text_color="white", + button_primary_background_fill_dark="*neutral_600", + button_primary_background_fill_hover_dark="*neutral_600", + button_primary_text_color_dark="white", + button_secondary_background_fill="*button_primary_background_fill", + button_secondary_background_fill_hover="*button_primary_background_fill_hover", + button_secondary_text_color="*button_primary_text_color", + button_cancel_background_fill="*button_primary_background_fill", + button_cancel_background_fill_hover="*button_primary_background_fill_hover", + button_cancel_text_color="*button_primary_text_color", + checkbox_label_background_fill="*button_primary_background_fill", + checkbox_label_background_fill_hover="*button_primary_background_fill_hover", + checkbox_label_text_color="*button_primary_text_color", + checkbox_background_color_selected="*neutral_600", + checkbox_background_color_dark="*neutral_700", + checkbox_background_color_selected_dark="*neutral_700", + checkbox_border_color_selected_dark="*neutral_800", + # Padding + checkbox_label_padding="*spacing_md", + button_large_padding="*spacing_lg", + button_small_padding="*spacing_sm", + # Borders + block_border_width="0px", + block_border_width_dark="1px", + shadow_drop_lg="0 1px 4px 0 rgb(0 0 0 / 0.1)", + block_shadow="*shadow_drop_lg", + block_shadow_dark="none", + # Block Labels + block_title_text_weight="600", + block_label_text_weight="600", + block_label_text_size="*text_md", + ) diff --git a/gradio/themes/soft.py b/gradio/themes/soft.py new file mode 100644 index 0000000000000000000000000000000000000000..ec517b92d9add0b9583e139fe69a4dbb2c886e56 --- /dev/null +++ b/gradio/themes/soft.py @@ -0,0 +1,110 @@ +from __future__ import annotations + +from typing import Iterable + +from gradio.themes.base import Base +from gradio.themes.utils import colors, fonts, sizes + + +class Soft(Base): + def __init__( + self, + *, + primary_hue: colors.Color | str = colors.indigo, + secondary_hue: colors.Color | str = colors.indigo, + neutral_hue: colors.Color | str = colors.gray, + spacing_size: sizes.Size | str = sizes.spacing_md, + radius_size: sizes.Size | str = sizes.radius_md, + text_size: sizes.Size | str = sizes.text_md, + font: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("Montserrat"), + "ui-sans-serif", + "system-ui", + "sans-serif", + ), + font_mono: fonts.Font + | str + | Iterable[fonts.Font | str] = ( + fonts.GoogleFont("IBM Plex Mono"), + "ui-monospace", + "Consolas", + "monospace", + ), + ): + super().__init__( + primary_hue=primary_hue, + secondary_hue=secondary_hue, + neutral_hue=neutral_hue, + spacing_size=spacing_size, + radius_size=radius_size, + text_size=text_size, + font=font, + font_mono=font_mono, + ) + super().set( + # Colors + background_fill_primary="*neutral_50", + slider_color="*primary_500", + slider_color_dark="*primary_600", + # Shadows + shadow_drop="0 1px 4px 0 rgb(0 0 0 / 0.1)", + shadow_drop_lg="0 2px 5px 0 rgb(0 0 0 / 0.1)", + # Block Labels + block_background_fill="white", + block_label_padding="*spacing_sm *spacing_md", + block_label_background_fill="*primary_100", + block_label_background_fill_dark="*primary_600", + block_label_radius="*radius_md", + block_label_text_size="*text_md", + block_label_text_weight="600", + block_label_text_color="*primary_500", + block_label_text_color_dark="*white", + block_title_radius="*block_label_radius", + block_title_padding="*block_label_padding", + block_title_background_fill="*block_label_background_fill", + block_title_text_weight="600", + block_title_text_color="*primary_500", + block_title_text_color_dark="*white", + block_label_margin="*spacing_md", + # Inputs + input_background_fill="white", + input_border_color="*neutral_50", + input_shadow="*shadow_drop", + input_shadow_focus="*shadow_drop_lg", + checkbox_shadow="none", + # Buttons + shadow_spread="6px", + button_shadow="*shadow_drop_lg", + button_shadow_hover="*shadow_drop_lg", + checkbox_label_shadow="*shadow_drop_lg", + button_shadow_active="*shadow_inset", + button_primary_background_fill="*primary_500", + button_primary_background_fill_hover="*primary_400", + button_primary_background_fill_hover_dark="*primary_500", + button_primary_text_color="white", + button_secondary_background_fill="white", + button_secondary_background_fill_hover="*neutral_100", + button_secondary_background_fill_hover_dark="*primary_500", + button_secondary_text_color="*neutral_800", + button_cancel_background_fill="*button_secondary_background_fill", + button_cancel_background_fill_hover="*button_secondary_background_fill_hover", + button_cancel_background_fill_hover_dark="*button_secondary_background_fill_hover", + button_cancel_text_color="*button_secondary_text_color", + checkbox_label_background_fill_selected="*primary_500", + checkbox_label_background_fill_selected_dark="*primary_600", + checkbox_border_width="1px", + checkbox_border_color="*neutral_100", + checkbox_border_color_dark="*neutral_600", + checkbox_background_color_selected="*primary_600", + checkbox_background_color_selected_dark="*primary_700", + checkbox_border_color_focus="*primary_500", + checkbox_border_color_focus_dark="*primary_600", + checkbox_border_color_selected="*primary_600", + checkbox_border_color_selected_dark="*primary_700", + checkbox_label_text_color_selected="white", + # Borders + block_border_width="0px", + panel_border_width="1px", + ) diff --git a/gradio/themes/upload_theme.py b/gradio/themes/upload_theme.py new file mode 100644 index 0000000000000000000000000000000000000000..ee11e056d488579e818bc4814d6b13892e6b6e0b --- /dev/null +++ b/gradio/themes/upload_theme.py @@ -0,0 +1,59 @@ +from __future__ import annotations + +import argparse + +from gradio.themes import ThemeClass + + +def main(): + parser = argparse.ArgumentParser(description="Upload a demo to a space") + parser.add_argument("theme", type=str, help="Theme json file") + parser.add_argument("repo_name", type=str, help="HF repo name to store the theme") + parser.add_argument( + "--org_name", + type=str, + help="The name of the org to save the space in. If None (the default), the username corresponding to the logged in user, or hƒ_token is used.", + ) + parser.add_argument("--version", type=str, help="Semver version") + parser.add_argument("--hf_token", type=str, help="HF Token") + parser.add_argument( + "--theme-name", + type=str, + help="Name of theme.", + ) + parser.add_argument( + "--description", + type=str, + help="Description of theme", + ) + args = parser.parse_args() + upload_theme( + args.theme, + args.repo_name, + args.org_name, + args.version, + args.hf_token, + args.theme_name, + args.description, + ) + + +def upload_theme( + theme: str, + repo_name: str, + org_name: str | None = None, + version: str | None = None, + hf_token: str | None = None, + theme_name: str | None = None, + description: str | None = None, +): + theme = ThemeClass.load(theme) + + return theme.push_to_hub( + repo_name=repo_name, + version=version, + hf_token=hf_token, + theme_name=theme_name, + description=description, + org_name=org_name, + ) diff --git a/gradio/themes/utils/__init__.py b/gradio/themes/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3e974b1893ff8a363f552207241494a0545cdb16 --- /dev/null +++ b/gradio/themes/utils/__init__.py @@ -0,0 +1,8 @@ +from .colors import * # noqa: F401 +from .fonts import * # noqa: F401 +from .semver_match import ( # noqa: F401 + ThemeAsset, + get_matching_version, + get_theme_assets, +) +from .sizes import * # noqa: F401 diff --git a/gradio/themes/utils/__pycache__/__init__.cpython-38.pyc b/gradio/themes/utils/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e24787ae3e4077d0b256d19035cbaffdad4457eb Binary files /dev/null and b/gradio/themes/utils/__pycache__/__init__.cpython-38.pyc differ diff --git a/gradio/themes/utils/__pycache__/colors.cpython-38.pyc b/gradio/themes/utils/__pycache__/colors.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8cb439f4cb9b743ea01216eb72d72020a8f83363 Binary files /dev/null and b/gradio/themes/utils/__pycache__/colors.cpython-38.pyc differ diff --git a/gradio/themes/utils/__pycache__/fonts.cpython-38.pyc b/gradio/themes/utils/__pycache__/fonts.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68bd6914c7427b5d38df9910a3e051d2bb075d06 Binary files /dev/null and b/gradio/themes/utils/__pycache__/fonts.cpython-38.pyc differ diff --git a/gradio/themes/utils/__pycache__/readme_content.cpython-38.pyc b/gradio/themes/utils/__pycache__/readme_content.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..efb0006e10c15f29f0a8112c47f83bdd3571cf34 Binary files /dev/null and b/gradio/themes/utils/__pycache__/readme_content.cpython-38.pyc differ diff --git a/gradio/themes/utils/__pycache__/semver_match.cpython-38.pyc b/gradio/themes/utils/__pycache__/semver_match.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8977f1871ee4e31573c44d770ce253fe0e6564c Binary files /dev/null and b/gradio/themes/utils/__pycache__/semver_match.cpython-38.pyc differ diff --git a/gradio/themes/utils/__pycache__/sizes.cpython-38.pyc b/gradio/themes/utils/__pycache__/sizes.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dea666768d58d70f64a1c7c668f70faf29279ac4 Binary files /dev/null and b/gradio/themes/utils/__pycache__/sizes.cpython-38.pyc differ diff --git a/gradio/themes/utils/__pycache__/theme_dropdown.cpython-38.pyc b/gradio/themes/utils/__pycache__/theme_dropdown.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e85b6540556ee0156f28147bbe00aaa1c5d337c Binary files /dev/null and b/gradio/themes/utils/__pycache__/theme_dropdown.cpython-38.pyc differ diff --git a/gradio/themes/utils/colors.py b/gradio/themes/utils/colors.py new file mode 100644 index 0000000000000000000000000000000000000000..02afdd5f5c6a83921d9c417f9814d9cb50ebf9cf --- /dev/null +++ b/gradio/themes/utils/colors.py @@ -0,0 +1,344 @@ +from __future__ import annotations + + +class Color: + all = [] + + def __init__( + self, + c50: str, + c100: str, + c200: str, + c300: str, + c400: str, + c500: str, + c600: str, + c700: str, + c800: str, + c900: str, + c950: str, + name: str | None = None, + ): + self.c50 = c50 + self.c100 = c100 + self.c200 = c200 + self.c300 = c300 + self.c400 = c400 + self.c500 = c500 + self.c600 = c600 + self.c700 = c700 + self.c800 = c800 + self.c900 = c900 + self.c950 = c950 + self.name = name + Color.all.append(self) + + +slate = Color( + name="slate", + c50="#f8fafc", + c100="#f1f5f9", + c200="#e2e8f0", + c300="#cbd5e1", + c400="#94a3b8", + c500="#64748b", + c600="#475569", + c700="#334155", + c800="#1e293b", + c900="#0f172a", + c950="#0a0f1e", +) +gray = Color( + name="gray", + c50="#f9fafb", + c100="#f3f4f6", + c200="#e5e7eb", + c300="#d1d5db", + c400="#9ca3af", + c500="#6b7280", + c600="#4b5563", + c700="#374151", + c800="#1f2937", + c900="#111827", + c950="#0b0f19", +) +zinc = Color( + name="zinc", + c50="#fafafa", + c100="#f4f4f5", + c200="#e4e4e7", + c300="#d4d4d8", + c400="#a1a1aa", + c500="#71717a", + c600="#52525b", + c700="#3f3f46", + c800="#27272a", + c900="#18181b", + c950="#0f0f11", +) +neutral = Color( + name="neutral", + c50="#fafafa", + c100="#f5f5f5", + c200="#e5e5e5", + c300="#d4d4d4", + c400="#a3a3a3", + c500="#737373", + c600="#525252", + c700="#404040", + c800="#262626", + c900="#171717", + c950="#0f0f0f", +) +stone = Color( + name="stone", + c50="#fafaf9", + c100="#f5f5f4", + c200="#e7e5e4", + c300="#d6d3d1", + c400="#a8a29e", + c500="#78716c", + c600="#57534e", + c700="#44403c", + c800="#292524", + c900="#1c1917", + c950="#0f0e0d", +) +red = Color( + name="red", + c50="#fef2f2", + c100="#fee2e2", + c200="#fecaca", + c300="#fca5a5", + c400="#f87171", + c500="#ef4444", + c600="#dc2626", + c700="#b91c1c", + c800="#991b1b", + c900="#7f1d1d", + c950="#6c1e1e", +) +orange = Color( + name="orange", + c50="#fff7ed", + c100="#ffedd5", + c200="#fed7aa", + c300="#fdba74", + c400="#fb923c", + c500="#f97316", + c600="#ea580c", + c700="#c2410c", + c800="#9a3412", + c900="#7c2d12", + c950="#6c2e12", +) +amber = Color( + name="amber", + c50="#fffbeb", + c100="#fef3c7", + c200="#fde68a", + c300="#fcd34d", + c400="#fbbf24", + c500="#f59e0b", + c600="#d97706", + c700="#b45309", + c800="#92400e", + c900="#78350f", + c950="#6c370f", +) +yellow = Color( + name="yellow", + c50="#fefce8", + c100="#fef9c3", + c200="#fef08a", + c300="#fde047", + c400="#facc15", + c500="#eab308", + c600="#ca8a04", + c700="#a16207", + c800="#854d0e", + c900="#713f12", + c950="#653b12", +) +lime = Color( + name="lime", + c50="#f7fee7", + c100="#ecfccb", + c200="#d9f99d", + c300="#bef264", + c400="#a3e635", + c500="#84cc16", + c600="#65a30d", + c700="#4d7c0f", + c800="#3f6212", + c900="#365314", + c950="#2f4e14", +) +green = Color( + name="green", + c50="#f0fdf4", + c100="#dcfce7", + c200="#bbf7d0", + c300="#86efac", + c400="#4ade80", + c500="#22c55e", + c600="#16a34a", + c700="#15803d", + c800="#166534", + c900="#14532d", + c950="#134e28", +) +emerald = Color( + name="emerald", + c50="#ecfdf5", + c100="#d1fae5", + c200="#a7f3d0", + c300="#6ee7b7", + c400="#34d399", + c500="#10b981", + c600="#059669", + c700="#047857", + c800="#065f46", + c900="#064e3b", + c950="#054436", +) +teal = Color( + name="teal", + c50="#f0fdfa", + c100="#ccfbf1", + c200="#99f6e4", + c300="#5eead4", + c400="#2dd4bf", + c500="#14b8a6", + c600="#0d9488", + c700="#0f766e", + c800="#115e59", + c900="#134e4a", + c950="#12443e", +) +cyan = Color( + name="cyan", + c50="#ecfeff", + c100="#cffafe", + c200="#a5f3fc", + c300="#67e8f9", + c400="#22d3ee", + c500="#06b6d4", + c600="#0891b2", + c700="#0e7490", + c800="#155e75", + c900="#164e63", + c950="#14455c", +) +sky = Color( + name="sky", + c50="#f0f9ff", + c100="#e0f2fe", + c200="#bae6fd", + c300="#7dd3fc", + c400="#38bdf8", + c500="#0ea5e9", + c600="#0284c7", + c700="#0369a1", + c800="#075985", + c900="#0c4a6e", + c950="#0b4165", +) +blue = Color( + name="blue", + c50="#eff6ff", + c100="#dbeafe", + c200="#bfdbfe", + c300="#93c5fd", + c400="#60a5fa", + c500="#3b82f6", + c600="#2563eb", + c700="#1d4ed8", + c800="#1e40af", + c900="#1e3a8a", + c950="#1d3660", +) +indigo = Color( + name="indigo", + c50="#eef2ff", + c100="#e0e7ff", + c200="#c7d2fe", + c300="#a5b4fc", + c400="#818cf8", + c500="#6366f1", + c600="#4f46e5", + c700="#4338ca", + c800="#3730a3", + c900="#312e81", + c950="#2b2c5e", +) +violet = Color( + name="violet", + c50="#f5f3ff", + c100="#ede9fe", + c200="#ddd6fe", + c300="#c4b5fd", + c400="#a78bfa", + c500="#8b5cf6", + c600="#7c3aed", + c700="#6d28d9", + c800="#5b21b6", + c900="#4c1d95", + c950="#431d7f", +) +purple = Color( + name="purple", + c50="#faf5ff", + c100="#f3e8ff", + c200="#e9d5ff", + c300="#d8b4fe", + c400="#c084fc", + c500="#a855f7", + c600="#9333ea", + c700="#7e22ce", + c800="#6b21a8", + c900="#581c87", + c950="#4c1a73", +) +fuchsia = Color( + name="fuchsia", + c50="#fdf4ff", + c100="#fae8ff", + c200="#f5d0fe", + c300="#f0abfc", + c400="#e879f9", + c500="#d946ef", + c600="#c026d3", + c700="#a21caf", + c800="#86198f", + c900="#701a75", + c950="#5e1a66", +) +pink = Color( + name="pink", + c50="#fdf2f8", + c100="#fce7f3", + c200="#fbcfe8", + c300="#f9a8d4", + c400="#f472b6", + c500="#ec4899", + c600="#db2777", + c700="#be185d", + c800="#9d174d", + c900="#831843", + c950="#6e1a3d", +) +rose = Color( + name="rose", + c50="#fff1f2", + c100="#ffe4e6", + c200="#fecdd3", + c300="#fda4af", + c400="#fb7185", + c500="#f43f5e", + c600="#e11d48", + c700="#be123c", + c800="#9f1239", + c900="#881337", + c950="#771d3a", +) diff --git a/gradio/themes/utils/fonts.py b/gradio/themes/utils/fonts.py new file mode 100644 index 0000000000000000000000000000000000000000..97f30ab1583140e5c0d1f197f5d73322e2b3e224 --- /dev/null +++ b/gradio/themes/utils/fonts.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +import json + + +class FontEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Font): + return { + "__gradio_font__": True, + "name": obj.name, + "class": "google" if isinstance(obj, GoogleFont) else "font", + } + # Let the base class default method raise the TypeError + return json.JSONEncoder.default(self, obj) + + +def as_font(dct): + if "__gradio_font__" in dct: + name = dct["name"] + return GoogleFont(name) if dct["class"] == "google" else Font(name) + return dct + + +class Font: + def __init__(self, name: str): + self.name = name + + def __str__(self) -> str: + return ( + self.name + if self.name in ["sans-serif", "serif", "monospace", "cursive", "fantasy"] + else f"'{self.name}'" + ) + + def stylesheet(self) -> str: + return None + + def __eq__(self, other: Font) -> bool: + return self.name == other.name and self.stylesheet() == other.stylesheet() + + +class GoogleFont(Font): + def stylesheet(self) -> str: + return f'https://fonts.googleapis.com/css2?family={self.name.replace(" ", "+")}:wght@400;600&display=swap' diff --git a/gradio/themes/utils/readme_content.py b/gradio/themes/utils/readme_content.py new file mode 100644 index 0000000000000000000000000000000000000000..93e72696dd8a42dbefb9b778f4e1a274d87919e8 --- /dev/null +++ b/gradio/themes/utils/readme_content.py @@ -0,0 +1,18 @@ +README_CONTENT = """ +--- +tags: [gradio-theme] +title: {theme_name} +colorFrom: orange +colorTo: purple +sdk: gradio +sdk_version: {gradio_version} +app_file: app.py +pinned: false +license: apache-2.0 +--- +# {theme_name} +## Description +{description} +## Contributions +Thanks to [@{author}](https://huggingface.co/{author}) for adding this gradio theme! +""" diff --git a/gradio/themes/utils/semver_match.py b/gradio/themes/utils/semver_match.py new file mode 100644 index 0000000000000000000000000000000000000000..6174360688b70b1cd7485311ac8021aab544e9b1 --- /dev/null +++ b/gradio/themes/utils/semver_match.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import List + +import huggingface_hub +import semantic_version +import semantic_version as semver + + +@dataclass +class ThemeAsset: + filename: str + version: semver.Version = field(init=False) + + def __post_init__(self): + self.version = semver.Version(self.filename.split("@")[1].replace(".json", "")) + + +def get_theme_assets(space_info: huggingface_hub.hf_api.SpaceInfo) -> List[ThemeAsset]: + if "gradio-theme" not in getattr(space_info, "tags", []): + raise ValueError(f"{space_info.id} is not a valid gradio-theme space!") + + return [ + ThemeAsset(filename.rfilename) + for filename in space_info.siblings + if filename.rfilename.startswith("themes/") + ] + + +def get_matching_version( + assets: List[ThemeAsset], expression: str | None +) -> ThemeAsset | None: + + expression = expression or "*" + + # Return most recent version that matches + matching_version = semantic_version.SimpleSpec(expression).select( + [a.version for a in assets] + ) + + return next((a for a in assets if a.version == matching_version), None) diff --git a/gradio/themes/utils/sizes.py b/gradio/themes/utils/sizes.py new file mode 100644 index 0000000000000000000000000000000000000000..7b4aeb808ed53f6d8bd8be045d042784276c33c8 --- /dev/null +++ b/gradio/themes/utils/sizes.py @@ -0,0 +1,126 @@ +class Size: + all = [] + + def __init__( + self, xxs: str, xs: str, sm: str, md: str, lg: str, xl: str, xxl: str, name=None + ): + self.xxs = xxs + self.xs = xs + self.sm = sm + self.md = md + self.lg = lg + self.xl = xl + self.xxl = xxl + self.name = name + Size.all.append(self) + + +radius_none = Size( + name="radius_none", + xxs="0px", + xs="0px", + sm="0px", + md="0px", + lg="0px", + xl="0px", + xxl="0px", +) + +radius_sm = Size( + name="radius_sm", + xxs="1px", + xs="1px", + sm="2px", + md="4px", + lg="6px", + xl="8px", + xxl="12px", +) + +radius_md = Size( + name="radius_md", + xxs="1px", + xs="2px", + sm="4px", + md="6px", + lg="8px", + xl="12px", + xxl="22px", +) + +radius_lg = Size( + name="radius_lg", + xxs="2px", + xs="4px", + sm="6px", + md="8px", + lg="12px", + xl="16px", + xxl="24px", +) + +spacing_sm = Size( + name="spacing_sm", + xxs="1px", + xs="1px", + sm="2px", + md="4px", + lg="6px", + xl="9px", + xxl="12px", +) + +spacing_md = Size( + name="spacing_md", + xxs="1px", + xs="2px", + sm="4px", + md="6px", + lg="8px", + xl="10px", + xxl="16px", +) + +spacing_lg = Size( + name="spacing_lg", + xxs="2px", + xs="4px", + sm="6px", + md="8px", + lg="10px", + xl="14px", + xxl="28px", +) + +text_sm = Size( + name="text_sm", + xxs="8px", + xs="9px", + sm="11px", + md="13px", + lg="16px", + xl="20px", + xxl="24px", +) + +text_md = Size( + name="text_md", + xxs="9px", + xs="10px", + sm="12px", + md="14px", + lg="16px", + xl="22px", + xxl="26px", +) + +text_lg = Size( + name="text_lg", + xxs="10px", + xs="12px", + sm="14px", + md="16px", + lg="20px", + xl="24px", + xxl="28px", +) diff --git a/gradio/themes/utils/theme_dropdown.py b/gradio/themes/utils/theme_dropdown.py new file mode 100644 index 0000000000000000000000000000000000000000..6235388fd00549553df44028f3ccf03e946994ea --- /dev/null +++ b/gradio/themes/utils/theme_dropdown.py @@ -0,0 +1,57 @@ +import os +import pathlib + +from gradio.themes.utils import ThemeAsset + + +def create_theme_dropdown(): + import gradio as gr + + asset_path = pathlib.Path(__file__).parent / "themes" + themes = [] + for theme_asset in os.listdir(str(asset_path)): + themes.append( + (ThemeAsset(theme_asset), gr.Theme.load(str(asset_path / theme_asset))) + ) + + def make_else_if(theme_asset): + return f""" + else if (theme == '{str(theme_asset[0].version)}') {{ + var theme_css = `{theme_asset[1]._get_theme_css()}` + }}""" + + head, tail = themes[0], themes[1:] + if_statement = f""" + if (theme == "{str(head[0].version)}") {{ + var theme_css = `{head[1]._get_theme_css()}` + }} {" ".join(make_else_if(t) for t in tail)} + """ + + latest_to_oldest = sorted([t[0] for t in themes], key=lambda asset: asset.version)[ + ::-1 + ] + latest_to_oldest = [str(t.version) for t in latest_to_oldest] + + component = gr.Dropdown( + choices=latest_to_oldest, + value=latest_to_oldest[0], + render=False, + label="Select Version", + ).style(container=False) + + return ( + component, + f""" + (theme) => {{ + if (!document.querySelector('.theme-css')) {{ + var theme_elem = document.createElement('style'); + theme_elem.classList.add('theme-css'); + document.head.appendChild(theme_elem); + }} else {{ + var theme_elem = document.querySelector('.theme-css'); + }} + {if_statement} + theme_elem.innerHTML = theme_css; + }} + """, + ) diff --git a/gradio/tunneling.py b/gradio/tunneling.py new file mode 100644 index 0000000000000000000000000000000000000000..066efe0bf308700a001ecad83b39ae1c115ef03d --- /dev/null +++ b/gradio/tunneling.py @@ -0,0 +1,105 @@ +import atexit +import os +import platform +import re +import subprocess +from pathlib import Path +from typing import List + +VERSION = "0.2" +CURRENT_TUNNELS: List["Tunnel"] = [] + + +class Tunnel: + def __init__(self, remote_host, remote_port, local_host, local_port, share_token): + self.proc = None + self.url = None + self.remote_host = remote_host + self.remote_port = remote_port + self.local_host = local_host + self.local_port = local_port + self.share_token = share_token + + @staticmethod + def download_binary(): + machine = platform.machine() + if machine == "x86_64": + machine = "amd64" + + # Check if the file exist + binary_name = f"frpc_{platform.system().lower()}_{machine.lower()}" + binary_path = str(Path(__file__).parent / binary_name) + f"_v{VERSION}" + + extension = ".exe" if os.name == "nt" else "" + + if not Path(binary_path).exists(): + import stat + + import requests + + binary_url = f"https://cdn-media.huggingface.co/frpc-gradio-{VERSION}/{binary_name}{extension}" + resp = requests.get(binary_url) + + if resp.status_code == 403: + raise OSError( + f"Cannot set up a share link as this platform is incompatible. Please " + f"create a GitHub issue with information about your platform: {platform.uname()}" + ) + + resp.raise_for_status() + + # Save file data to local copy + with open(binary_path, "wb") as file: + file.write(resp.content) + st = os.stat(binary_path) + os.chmod(binary_path, st.st_mode | stat.S_IEXEC) + + return binary_path + + def start_tunnel(self) -> str: + binary_path = self.download_binary() + self.url = self._start_tunnel(binary_path) + return self.url + + def kill(self): + if self.proc is not None: + print(f"Killing tunnel {self.local_host}:{self.local_port} <> {self.url}") + self.proc.terminate() + self.proc = None + + def _start_tunnel(self, binary: str) -> str: + CURRENT_TUNNELS.append(self) + command = [ + binary, + "http", + "-n", + self.share_token, + "-l", + str(self.local_port), + "-i", + self.local_host, + "--uc", + "--sd", + "random", + "--ue", + "--server_addr", + f"{self.remote_host}:{self.remote_port}", + "--disable_log_color", + ] + self.proc = subprocess.Popen( + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) + atexit.register(self.kill) + url = "" + while url == "": + if self.proc.stdout is None: + continue + line = self.proc.stdout.readline() + line = line.decode("utf-8") + if "start proxy success" in line: + result = re.search("start proxy success: (.+)\n", line) + if result is None: + raise ValueError("Could not create share URL") + else: + url = result.group(1) + return url diff --git a/gradio/utils.py b/gradio/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..56b6b7d86333920ea8bcc6570c46873ad7a744c4 --- /dev/null +++ b/gradio/utils.py @@ -0,0 +1,1035 @@ +""" Handy utility functions. """ + +from __future__ import annotations + +import asyncio +import copy +import inspect +import json +import json.decoder +import os +import pkgutil +import random +import re +import sys +import threading +import time +import typing +import warnings +from contextlib import contextmanager +from distutils.version import StrictVersion +from enum import Enum +from io import BytesIO +from numbers import Number +from pathlib import Path +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Generator, + List, + NewType, + Tuple, + Type, + TypeVar, + Union, +) + +import aiohttp +import fsspec.asyn +import httpx +import matplotlib.pyplot as plt +import requests +from huggingface_hub.utils import send_telemetry +from markdown_it import MarkdownIt +from mdit_py_plugins.dollarmath.index import dollarmath_plugin +from mdit_py_plugins.footnote.index import footnote_plugin +from pydantic import BaseModel, Json, parse_obj_as + +import gradio +from gradio.context import Context +from gradio.strings import en + +if TYPE_CHECKING: # Only import for type checking (is False at runtime). + from gradio.blocks import BlockContext + from gradio.components import Component + +analytics_url = "https://api.gradio.app/" +PKG_VERSION_URL = "https://api.gradio.app/pkg-version" +JSON_PATH = os.path.join(os.path.dirname(gradio.__file__), "launches.json") +GRADIO_VERSION = ( + (pkgutil.get_data(__name__, "version.txt") or b"").decode("ascii").strip() +) + +T = TypeVar("T") + + +def version_check(): + try: + version_data = pkgutil.get_data(__name__, "version.txt") + if not version_data: + raise FileNotFoundError + current_pkg_version = version_data.decode("ascii").strip() + latest_pkg_version = requests.get(url=PKG_VERSION_URL, timeout=3).json()[ + "version" + ] + if StrictVersion(latest_pkg_version) > StrictVersion(current_pkg_version): + print( + "IMPORTANT: You are using gradio version {}, " + "however version {} " + "is available, please upgrade.".format( + current_pkg_version, latest_pkg_version + ) + ) + print("--------") + except json.decoder.JSONDecodeError: + warnings.warn("unable to parse version details from package URL.") + except KeyError: + warnings.warn("package URL does not contain version info.") + except: + pass + + +def get_local_ip_address() -> str: + """Gets the public IP address or returns the string "No internet connection" if unable to obtain it. Does not make a new request if the IP address has already been obtained.""" + if Context.ip_address is None: + try: + ip_address = requests.get( + "https://checkip.amazonaws.com/", timeout=3 + ).text.strip() + except (requests.ConnectionError, requests.exceptions.ReadTimeout): + ip_address = "No internet connection" + Context.ip_address = ip_address + else: + ip_address = Context.ip_address + return ip_address + + +def initiated_analytics(data: Dict[str, Any]) -> None: + data.update({"ip_address": get_local_ip_address()}) + + def initiated_analytics_thread(data: Dict[str, Any]) -> None: + try: + requests.post( + analytics_url + "gradio-initiated-analytics/", data=data, timeout=3 + ) + except (requests.ConnectionError, requests.exceptions.ReadTimeout): + pass # do not push analytics if no network + + def initiated_telemetry_thread(data: Dict[str, Any]) -> None: + try: + send_telemetry( + topic="gradio/initiated", + library_name="gradio", + library_version=GRADIO_VERSION, + user_agent=data, + ) + except Exception: + pass + + threading.Thread(target=initiated_analytics_thread, args=(data,)).start() + threading.Thread(target=initiated_telemetry_thread, args=(data,)).start() + + +def launch_analytics(data: Dict[str, Any]) -> None: + data.update({"ip_address": get_local_ip_address()}) + + def launch_analytics_thread(data: Dict[str, Any]) -> None: + try: + requests.post( + analytics_url + "gradio-launched-analytics/", data=data, timeout=3 + ) + except (requests.ConnectionError, requests.exceptions.ReadTimeout): + pass # do not push analytics if no network + + threading.Thread(target=launch_analytics_thread, args=(data,)).start() + + +def launched_telemetry(blocks: gradio.Blocks, data: Dict[str, Any]) -> None: + blocks_telemetry, inputs_telemetry, outputs_telemetry, targets_telemetry = ( + [], + [], + [], + [], + ) + + from gradio.blocks import BlockContext + + for x in list(blocks.blocks.values()): + blocks_telemetry.append(x.get_block_name()) if isinstance( + x, BlockContext + ) else blocks_telemetry.append(str(x)) + + for x in blocks.dependencies: + targets_telemetry = targets_telemetry + [ + str(blocks.blocks[y]) for y in x["targets"] + ] + inputs_telemetry = inputs_telemetry + [ + str(blocks.blocks[y]) for y in x["inputs"] + ] + outputs_telemetry = outputs_telemetry + [ + str(blocks.blocks[y]) for y in x["outputs"] + ] + additional_data = { + "is_kaggle": blocks.is_kaggle, + "is_sagemaker": blocks.is_sagemaker, + "using_auth": blocks.auth is not None, + "dev_mode": blocks.dev_mode, + "show_api": blocks.show_api, + "show_error": blocks.show_error, + "theme": blocks.theme, + "title": blocks.title, + "inputs": blocks.input_components + if blocks.mode == "interface" + else inputs_telemetry, + "outputs": blocks.output_components + if blocks.mode == "interface" + else outputs_telemetry, + "targets": targets_telemetry, + "blocks": blocks_telemetry, + "events": [str(x["trigger"]) for x in blocks.dependencies], + } + + data.update(additional_data) + + def launched_telemtry_thread(data: Dict[str, Any]) -> None: + try: + send_telemetry( + topic="gradio/launched", + library_name="gradio", + library_version=GRADIO_VERSION, + user_agent=data, + ) + except Exception as e: + print("Error while sending telemetry: {}".format(e)) + + threading.Thread(target=launched_telemtry_thread, args=(data,)).start() + + +def integration_analytics(data: Dict[str, Any]) -> None: + data.update({"ip_address": get_local_ip_address()}) + + def integration_analytics_thread(data: Dict[str, Any]) -> None: + try: + requests.post( + analytics_url + "gradio-integration-analytics/", data=data, timeout=3 + ) + except (requests.ConnectionError, requests.exceptions.ReadTimeout): + pass # do not push analytics if no network + + def integration_telemetry_thread(data: Dict[str, Any]) -> None: + try: + send_telemetry( + topic="gradio/integration", + library_name="gradio", + library_version=GRADIO_VERSION, + user_agent=data, + ) + except Exception as e: + print("Error while sending telemetry: {}".format(e)) + + threading.Thread(target=integration_analytics_thread, args=(data,)).start() + threading.Thread(target=integration_telemetry_thread, args=(data,)).start() + + +def error_analytics(message: str) -> None: + """ + Send error analytics if there is network + :param ip_address: IP address where error occurred + :param message: Details about error + """ + data = {"ip_address": get_local_ip_address(), "error": message} + + def error_analytics_thread(data: Dict[str, Any]) -> None: + try: + requests.post( + analytics_url + "gradio-error-analytics/", data=data, timeout=3 + ) + except (requests.ConnectionError, requests.exceptions.ReadTimeout): + pass # do not push analytics if no network + + def error_telemetry_thread(data: Dict[str, Any]) -> None: + try: + send_telemetry( + topic="gradio/error", + library_name="gradio", + library_version=GRADIO_VERSION, + user_agent=message, + ) + except Exception as e: + print("Error while sending telemetry: {}".format(e)) + + threading.Thread(target=error_analytics_thread, args=(data,)).start() + threading.Thread(target=error_telemetry_thread, args=(data,)).start() + + +async def log_feature_analytics(feature: str) -> None: + data = {"ip_address": get_local_ip_address(), "feature": feature} + async with aiohttp.ClientSession() as session: + try: + async with session.post( + analytics_url + "gradio-feature-analytics/", data=data + ): + pass + except (aiohttp.ClientError): + pass # do not push analytics if no network + + +def colab_check() -> bool: + """ + Check if interface is launching from Google Colab + :return is_colab (bool): True or False + """ + is_colab = False + try: # Check if running interactively using ipython. + from IPython import get_ipython + + from_ipynb = get_ipython() + if "google.colab" in str(from_ipynb): + is_colab = True + except (ImportError, NameError): + pass + return is_colab + + +def kaggle_check() -> bool: + return bool( + os.environ.get("KAGGLE_KERNEL_RUN_TYPE") or os.environ.get("GFOOTBALL_DATA_DIR") + ) + + +def sagemaker_check() -> bool: + try: + import boto3 # type: ignore + + client = boto3.client("sts") + response = client.get_caller_identity() + return "sagemaker" in response["Arn"].lower() + except: + return False + + +def ipython_check() -> bool: + """ + Check if interface is launching from iPython (not colab) + :return is_ipython (bool): True or False + """ + is_ipython = False + try: # Check if running interactively using ipython. + from IPython import get_ipython + + if get_ipython() is not None: + is_ipython = True + except (ImportError, NameError): + pass + return is_ipython + + +def readme_to_html(article: str) -> str: + try: + response = requests.get(article, timeout=3) + if response.status_code == requests.codes.ok: # pylint: disable=no-member + article = response.text + except requests.exceptions.RequestException: + pass + return article + + +def show_tip(interface: gradio.Blocks) -> None: + if interface.show_tips and random.random() < 1.5: + tip: str = random.choice(en["TIPS"]) + print(f"Tip: {tip}") + + +def launch_counter() -> None: + try: + if not os.path.exists(JSON_PATH): + launches = {"launches": 1} + with open(JSON_PATH, "w+") as j: + json.dump(launches, j) + else: + with open(JSON_PATH) as j: + launches = json.load(j) + launches["launches"] += 1 + if launches["launches"] in [25, 50, 150, 500, 1000]: + print(en["BETA_INVITE"]) + with open(JSON_PATH, "w") as j: + j.write(json.dumps(launches)) + except: + pass + + +def get_default_args(func: Callable) -> List[Any]: + signature = inspect.signature(func) + return [ + v.default if v.default is not inspect.Parameter.empty else None + for v in signature.parameters.values() + ] + + +def assert_configs_are_equivalent_besides_ids( + config1: Dict, config2: Dict, root_keys: Tuple = ("mode",) +): + """Allows you to test if two different Blocks configs produce the same demo. + + Parameters: + config1 (dict): nested dict with config from the first Blocks instance + config2 (dict): nested dict with config from the second Blocks instance + root_keys (Tuple): an interable consisting of which keys to test for equivalence at + the root level of the config. By default, only "mode" is tested, + so keys like "version" are ignored. + """ + config1 = copy.deepcopy(config1) + config2 = copy.deepcopy(config2) + + for key in root_keys: + assert config1[key] == config2[key], f"Configs have different: {key}" + + assert len(config1["components"]) == len( + config2["components"] + ), "# of components are different" + + def assert_same_components(config1_id, config2_id): + c1 = list(filter(lambda c: c["id"] == config1_id, config1["components"]))[0] + c2 = list(filter(lambda c: c["id"] == config2_id, config2["components"]))[0] + c1 = copy.deepcopy(c1) + c1.pop("id") + c2 = copy.deepcopy(c2) + c2.pop("id") + assert c1 == c2, f"{c1} does not match {c2}" + + def same_children_recursive(children1, chidren2): + for child1, child2 in zip(children1, chidren2): + assert_same_components(child1["id"], child2["id"]) + if "children" in child1 or "children" in child2: + same_children_recursive(child1["children"], child2["children"]) + + children1 = config1["layout"]["children"] + children2 = config2["layout"]["children"] + same_children_recursive(children1, children2) + + for d1, d2 in zip(config1["dependencies"], config2["dependencies"]): + for t1, t2 in zip(d1.pop("targets"), d2.pop("targets")): + assert_same_components(t1, t2) + for i1, i2 in zip(d1.pop("inputs"), d2.pop("inputs")): + assert_same_components(i1, i2) + for o1, o2 in zip(d1.pop("outputs"), d2.pop("outputs")): + assert_same_components(o1, o2) + + assert d1 == d2, f"{d1} does not match {d2}" + + return True + + +def format_ner_list(input_string: str, ner_groups: List[Dict[str, str | int]]): + if len(ner_groups) == 0: + return [(input_string, None)] + + output = [] + end = 0 + prev_end = 0 + + for group in ner_groups: + entity, start, end = group["entity_group"], group["start"], group["end"] + output.append((input_string[prev_end:start], None)) + output.append((input_string[start:end], entity)) + prev_end = end + + output.append((input_string[end:], None)) + return output + + +def delete_none(_dict: Dict, skip_value: bool = False) -> Dict: + """ + Delete keys whose values are None from a dictionary + """ + for key, value in list(_dict.items()): + if skip_value and key == "value": + continue + elif value is None: + del _dict[key] + return _dict + + +def resolve_singleton(_list: List[Any] | Any) -> Any: + if len(_list) == 1: + return _list[0] + else: + return _list + + +def component_or_layout_class(cls_name: str) -> Type[Component] | Type[BlockContext]: + """ + Returns the component, template, or layout class with the given class name, or + raises a ValueError if not found. + + Parameters: + cls_name (str): lower-case string class name of a component + Returns: + cls: the component class + """ + import gradio.blocks + import gradio.components + import gradio.layouts + import gradio.templates + + components = [ + (name, cls) + for name, cls in gradio.components.__dict__.items() + if isinstance(cls, type) + ] + templates = [ + (name, cls) + for name, cls in gradio.templates.__dict__.items() + if isinstance(cls, type) + ] + layouts = [ + (name, cls) + for name, cls in gradio.layouts.__dict__.items() + if isinstance(cls, type) + ] + for name, cls in components + templates + layouts: + if name.lower() == cls_name.replace("_", "") and ( + issubclass(cls, gradio.components.Component) + or issubclass(cls, gradio.blocks.BlockContext) + ): + return cls + raise ValueError(f"No such component or layout: {cls_name}") + + +def synchronize_async(func: Callable, *args, **kwargs) -> Any: + """ + Runs async functions in sync scopes. + + Can be used in any scope. See run_coro_in_background for more details. + + Example: + if inspect.iscoroutinefunction(block_fn.fn): + predictions = utils.synchronize_async(block_fn.fn, *processed_input) + + Args: + func: + *args: + **kwargs: + """ + return fsspec.asyn.sync(fsspec.asyn.get_loop(), func, *args, **kwargs) + + +def run_coro_in_background(func: Callable, *args, **kwargs): + """ + Runs coroutines in background. + + Warning, be careful to not use this function in other than FastAPI scope, because the event_loop has not started yet. + You can use it in any scope reached by FastAPI app. + + correct scope examples: endpoints in routes, Blocks.process_api + incorrect scope examples: Blocks.launch + + Use startup_events in routes.py if you need to run a coro in background in Blocks.launch(). + + + Example: + utils.run_coro_in_background(fn, *args, **kwargs) + + Args: + func: + *args: + **kwargs: + + Returns: + + """ + event_loop = asyncio.get_event_loop() + return event_loop.create_task(func(*args, **kwargs)) + + +def async_iteration(iterator): + try: + return next(iterator) + except StopIteration: + # raise a ValueError here because co-routines can't raise StopIteration themselves + raise StopAsyncIteration() + + +class AsyncRequest: + """ + The AsyncRequest class is a low-level API that allow you to create asynchronous HTTP requests without a context manager. + Compared to making calls by using httpx directly, AsyncRequest offers several advantages: + (1) Includes response validation functionality both using validation models and functions. + (2) Exceptions are handled silently during the request call, which provides the ability to inspect each one + request call individually in the case where there are multiple asynchronous request calls and some of them fail. + (3) Provides HTTP request types with AsyncRequest.Method Enum class for ease of usage + + AsyncRequest also offers some util functions such as has_exception, is_valid and status to inspect get detailed + information about executed request call. + + The basic usage of AsyncRequest is as follows: create a AsyncRequest object with inputs(method, url etc.). Then use it + with the "await" statement, and then you can use util functions to do some post request checks depending on your use-case. + Finally, call the get_validated_data function to get the response data. + + You can see example usages in test_utils.py. + """ + + ResponseJson = NewType("ResponseJson", Json) + client = httpx.AsyncClient() + + class Method(str, Enum): + """ + Method is an enumeration class that contains possible types of HTTP request methods. + """ + + ANY = "*" + CONNECT = "CONNECT" + HEAD = "HEAD" + GET = "GET" + DELETE = "DELETE" + OPTIONS = "OPTIONS" + PATCH = "PATCH" + POST = "POST" + PUT = "PUT" + TRACE = "TRACE" + + def __init__( + self, + method: Method, + url: str, + *, + validation_model: Type[BaseModel] | None = None, + validation_function: Union[Callable, None] = None, + exception_type: Type[Exception] = Exception, + raise_for_status: bool = False, + client: httpx.AsyncClient | None = None, + **kwargs, + ): + """ + Initialize the Request instance. + Args: + method(Request.Method) : method of the request + url(str): url of the request + * + validation_model(Type[BaseModel]): a pydantic validation class type to use in validation of the response + validation_function(Callable): a callable instance to use in validation of the response + exception_class(Type[Exception]): a exception type to throw with its type + raise_for_status(bool): a flag that determines to raise httpx.Request.raise_for_status() exceptions. + """ + self._exception: Union[Exception, None] = None + self._status = None + self._raise_for_status = raise_for_status + self._validation_model = validation_model + self._validation_function = validation_function + self._exception_type = exception_type + self._validated_data = None + # Create request + self._request = self._create_request(method, url, **kwargs) + self.client_ = client or self.client + + def __await__(self) -> Generator[None, Any, "AsyncRequest"]: + """ + Wrap Request's __await__ magic function to create request calls which are executed in one line. + """ + return self.__run().__await__() + + async def __run(self) -> AsyncRequest: + """ + Manage the request call lifecycle. + Execute the request by sending it through the client, then check its status. + Then parse the request into Json format. And then validate it using the provided validation methods. + If a problem occurs in this sequential process, + an exception will be raised within the corresponding method, and allowed to be examined. + Manage the request call lifecycle. + + Returns: + Request + """ + try: + # Send the request and get the response. + self._response: httpx.Response = await self.client_.send(self._request) + # Raise for _status + self._status = self._response.status_code + if self._raise_for_status: + self._response.raise_for_status() + # Parse client response data to JSON + self._json_response_data = self._response.json() + # Validate response data + self._validated_data = self._validate_response_data( + self._json_response_data + ) + except Exception as exception: + # If there is an exception, store it to do further inspections. + self._exception = self._exception_type(exception) + return self + + @staticmethod + def _create_request(method: Method, url: str, **kwargs) -> httpx.Request: + """ + Create a request. This is a httpx request wrapper function. + Args: + method(Request.Method): request method type + url(str): target url of the request + **kwargs + Returns: + Request + """ + request = httpx.Request(method, url, **kwargs) + return request + + def _validate_response_data( + self, response: ResponseJson + ) -> Union[BaseModel, ResponseJson | None]: + """ + Validate response using given validation methods. If there is a validation method and response is not valid, + validation functions will raise an exception for them. + Args: + response(ResponseJson): response object + Returns: + ResponseJson: Validated Json object. + """ + + # We use raw response as a default value if there is no validation method or response is not valid. + validated_response = response + + try: + # If a validation model is provided, validate response using the validation model. + if self._validation_model: + validated_response = self._validate_response_by_model(response) + # Then, If a validation function is provided, validate response using the validation function. + if self._validation_function: + validated_response = self._validate_response_by_validation_function( + response + ) + except Exception as exception: + # If one of the validation methods does not confirm, raised exception will be silently handled. + # We assign this exception to classes instance to do further inspections via is_valid function. + self._exception = exception + + return validated_response + + def _validate_response_by_model(self, response: ResponseJson) -> BaseModel: + """ + Validate response json using the validation model. + Args: + response(ResponseJson): response object + Returns: + ResponseJson: Validated Json object. + """ + validated_data = BaseModel() + if self._validation_model: + validated_data = parse_obj_as(self._validation_model, response) + return validated_data + + def _validate_response_by_validation_function( + self, response: ResponseJson + ) -> ResponseJson | None: + """ + Validate response json using the validation function. + Args: + response(ResponseJson): response object + Returns: + ResponseJson: Validated Json object. + """ + validated_data = None + + if self._validation_function: + validated_data = self._validation_function(response) + + return validated_data + + def is_valid(self, raise_exceptions: bool = False) -> bool: + """ + Check response object's validity+. Raise exceptions if raise_exceptions flag is True. + Args: + raise_exceptions(bool) : a flag to raise exceptions in this check + Returns: + bool: validity of the data + """ + if self.has_exception and self._exception: + if raise_exceptions: + raise self._exception + return False + else: + # If there is no exception, that means there is no validation error. + return True + + def get_validated_data(self): + return self._validated_data + + @property + def json(self): + return self._json_response_data + + @property + def exception(self): + return self._exception + + @property + def has_exception(self): + return self.exception is not None + + @property + def raise_exceptions(self): + if self.has_exception and self._exception: + raise self._exception + + @property + def status(self): + return self._status + + +@contextmanager +def set_directory(path: Path | str): + """Context manager that sets the working directory to the given path.""" + origin = Path().absolute() + try: + os.chdir(path) + yield + finally: + os.chdir(origin) + + +def strip_invalid_filename_characters(filename: str, max_bytes: int = 200) -> str: + """Strips invalid characters from a filename and ensures that the file_length is less than `max_bytes` bytes.""" + filename = "".join([char for char in filename if char.isalnum() or char in "._- "]) + filename_len = len(filename.encode()) + if filename_len > max_bytes: + while filename_len > max_bytes: + if len(filename) == 0: + break + filename = filename[:-1] + filename_len = len(filename.encode()) + return filename + + +def sanitize_value_for_csv(value: str | Number) -> str | Number: + """ + Sanitizes a value that is being written to a CSV file to prevent CSV injection attacks. + Reference: https://owasp.org/www-community/attacks/CSV_Injection + """ + if isinstance(value, Number): + return value + unsafe_prefixes = ["=", "+", "-", "@", "\t", "\n"] + unsafe_sequences = [",=", ",+", ",-", ",@", ",\t", ",\n"] + if any(value.startswith(prefix) for prefix in unsafe_prefixes) or any( + sequence in value for sequence in unsafe_sequences + ): + value = "'" + value + return value + + +def sanitize_list_for_csv(values: List[Any]) -> List[Any]: + """ + Sanitizes a list of values (or a list of list of values) that is being written to a + CSV file to prevent CSV injection attacks. + """ + sanitized_values = [] + for value in values: + if isinstance(value, list): + sanitized_value = [sanitize_value_for_csv(v) for v in value] + sanitized_values.append(sanitized_value) + else: + sanitized_value = sanitize_value_for_csv(value) + sanitized_values.append(sanitized_value) + return sanitized_values + + +def append_unique_suffix(name: str, list_of_names: List[str]): + """Appends a numerical suffix to `name` so that it does not appear in `list_of_names`.""" + set_of_names: set[str] = set(list_of_names) # for O(1) lookup + if name not in set_of_names: + return name + else: + suffix_counter = 1 + new_name = name + f"_{suffix_counter}" + while new_name in set_of_names: + suffix_counter += 1 + new_name = name + f"_{suffix_counter}" + return new_name + + +def validate_url(possible_url: str) -> bool: + headers = {"User-Agent": "gradio (https://gradio.app/; team@gradio.app)"} + try: + head_request = requests.head(possible_url, headers=headers) + if head_request.status_code == 405: + return requests.get(possible_url, headers=headers).ok + return head_request.ok + except Exception: + return False + + +def is_update(val): + return isinstance(val, dict) and "update" in val.get("__type__", "") + + +def get_continuous_fn(fn: Callable, every: float) -> Callable: + def continuous_fn(*args): + while True: + output = fn(*args) + yield output + time.sleep(every) + + return continuous_fn + + +async def cancel_tasks(task_ids: set[str]): + if sys.version_info < (3, 8): + return None + + matching_tasks = [ + task for task in asyncio.all_tasks() if task.get_name() in task_ids + ] + for task in matching_tasks: + task.cancel() + await asyncio.gather(*matching_tasks, return_exceptions=True) + + +def set_task_name(task, session_hash: str, fn_index: int, batch: bool): + if sys.version_info >= (3, 8) and not ( + batch + ): # You shouldn't be able to cancel a task if it's part of a batch + task.set_name(f"{session_hash}_{fn_index}") + + +def get_cancel_function( + dependencies: List[Dict[str, Any]] +) -> Tuple[Callable, List[int]]: + fn_to_comp = {} + for dep in dependencies: + if Context.root_block: + fn_index = next( + i for i, d in enumerate(Context.root_block.dependencies) if d == dep + ) + fn_to_comp[fn_index] = [ + Context.root_block.blocks[o] for o in dep["outputs"] + ] + + async def cancel(session_hash: str) -> None: + task_ids = set([f"{session_hash}_{fn}" for fn in fn_to_comp]) + await cancel_tasks(task_ids) + + return ( + cancel, + list(fn_to_comp.keys()), + ) + + +def check_function_inputs_match(fn: Callable, inputs: List, inputs_as_dict: bool): + """ + Checks if the input component set matches the function + Returns: None if valid, a string error message if mismatch + """ + + def is_special_typed_parameter(name): + from gradio.helpers import EventData + from gradio.routes import Request + + """Checks if parameter has a type hint designating it as a gr.Request or gr.EventData""" + is_request = parameter_types.get(name, "") == Request + # use int in the fall-back as that will always be false + is_event_data = issubclass(parameter_types.get(name, int), EventData) + return is_request or is_event_data + + signature = inspect.signature(fn) + parameter_types = typing.get_type_hints(fn) if inspect.isfunction(fn) else {} + min_args = 0 + max_args = 0 + infinity = -1 + for name, param in signature.parameters.items(): + has_default = param.default != param.empty + if param.kind in [param.POSITIONAL_ONLY, param.POSITIONAL_OR_KEYWORD]: + if not is_special_typed_parameter(name): + if not has_default: + min_args += 1 + max_args += 1 + elif param.kind == param.VAR_POSITIONAL: + max_args = infinity + elif param.kind == param.KEYWORD_ONLY: + if not has_default: + return f"Keyword-only args must have default values for function {fn}" + arg_count = 1 if inputs_as_dict else len(inputs) + if min_args == max_args and max_args != arg_count: + warnings.warn( + f"Expected {max_args} arguments for function {fn}, received {arg_count}." + ) + if arg_count < min_args: + warnings.warn( + f"Expected at least {min_args} arguments for function {fn}, received {arg_count}." + ) + if max_args != infinity and arg_count > max_args: + warnings.warn( + f"Expected maximum {max_args} arguments for function {fn}, received {arg_count}." + ) + + +class TupleNoPrint(tuple): + # To remove printing function return in notebook + def __repr__(self): + return "" + + def __str__(self): + return "" + + +def tex2svg(formula, *args): + FONTSIZE = 20 + DPI = 300 + plt.rc("mathtext", fontset="cm") + fig = plt.figure(figsize=(0.01, 0.01)) + fig.text(0, 0, r"${}$".format(formula), fontsize=FONTSIZE) + output = BytesIO() + fig.savefig( + output, + dpi=DPI, + transparent=True, + format="svg", + bbox_inches="tight", + pad_inches=0.0, + ) + plt.close(fig) + output.seek(0) + xml_code = output.read().decode("utf-8") + svg_start = xml_code.index(".*<\/metadata>", "", svg_code, flags=re.DOTALL) + svg_code = re.sub(r' width="[^"]+"', "", svg_code) + height_match = re.search(r'height="([\d.]+)pt"', svg_code) + if height_match: + height = float(height_match.group(1)) + new_height = height / FONTSIZE # conversion from pt to em + svg_code = re.sub(r'height="[\d.]+pt"', f'height="{new_height}em"', svg_code) + copy_code = f"{formula}" + return f"{copy_code}{svg_code}" + + +def abspath(path: str | Path) -> Path: + """Returns absolute path of a str or Path path, but does not resolve symlinks.""" + if Path(path).is_symlink(): + return Path.cwd() / path + else: + return Path(path).resolve() + + +def get_markdown_parser() -> MarkdownIt: + md = ( + MarkdownIt( + "js-default", + { + "linkify": True, + "typographer": True, + "html": True, + "breaks": True, + }, + ) + .use(dollarmath_plugin, renderer=tex2svg, allow_digits=False) + .use(footnote_plugin) + .enable("table") + ) + + # Add target="_blank" to all links. Taken from MarkdownIt docs: https://github.com/executablebooks/markdown-it-py/blob/master/docs/architecture.md + def render_blank_link(self, tokens, idx, options, env): + tokens[idx].attrSet("target", "_blank") + return self.renderToken(tokens, idx, options, env) + + md.add_render_rule("link_open", render_blank_link) + + return md diff --git a/gradio/version.txt b/gradio/version.txt new file mode 100644 index 0000000000000000000000000000000000000000..ee893b7e0e5d574fc9fab018734375258565f23b --- /dev/null +++ b/gradio/version.txt @@ -0,0 +1 @@ +3.23.0